(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
在这里插入图片描述
在栈内存中实际上保存的是堆内存空间的访问地址

访问对象的属性或方法

访问属性:对象名称.属性名
访问方法:对象名称.方法名()
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)

在这里插入图片描述
只要使用了未实例化的对象,则肯定会出现此异常

四、创建多个对象

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值