·类可被认为是一种自定义的数据类型,当然可以使用类来定义变量了,使用类定义的变量都是“引用变量”。所有类,都是引用数据类型。

 

·访问修饰符3个:

         public

         private

         protected

 

·定义类

         类中最常见的成员:构造器、方法和Field(也叫“属性”,“成员变量”),三种成员都可以定义0个或多个。类中各个成员之间的顺序没有任何影响,成员之间可以互相调用,但是static修饰的成员不能访问没有static修饰的成员。

 

类定义格式:

[修饰符] class 类名

{

         //定义一个类最常见的3个成员如下:

         *个构造器

         *Field

         *个方法

 

}

 

定义属性语法:

PS:(Java中的属性就是其他语言中所谓的变量)“属性”有时也叫“field”,“成员变量(类变量和实例变量)”或者说“域”“字段”反正都是filed单词的翻译。

 

         [修饰符] 属性类型 属性名 [= 默认值]

 

·属性修饰符:

         修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个只能使用其一,可以与static、final组合起来修饰属性。

 

·属性类型:

         属性类型可以是Java的任何数据类型。

 

·属性名:

         就是一个名字,命名规则是首单词字母小写后面如有单词紧接着首字母是大写。

 

·默认值:

         可选的默认值

 

定义方法:

[修饰符] 方法返回值的类型方法名(形参列表)

{

         由*条可以执行的语句构成。

}

 

·修饰符:

         修饰符可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个只能使用其一,abstract和final只能出现其中之一,他们可以与static组合起来修饰方法。

 

·方法返回值的类型

return指令来返回值,返回值的类型必须与定义方法返回值的类型一样。此外如果方法没有返回值,方法类型使用void关键字。

 

·方法名:

         命名习惯,也可以说规则跟属性一样

 

·形参列表

“参数类型形参名”组合而成,多个参数之间用“逗号(,)”隔开。一旦在定义方法时制定形参列表,则调用该方法时必须传入对应的参数值。

 

static是一个特殊的关键字,它可以用于修饰方法、属性等成员。static修饰的成员表明它是属于这个类共有的,而不是属于该类的单个实例。因此通常把static修饰的属性和方法称为“类属性”和“类方法”,有时候也称“静态属性”和静态方法,而不使用static修饰的普通方法、属性则属于该类的单个实例,而不属于该类。因为通常把不适用static修饰的属性和方法称为“实例属性”和“实例方法”,有时候也叫“非静态方法”和“非静态属性”。静态成员不能直接访问非静态成员。总结:类成员中有static的属于类本身,没有static的属于该类的对象。

 

定义构造器

                   如果没有构造器就无法创建对象。如果没有定义构造器系统默认提供一个构造器,如果自己定义了构造器,那么系统就不提供默认构造器了。

        

[修饰符] 构造器名(形参列表)

{

         由0到多条语句构成。

}

 

·修饰符:可以省略,也可以是public、protected、private其中之一。

·构造器名:构造器名字必须跟类名相同。

·形参列表:和定义方法的形参列表完全相同。

·语句:如果没有语句,那么默认构造器就是这个样子的没有语句。

 

·Java使用new关键字来调用构造器。

语法:

该类类型 引用变量名 = new 构造器名();

 

分开写:

该类类型 引用变量名

引用变量名 = new 构造器名();

 

 

l  调用方法和属性:

类.方法

类.属性

 

对象.方法

对象.属性

 

·通过调用为属性赋值

         对象.属性 = 值

 

         带有static修饰的方法和属性,可以通过类和对象来调用。不带static的属性和方法,只能通过对象来调用。

 

 

l  对象引用和指针

·对象(也叫“实例”)当一个对象被创建后,这个对象就保存在堆内存中,Java程序不允许直接访问堆内存中的对象,但是只能通过该对象的引用(就是一个变量)来操作该对象,该对象的引用存在栈内存中为一个地址指向堆内存对象的具体位置。

示例:

Person  fq;
p = new Person();
//简写 Person  fq  = new Person();
 
//为field赋值
fq.name = Haha;

 

fq就是一个变量引用了Person对象,而这个对象是存在堆中的,fq是存在栈中的。name等等其他都是在堆中的。

 

·垃圾回收机制:当堆内存里的对象没有任何变量指向该对象,那么程序也不能访问该对象了,Java就把它当做垃圾删除了也说成垃圾回收。因此希望回收某个对象时,只需要把该对象所有引用变量赋值为null即可。

 

·一个对象可以有多个引用变量指向它。