java--对象的引用

一.引用

引用主要目的是绑定对象变量(类似指针)。如果把一个对象比作一只风筝,那放风筝是就必须要牵引它的绳子。

当我们对对象操作时,不需要用对象(new Person())了,只需要对我们给它的牵引绳(tom)操作即可,如tom.run(); =的作用是绑定

二.null

配合引用,没有任何对象

java 复制代码
public static void main(String[] args) {
        Person p1 = new Person();
        p1.setAge(21);
        p1.setName("吕布");
        p1 = null; //解除绑定
        System.out.println(p1.getAge());
        System.out.println(p1.getName());
    }

这里一旦p1=null;就代表p1解除绑定,出现空指针异常

那么可以这样

java 复制代码
public static void main(String[] args) {
        Person p1 = new Person();
        p1.setAge(21);
        p1.setName("吕布");
        p1 = null;
        p1 = new Person();
        p1.setAge(18);
        p1.setName("貂蝉");
        System.out.println(p1.getAge());
        System.out.println(p1.getName());
    }

现在我们可以想一想在内存中有几个对象?是的有两个对象。我们先将吕布和p1绑定,在解除绑定后吕布依然存在。当然以后对p1的操作是对貂蝉的操作。但当我们在无意义创造很多对象却只帮定一个对象时,其他未绑定的对象就会一直占用空间。但是不用担心,java会采用JVM自动将对象回收,也就是JVM自动回收机制。

三.指向同一个对象

java 复制代码
public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        p1=p2;
        boolean s =(p1 == p2);//两个引用是否指向同一个对象
        System.out.println(s);
    }

我们先创建了p1和p2两个对象,这里p1=p2; 的意思是将p2绑定的对象传给p1,现在p1和p2都绑定了最开始创建的p2绑定的对象。 s=true

java 复制代码
public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        p1=p2;
        //boolean s =(p1 == p2);//两个引用是否指向同一个对象
        p2.setName("a");
        p1.setName("b");
        System.out.println(p2.getName());
    }

那么我们现在操作p1或者p2都是对同一个对象操作,打印结果为b

那么如果p2=null;

java 复制代码
public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        p1=p2;
        //boolean s =(p1 == p2);//两个引用是否指向同一个对象
        p2.setName("a");
        p1.setName("b");
        p2=null;
        System.out.println(p1.getName());
    }

我们可以知道p2与对象解除绑定了,但先前对对象的操作不变,结果依然是b

四.代码分离

如上代码,我们可以将main类和person类分离。这里我重新举例Dog类,其中变量有leg fuse price,还有set、get和两种构造器

注意Dog类和TestDog测试类不在同一个包里,因此需要import com.java.Dog;来引入这个包。

如上无需手动写,在我们创建对象时会有提示

java 复制代码
package com.java.test;

import com.java.Dog;

public class TestDog {
public static void main(String[] args) {
    Dog dog = new Dog(4,"yellow",520.0);
        System.out.println(dog.getLeg());
        System.out.println(dog.getPrice());
        System.out.println(dog.getFuse());
    }
}
相关推荐
badhope29 分钟前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园2 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
C++ 老炮儿的技术栈2 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl2 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
大阿明2 小时前
Spring Boot(快速上手)
java·spring boot·后端
Liu628882 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
bearpping2 小时前
Java进阶,时间与日期,包装类,正则表达式
java
IT猿手2 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
邵奈一2 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
AI科技星2 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘