java基础(1)


java基础

java语言的优点

“平台无关性”:java语言可以一次编译到处运行,意思就是编译后的代码可以再多种平台上运行,由于java是解释型语言,编译器会把java代码编程为中间代码,然后在java虚拟机中运行,因此java可以跨平台
行,具有良好的可移植性
我的理解是:编辑器将java代码编译成适合于不同平台的中间代码

对public static void main(String[] args)理解?

public: 对任何类和对象都可以访问这个方法。
static : 表明main方法是一个静态方法,方法中的代码是存储在静态存储区的
只要类被加载后,说明代码就加载到了静态区域,就可以直接通过类名.main()直接访问, JVM启动后就可以按照上述方法的签名来找到方法的入口地址,找到就执行,找不到就报错。

java程序是怎样运行的?

java初始化:
(1)静态变量 先于 非静态变量 ,静态对象只初始化一次,非晶态的会初始化很多次
父类 先于 子类
变量 先于 代码块
==> 父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态代码块,父类构造函数、子类非晶态变量、子类非晶态代码块、子类构造函数

java创建对象

  1. new 创建
    new 操作符的本意就是创建一个对象,首先看new后面的数值类型,知道了类型,然后才知道要分配多大的内存空间,分配完内存之后,再调用构造函数,填充这个对象的各个域(初始化),一个对象创建完毕后,把它的引用发布到外部去,在外部就可以通过引用来操纵这个对象。
    new 创建的对象本体都在堆区,堆区主要放对象
    栈区放引用
  2. clone
    分配内存都一样,但是内存的大小是根据调用clone方法的对象的大小相同,然后再使用原对象对应的各个域,填充新对象,引用发布出去
    浅clone: 如果对象中有些域也是引用,那么clone的只是引用
    深clone: 因为有个super.clone(), 会引发引用指向的值都clone需要实现Cloneable接口,实现clone方法,并且在这个方法内部,把该对象引用的其他对象也clone因为有个super.clone(), 会引发引用指向的值都clone

什么是反射机制

反射机制就是在程序运行时能够获取自身的信息,
反射机制的作用
(1) 反编译: .class –> .java
(2) 通过反射机制来访问java对象的属性、方法、构造方法等。
反射机制的类:
java.lang.Class
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Modifier
一般步骤:先获取到类
Class c = Class.forName(“xxx”)
然后在获取这个类中的信息

java泛型

独特之处:java泛型只在程序源码中存在,在编译后的字节码文件中,都已经被替换为原来的原始类型(就是指被擦除了类型的泛型),并在相应的位置插入了强行转型代码。
用反射机制理解:在程序中定义了一个ArrayList泛型类型实例化为Integer的对象,如果直接调用add方法,那么只能存储整形的数据。不过当我们利用反射调用add方法的时候,却可以存储字符串。
Array不支持泛型,一般用List来代替Array

多态实现问题?

编译时多态
运行时多态

动态绑定&&静态绑定

用private, static,final修饰变量或者方法时,采用的是静态绑定
重载的方法是使用静态绑定完成,而重写的方法使用的是动态绑定
有利于java的效率

抽象类与接口类

(1) 抽象类和接口都不能实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
(2) 抽象类可以有普通成员变量,构造方法,静态方法,非抽象类的普通方法,接口中没有,而且只有抽象方法
(3) 都可以含有静态变量,接口类的变量只能是public static fianl
抽象类的静态成员变量访问类型可以是非public
(4)可以实现多个接口,但只能继承一个抽象类。
(5) 抽象类对类抽象,接口是对行为抽象

final 理解

(1) final 为用于标识变量的关键字,final标识的存储在常量池里
(2) final不能被子类的方法覆盖,但可以被继承。
(3) final 成员变量表示常量,赋值后不再改变
(4) final类不能被继承,防止任何继承类修改它的意义和实现

static理解

static表示全局,修饰成员变量和成员方法,

volatile关键字

并发编程

instanceof作用

字符串创建与存储

文件

异常处理

数据库基础

maven相关操作

网络相关知识

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2017 Candice' Blog All Rights Reserved.

访客数 : | 访问量 :