·类可被认为是一种自定义的数据类型,当然可以使用类来定义变量了,使用类定义的变量都是“引用变量”。所有类,都是引用数据类型。
·访问修饰符3个:
public
private
protected
·定义类
类中最常见的成员:构造器、方法和Field(也叫“属性”,“成员变量”),三种成员都可以定义0个或多个。类中各个成员之间的顺序没有任何影响,成员之间可以互相调用,但是static修饰的成员不能访问没有static修饰的成员。
类定义格式:
[修饰符] class 类名
{
//定义一个类最常见的3个成员如下:
*个构造器
*Field
*个方法
}
l 定义属性语法:
PS:(Java中的属性就是其他语言中所谓的变量)“属性”有时也叫“field”,“成员变量(类变量和实例变量)”或者说“域”“字段”反正都是filed单词的翻译。
[修饰符] 属性类型 属性名 [= 默认值]
·属性修饰符:
修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个只能使用其一,可以与static、final组合起来修饰属性。
·属性类型:
属性类型可以是Java的任何数据类型。
·属性名:
就是一个名字,命名规则是首单词字母小写后面如有单词紧接着首字母是大写。
·默认值:
可选的默认值
l 定义方法:
[修饰符] 方法返回值的类型方法名(形参列表)
{
由*条可以执行的语句构成。
}
·修饰符:
修饰符可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个只能使用其一,abstract和final只能出现其中之一,他们可以与static组合起来修饰方法。
·方法返回值的类型
return指令来返回值,返回值的类型必须与定义方法返回值的类型一样。此外如果方法没有返回值,方法类型使用void关键字。
·方法名:
命名习惯,也可以说规则跟属性一样
·形参列表
“参数类型形参名”组合而成,多个参数之间用“逗号(,)”隔开。一旦在定义方法时制定形参列表,则调用该方法时必须传入对应的参数值。
static是一个特殊的关键字,它可以用于修饰方法、属性等成员。static修饰的成员表明它是属于这个类共有的,而不是属于该类的单个实例。因此通常把static修饰的属性和方法称为“类属性”和“类方法”,有时候也称“静态属性”和静态方法,而不使用static修饰的普通方法、属性则属于该类的单个实例,而不属于该类。因为通常把不适用static修饰的属性和方法称为“实例属性”和“实例方法”,有时候也叫“非静态方法”和“非静态属性”。静态成员不能直接访问非静态成员。总结:类成员中有static的属于类本身,没有static的属于该类的对象。
l 定义构造器
如果没有构造器就无法创建对象。如果没有定义构造器系统默认提供一个构造器,如果自己定义了构造器,那么系统就不提供默认构造器了。
[修饰符] 构造器名(形参列表)
{
由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即可。
·一个对象可以有多个引用变量指向它。