(1) new关键字:表示向内存申请空间,也表示实例化一个对象,创建一个对象。
(2)一个对象在内存中的大小,由该对象的所有属性所占的内存大小的总和。引用类型变量在32位系统上占4个字节,在64位系统上占8个字节。加上而外的对象隐性数据所占的大小。
(3)相同的类型才可以赋值。
(4)不同的引用,指向同一个对象,任何一个引用改变对象的值,其它引用都会反映出来。
(5)編程时要注意的问题,在确定不使用对象时,要尽早释放对象:引用=nll
(6)当一个堆中的对象没有被任何引用交量所指向时,该对象会被JVM的GC程序认为是垃圾对象,从而被回收。
/**
面向过程:以步骤为单位,一步一步完成某一个具体事情
面向对象:以对象为单位,通过调度组合不同的对象来完成某一个事情
(管理思维:先 能作甚,再 做什么)
*/
import java.util.Scanner;
public class Test1{
public static void main(String[]args){
//int i =0;
Horse h = null;//声明一个类的变量(除了8种基本数据类型外,都是引用数据类型,包括数组)
//创建一个Horse类型的对象,实例对象
h = new Horse();//实例化对象
// 有了对象,我们就可以调用对象的属性和方法
h.name = "赤兔马";//调用对象的属性
h.age = 230;
h.run();//调用方法,方法被执行
h.eat();
//匿名对象:只能用一次,用完后,该对象就会被释放
new Horse().eat();
h = null;//把对象释放
//h.eat();//当对象不存在时,调用该对象的属性和方法就会报错(空指针)
//...............
Horse h1 = null;
Horse h2 = null;
h1 = new Horse();
//h2 = new Horse();
h1.name = "小白";
h1.age = 4;
//h2.name ="小黑";
//h2.age = 5;
h2 = h1;//对象之间的幅值,相同类型才可以幅值
h2.name="小黑";
System.out.println(h1.name);
Horse h3 = null;
Horse h4 = null;
h3 = new Horse();
h4 = new Horse();
h3.name = "小白";
h3.age = 4;
h4.name="小黑";
h4=h3;
h4.name="黑黑";
System.out.println(h3.name);
}
}
//自定一个类(类型)
class Horse{
//在类中定义属性(特征)
String name;//字符串是引用数据类型变量
int age;
public void run(){
System.out.println("我是"+name+",我"+age+"岁了,我还能日行千里");
}
public void eat(){
System.out.println("我吃仙草,吃得多");
}
}