一天一个Java基础——对象和类
1.在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象
2.可以在类中设置两种类型的元素:字段(也被称作数据成员)和方法(也被称作成员函数)
3.字段可以是任何类型的对象,可以通过其引用与其进行通信;也可以是基本类型中的一种。如果字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个实际的对象向关联(使用new来实现)
4.可以把两个类放在同一个文件中,但是文件中只能有一个类是公共的。此外,公共类必须与文件同名
1.1 构造方法构造对象
构造方法是一种特殊的方法,具有以下三种特殊性:
1)构造方法必须具备和所在类相同的名字
2)构造方法没有返回类型,甚至连void也没有
3)构造方法是在创建一个对象使用new操作符时调用的。构造方法的作用是初始化对象
构造方法也可以重载,也就是可以有多个同名的构造方法,但它们要有不同的签名
1.2 访问对象的数据和方法
若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值(在类中可以声明无初始值的变量,但在方法中不能声明无初始值的临时变量)
引用类型数据域默认值是null,数值类型默认值是0,boolean类型为false,char为‘\u0000’
但是Java没有给方法中的局部变量赋默认值
每个变量都代表一个存储值的内存位置,基本类型变量的内存中存储的是一个基本类型值,而引用类型变量存储的是一个引用,它指向对象在内存中的位置
当引用变量被赋值予另一个新引用后,原来的引用的对象就不再有用,因此就变成了垃圾(garbage),占用了内存空间,所以Java运行系统会检测垃圾并自动回收它所占的空间,这个过程称为垃圾回收(garbage collection)
1.3 静态变量、常量和方法
如果想让一个类的所有实例共享数据,就要使用静态变量(static variable),也称为类变量(class variable)。静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会收到影响。Java支持静态方法和静态变量,无须创建类的实例就可以调用静态方法(static method)
1 public class test2 { 2 public static void main(String[] args) { 3 /* 4 * 类中变量是否为静态的区别 5 */ 6 Test4 t1 = new Test4(); 7 System.out.println(t1.id); 8 t1.id = 4; 9 System.out.println(t1.id); 10 Test4 t2 = new Test4(); 11 System.out.println(t2.id); 12 } 13 } 14 class Test4{ 15 /* 若为static int id = 1; 16 * 则运行结果为 1 4 4 17 */ 18 int id = 1; 19 /* 20 * 运行结果为 1 4 1 21 */ 22 public void a1(){ 23 id++; 24 } 25 public void a2(){ 26 id++; 27 } 28 }