加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java中对象的名称含义是什么(Array,ArrayList)

发布时间:2020-12-15 04:20:05 所属栏目:Java 来源:网络整理
导读:参见英文答案 Java arrays printing out weird numbers and text ????????????????????????????????????10个 我逐渐从C切换到java编程.虽然这样做,但我在理解以下场景时感到困惑: 我有以下Java代码: ArrayListInteger myList = new ArrayListInteger(); fo
参见英文答案 > Java arrays printing out weird numbers and text ????????????????????????????????????10个
我逐渐从C切换到java编程.虽然这样做,但我在理解以下场景时感到困惑:
我有以下Java代码:

ArrayList<Integer> myList = new ArrayList<Integer>();

     for(int j = 0 ; j < 10 ;j++){

          myList.add(j);
    }

    System.out.println(myList);

  the o/p is:
            [0,1,2,3,4,5,6,7,8,9]

根据我的理解,我在这里有一个ArrayList类型的对象(myList).

现在我尝试使用Array对象执行相同的操作:相同的代码,但用数组替换Arraylist:

int [] Arr = new int[]{1,9,10};

    System.out.println(Arr);

我得到了垃圾值.为什么会这样? Array和ArrayList有什么区别?
与在C中一样,数组的名称是一种指针. (IT具有第一个元素的地址),所以在Java中,对象的名称意味着什么?
地址或参考?
有什么不同?
为什么在Array和ArrayList的情况下会得到不同的结果?

解决方法

在java中,变量的名称是对变量的引用(如果我们与c进行比较).当您在myList上调用println时,实际上调用了ArrayList的toString()方法,该方法继承自Object但被覆盖以提供有意义的打印.此方法继承自Object,因为ArrayList是一个类,所有类都扩展了Object,因此具有toString方法.

你没有本机数组这个特性是基元,所以你得到的是默认的对象表示(虚拟内存地址).

你可以尝试这样的事情:

public class TestPrint {
    private String name;
    private int age;

    public TestPrint(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() { return name;}

    public int getAge() { return age; }
}

然后尝试println(new TestPrint(“Test”,20)); – 这将打印类似于您使用阵列的内容.

现在,添加一个toString()方法:

@Override
public String toString() {
  return "TestPrint Name=" + name + " Age=" + age;
}

并调用println(new TestPrint(“Test”,20));再次,你将得到TestPrint Name = Test Age = 20作为输出.

只是为了进一步解释为什么会发生这种情况 – 方法println有一个接受Object类型的重载.此方法的实现调用toString来打印对象(当然这是非常示意性的解释).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读