N.1 类和对象的概念
1)对象是具体的一个实体,对象有两个特征:属性(多个变量)和行为(多个方法)。 2)类是创建对象的模板(类事先定义了成员变量和成语方法,让创建对象时,照着这个模板去实行)。 3)对象的属性中包含各种变量(每个变量代表不同信息)并通行为来更改自己的信息。 4)通过一个类可以创建多个对象。 |
N.1.1 class加载过程
1)先加载父类静态变量(包括“静态代码块”static{ },加载会执行。但静态方法不会执行,static void name(){} 只能被mian方法调用)后执行子类。 2)非静态变量和方法,随着对象的存在而存在随着的对象的消亡而消亡。 (1)比如在main方法外面创建对象,不用static修饰,这个对象是不会被加载的,也就是没有创建成功。 |
N.1.2 jvm运行过程
1)执行main方法,其它的方法使用就看main的方法体有没有进行调用。 不可以在main方法的外面调用方法,只能在main的方法体里面进行调用。 2)在main方法内外创建同一个对象是允许的,可以把它们认为是基本类型,只是作用域不同。 3)全局作用域可以在如何地方被修改,如果存在相同名的全局变量和域局部变量,就使用的是最近的变量,它们两个互不相干。 |
N.1.3 类和对象使用
1)在类可以定义成员变量和成语方法,静态方法只能访问静态变量(访问也可以省略 ‘类名点’的调用) 2)对象可以使用成员的所有方法和变量(包括静态的)(但一般最好不要用类使用的静态变量和静态方法) . 非静态方法能访问非静态变量和静态变量(建议少用)(访问也可以省略 ‘对象点’的调用) 3)加载是静态方法不会执行,但是静态代码块会执行 4)静态变量必须是全局的静待变量,不能是局部静待变量 |
public class T { int i = 0;//属性 T a = new T();//属性 void m() { System.out.println(); } public static void main(String[] args) { //主要用new会创建对象,就会先加载该对象的属性。上面有两个属性,会进行加载,但注意:一Enew,就会在一次加载所有属性。所以在上面的一个属性中,由于加载的过程中,又new了,所以又要加载,反反复复,导致stackoverflowError内存出 T t1 = new T();//创建对象完后,加载过程出错。 t1.m();//上面语句出错,所以这里不会执行了。 } } |
public class T { int i=1;//属性 static T q=new T();//属性 void q2(){ System. out. println("测试"); } public static void main(String [] args){ //首先执行main方法,由于下面创健了对象,所以会加载对象的属性,但由于上面的一个属性被static修饰,所以只能是加载一次,加载类的时候加载。其实也不属于对象的属性,是属于类的。但如果不用static修饰,就会成为对象的属性。而属性加载的过程中,又一次new.导致有加载,所以死循环,内存溢出。 T q1=new T(); q1.q2(); } } |
public class A { int i=0; //属性 static A a=new A(); //属性 void t(){ System. out. println("a"); } public static void main(String[] args) { // 比如在这里上面语句 static Aa=new A();相当于类的属性类加载的是时候会加载,加载的过程,这个属性有new的操作过程所以又会加载这个对象的其它的非静态属性。但注意,类的属性和方法都是静态的,有类访问,而对象的属性和方法都是非静态的,有对象访问,但有一点主意:对象可以访问类的数据,而类却不可以分为对象的数据 a.t(); System. out. println( a. i); } } |