实例化对象的语法 new构造方法(实参列表): 1.new关键字 计算对象内存大小;在堆中申请空间;把空间初始化为0x0 2.执行构造方法 对属性进行初始化 3.把对象的引用赋值给一个引用变量,如果需要: 对象的生命周期 1 2 3 4 1.代表对象刚申请好空间,内部被初始化为0x0 2.代表对象正在执行构造方法对属性初始化部分 3.代表对象的可使用生命周期阶段 4.代表对象已经被标记为垃圾,但可能还有被立即回收的时期

访问对象的属性或者调用对象的方法 1.如果在类的内部(在类的方法中访问类的属性和调用类的方法) this.属性 访问属性 如果没有出现命名遮挡,直接使用属性 this.name name 其他名字和属性名字一样 大名 小名 调用方法 this.方法名称(实参列表) this.toString ();

方法名称(实参列表); toString();

2.r如果在类的外部(在其他类的方法中访问该类的属性和调用该类的方法) 访问属性 对象的引用.属性名 Person p=new Person(); p.name ; new Person.name 调用方法 对象的引用.方法名称(实参列表) Person p =new Person(); p.toString(); new Person.toString(); 文件名:Course.java class Person{} public class Course{} javac编译 生成Person.java Course,java 1.一个源文件中只能有一个public 的类,该类的名称必须和文件名一样 2.一个类会生成对应一个class字节码文件

this关键字的使用 1.可以在构造方法中调用其他的构造方法,必须出现在第一行 2.代表该方法被调用时的当前对象的引用 Person p=new Person(); p.toString(); public String toString(){ this; //现在this 就是p所指向的对象的引用 }

定义包: 1.新建目录 目录名就是包名称(全小写,单词之间用下划线分隔) package hello_world; 定义目录 p1/p2 ; 定义一个类Helloworld 2.使用包 import 包名称.类名称 import p1/p2.HelloWorld;

四种访问限定符: 1.限定符 2.影响的是访问权限 两种情况 1.修饰顶级(Top-level) 2.修饰成员级(Member-level) 说法 定义语法 说明 public public 所有类都有访问权限 package-private 空白 只有一个包的类有访问权限 前两个代表可用于顶级的访问权限 protected protected 留着继承讲 private private 只有本类有访问权限

STATIC(静态)静态方法|静态属性 1.方法 普通方法(方法)|静态方法(类方法) 2.属性 普通属性(属性)|静态属性(类属性) 语法 限定符sataic 被static 修饰的属性/方法 就是静态属性/方法 理解: 普通方法/普通属性 都绑定着一个人隐含的对象(this) static的含义是和对象解绑 静态属性不在保存在对象(堆区)中,而是保存在类(方法区)中 静态方法调用时,没有隐含着的对象,所以也就无法使用this关键字 class Person{ String name="小比特"; String toString(){ return this,name; } static Person createPerson(){ return newPerson(); } }

Person.createPerson(); 访问静态属性/调用静态方法语法 内部: 属性名称; 类名称.属性名称; this.属性名称;//保证当前不是静态属性

方法名称(实参列表); 类名称.方法名称(实参列表); this.方法名称(实参列表);//保证当前方法不是静态方法

外部; 类名称.属性名称 对象的引用.属性名称

类名称.方法名称(实参列表); 对象的引用.方法名称(实参列表) 强调: 静态方法没有this.,,没有隐含着的对象的绑定 1.不能访问普通属性(相当于隐式使用this) 2.不能调用普通函数 表现出来的特性: 1.一个类的所有的对象,是可以共享静态属性的;

属性的初始化:(发生在对象实例化的时候)先执行 定义时初始化int a=10; 和构造代码块{a=10;}(按顺序),再执行构造方法Person () {a=10;} 静态属性的初始化“(类被加载的时候)发生在实例化前 1.定义时初始化 static int a=10; 2.静态构造代码块 static { a=20; }

类的信息一开始是以字节码(bytecode)*.class的形式保存在磁盘上 类的加载过程就是 类加载器(classloader)在对象的目录上找到指定类的字节码文件,并且进行解析,然后放到内存的方法区的过程。 类只有被使用的时候才会被加载(一般不会卸载) 1.用类去实例化对象 2.使用静态方法

setter设置和修改 getter取得 to string:没有定义,打印的是地址 system.out.println(); out所属类的方法/out 属性