当前位置: 首页 > 知识库问答 >
问题:

对象引用如何在包装类、对象和自定义对象中工作?

孔冥夜
2023-03-14

考虑下面的代码:

class Student{
    int id;
    String name;
}

public class Main
{
    public static void main(String[] args) {
        
        Student s1 = new Student();
        s1.id = 10;
        s1.name = "student 1";
        
        Student s2 = new Student();
        s2.id = 20;
        s2.name = "student 2";
        
        Student s3 = s1;
        s3.name = "student 3";
        
        System.out.println(s1.id +" "+s1.name);
        System.out.println(s3.id +" "+s3.name);
    }
}

对于上面的代码,输出是:

10 student 3
10 student 3

public class Main
{
    public static void main(String[] args) {
        
        Integer a = 10;
        Integer b = 20;
        Integer c = a;
        
        c = 30;
        
        System.out.println(a);
        System.out.println(c);
    }
}


10
30

共有1个答案

颜文昌
2023-03-14

s1指内存的一部分,让我们调用该部分a。将s1分配给s3后,s3也将指a;这意味着s1和s3都有指向同一个内存块的指针。改变s1或s3实际上是改变该存储块中的数据;并且会影响到两者。

 类似资料:
  • 包装对象 定义 包装对象的构造函数 包装对象实例的方法 原始类型的自动转换 自定义方法 Boolean对象 概述 Boolean实例对象的布尔值 Boolean函数的类型转换作用 包装对象 定义 在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。 所谓“包装对象”,就是分

  • 定义 对象是 JavaScript 语言最主要的数据类型,三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”(wrapper)。 所谓“包装对象”,指的是与数值、字符串、布尔值分别相对应的Number、String、Boolean三个原生对象。这三个原生对象可以把原始类型的值变成(包装成)对象。 var v1 = new Number(123)

  • 对象包装器是实现了 freemarker.template.ObjectWrapper 接口的类。它的目标是实现Java对象(应用程序中特定类等,比如 String, Map,List 实例)和FTL类型系统之间的映射。换句话说, 它指定了模板如何在数据模型(包含从模板中调用的Java方法的返回值)中发现Java对象。 对象包装器作为插件放入 Configuration 中,可以使用 object

  • 如果它走路像鸭子,说话像鸭子,样子像鸭子,叫声也像鸭子,那它就是一只鸭子。 对于 Nutz Ioc 来说,它面对的配置文件就是层层嵌套的 "名值对集合",或者说是 Map 集合。 事实上,它是先把整个配置文件解析成 Map 再做判断的。 如果一个 Map 仅包括如下的键,则被认为是一个注入对象: type 对象类型 singleton 是否单例 scope 生命周期范围 events 监听事件 a

  • 我正在努力找出如何使用Java流从对象值等于x的自定义对象列表中收集自定义对象。 这没有编译,但我不认为我离得很远--有人能指出我在哪里出错吗?

  • 问题内容: 即使我有一个自定义类的两个数据对象,它们与所有变量都相等,assertEquals()方法还是失败了。我在这里想念什么? 问题答案: 在equals()函数的帮助下,进行比较以检查其是否相等。您需要在自定义类中重写此方法。 还请确保您也重写hashCode()方法。