类与对象

(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("我吃仙草,吃得多");
    }
}

你可能感兴趣的:(类与对象)