构造、访问对象:
一:使用构造方法构造对象
构造方法有三个特性:
①构造方法必须具备和所在类相同的名字
②构造方法没有返回值类型,甚至连void也没有
③构造方法是在创建一个对象使用new操作符时调用的
构造方法的作用是初始化对象,它可以重载,更易于用不同的初始数据值来构造对象。
为了能够从一个类中构造对象,使用new操作符调用这个类的构造方法。
格式如下:
new ClassName(arguments)
例如:
new Circle()使用Circle类中定义的第一个构造方法创建一个Circle对象;
new Circle(25)调用Circle类中定义的第二个构造方法创建一个Circle对象。
二:通过引用变量访问对象
① 引用变量和引用类型
对象是通过对象引用变量来访问的。类是一种引用类型,格式如下:
Circle myCircle;
下面的语句创建一个对象,并且将他的引用赋给变量myCircle:
myCircle = new Circle();
二者合一,就是包括声明对象引用变量、创建一个对象和将他的引用赋给变量:
Circle myCircle = new Circle();
如上:变量myCircle中放的是对Circle对象的引用。
以此类推,数组也是new创建的,一个数组变量实际上是一个包含数组引用的变量~
② 访问对象的数据和方法
对象通过对象成员访问操作符(点操作符)科引用对象的数据域和方法。
因为依赖于某个具体的实例,数据域radius称作实例变量;
因为只能在具体的实例上被调用,方法getArea()称为实例方法(”非静态”);
理解:为何不能用Circle.getArea()这种格式去调用方法?
答:因为实例方法不是静态方法,必须使用objectRefVar.methodName(参数)的方式从对象调用
例如:
myCircle.getArea()
③ 匿名创建对象
有时候,一个对象创建后不需要引用,可以创建一个对象而并不将它明确地赋给一个变量
如:
System.out.println("Area is"+new Circle(5).getArea());
创建一个Circle对象,调用其getArea()方法返回其面积。
这种方法创建的对象成为匿名对象(anonymous object)
④ 引用数据域和null值
数据域也可能是引用型的,如:
String name;
String是一个预定义的Java类。
如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的Java值null。
null--引用类型直接量;
true,false--boolean类型直接量。
引用类型数据域默认值:null;
数值类型数据域默认值:0;
boolean类型数据域默认值:false;
char类型数据域默认值:'\u0000';
而局部变量(在方法中定义的)则不会赋初值~
⑤ 基本类型变量和引用类型变量的区别
每个变量都代表了一个存储值的内存位置。
声明此变量就是告诉编译器这个变量可以存放什么类型的值。
对基本类型变量来说,对应内存所存储的值是基本类型值;
对引用类型变量来说,对应内存所存储的值是一个引用(指明这个对象的内容存储在内存中的哪里),是对象的存储地址;
将一个变量赋给另一个变量时,另一个变量就被赋予同样的值。
对于引用类型变量而言,赋值后,二变量就是指向同一个对象。
ps:如果你觉得不再需要某个对象时,可以显式地给该对象赋null值。如果该对象没有被任何引用变量所引用,Java虚拟机将自动回收它所占的空间。