欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(Java)类与对象

程序员文章站 2024-03-15 17:41:18
...

一、类与对象的关系

(Java)类与对象
(Java)类与对象

二、类的定义

类是由属性和方法组成的
属性中定义类需要的一个个具体信息,实际上一个属性就是一个变量,二方法是一些操作的行为

class 类名称{
	数据类型 属性;
	.....
	public 返回值的数据类型 方法名称(参数 1,参数 2...){
	程序语句;
	}
}

在类中的属性实际上也就是相当于一个个的变量,有时候也称为 Field(成员)

class Person{
    String name;
    int age;
    public void tell(){
        System.out.print("name: " + name + "age: " + age);
    }
}

此处的方法并没有加上 static 关键字,这是因为此时定义的方法将要由对象调用,而不像之前那样与主方法定义在一个类中且由主方法直接调用

三、对象的创建及使用

类名 对象名称 = null; // 声明对象
对象名称 = new 类名(); //实例化对象,只要有关键字 new 就表示开辟新的堆内存空间

或者

类名 对象名称 = new 类名();
public class Test{
    public static void main(String[] args) {
        Person per = new Person(); // 创建并实例化对象
    }
}

所有的对象名称都在栈内存中保存,而对象的具体内容则保存在对应的堆内存中,必须使用 new 关键字才能开辟堆内存空间,堆内存里保存的属性信息,此时由于per 对象刚刚被实例化完成,所以对象里面的属性内容都是默认值,字符串的默认值是 null,整数的默认值是0
(Java)类与对象
在栈内存中实际上保存的是堆内存空间的访问地址

访问对象的属性或方法

访问属性:对象名称.属性名
访问方法:对象名称.方法名()
public class Test{
    public static void main(String[] args) {
        Person per = new Person(); // 创建并实例化对象
        per.name = "Java";
        per.age = 30;
    }
}

注意

如果一个对象要被使用,则对象必须被实例化,否则程序会出现以下异常

Exception in thread "main" java.lang.NullPointerException
	at Test.main(Test.java:13)

(Java)类与对象
只要使用了未实例化的对象,则肯定会出现此异常

四、创建多个对象

类属于引用数据类型,而且从数组的使用上也可以发现,引用数据类型是指一段堆内存空间可以同时被多个栈内存所指向。

public class Test{
    public static void main(String[] args) {
        Person per1 = null;
        Person per2 = null;
        per1 = new Person(); // 只实例化 per1 一个对象
        per2 = per1; // 把 per1 的堆内存空间使用权给 per2
        per1.name = "Java";
        per1.age = 30;
        per2.age = 33;
        System.out.print("per1 对象中的内容:");
        per1.tell();
        System.out.print("per2 对象中的内容:");
        per2.tell();
    }
}

(Java)类与对象
两个对象的输出内容是一样的,实际上所谓的引用传递,就是将一个堆内存空间的使用权给多个栈内存空间,每个栈内存空间可以修改堆内存的内容
(Java)类与对象
引用传递的本质就是在于不同的栈内存空间将指向同一块堆内存(一个栈内存只能够保存一个堆内存空间的地址)

一个栈内存空间只能指向一个堆内存空间,如果想要在指向其他的堆内存空间,则必须先断开已有的指向才能分配新的指向

五、关于垃圾空间的释放

Java本身提供垃圾收集机制(简称 GC,Garbage Collection),会不定期的释放不用的内存空间,只要对象不使用了,就会等待 GC 释放空内存。

相关标签: (Java)类与对象