△java中的制表符.' '制表符." "也可以.
△方法内不能再定义一个方法,互相平级.
△数组中boolean类型的变量默认为false;char默认为'u0000'(u是unicode 的一种标识,标识16进制)
△int [ ]a=new int[4]{1,2,3,4};非法
int [ ]a=new int[]{1,2,3,4};合法
int [ ]a=new int[]{1,2,3,4};可以在不同行,先声明,后赋值如:
int [ ]a;
a=new int[ ]{1,2,3,4};
int []b={1,2,3,4}只能在同一行,不能先声明后初始化.
静态初始化: 程序员在初始化数组时为数组每个元素赋值;
动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值
△Java中包含的是整个程序中需要保持唯一的元素,比方说.class,还有静态变量.方法和类一起存储于方法区中
△如果给出了构造函数,系统不再提供默认的构造函数
△Java中的对象中的方法是能够访问任何同一类的对象的私有变量的.
△声明一个对象的步骤:
1.将class文件加载进内存
2.声明一个引用
3.堆内存中创建对象,并进行默认初始化.
4.成员变量进行显示初始化
5.构造方法进栈.进行构造代码块初始化然后构造方法初始化随后构造方法弹栈
6.将对象的地址值赋值给引用变量
△静态变量和方法均存在于方法区中.
类加载顺序:方法只有调用才会加载.因此
public class Parent { //第零步,首先定义iz,iy两个变量,并初始化为0(因为是int类型,如果是对象则为null) private static int iz = getNext(2); //第一步,因为有方法调用,所以转到方法,即第二步 private static int iy=99; //第三步 //静态初始化块 static //第四步 { System.out.println("parent的静态初始化块"); System.out.println(iz); //这里因为第二步,iz=3 System.out.println(iy); //这里因为第三步,iy=4 } public static int getNext(int base) //第二步,方法调用 { System.out.println("parent的static int getNext(int base)被调用"); System.out.println(iy); //iy初始化为0 System.out.println(iz); //iz初始化也为0,这里就说明先走变量定义,对于int类型,初始化为0 return ++base; } public static void t() //这里没有执行,这就说明了,方法不调用,就不会被加载,所以如果第一步不调用getNext方法,第二步就不会执行,就会直接到第三步 { System.out.println("parent的static void t被调用"); System.out.println(iz); } }
1.方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
△默认的或者私有的类无法生成javadoc
△构造代码块每创建一次对象,就会执行一次.而且是优先于构造函数执行.静态代码块优先于主方法执行.