java中对象的名称含义是什么(Array,ArrayList)
参见英文答案 >
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有什么区别? 解决方法
在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来打印对象(当然这是非常示意性的解释). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |