Tag: 对象

用于投射的Java规则

何时可以将某个对象转换为另一个对象? 铸造对象是否必须是另一个对象的子类型? 我正试图找出规则…… 编辑 :我意识到我根本没有解释我的问题:基本上我正在将一个对象转换为接口类型。 但是,在运行时,我得到一个java.lang.ClassCastException 。 我的对象需要发生什么才能将其转换为此接口? 是否必须实施它? 谢谢

System.out.println(对象)的输出

我想知道当我执行以下操作时输出到底是什么。 class Data { int a = 5; } class Main { public static void main(String[] args) { data dObj = new data(); System.out.println(dObj); } } 我知道它提供了与对象相关的东西,因为在我的例子中输出是数据@ 1ae73783 。 我猜1ae73783是hex数。 我也做了一些工作并打印出来 System.out.println(dObj.hashCode()); 我的号码是415360643 。 我有一个整数值。 我不知道hashCode()返回什么,仍然出于好奇,当我将1ae73783转换为十进制时,我得到了415360643 ! 这就是为什么我很好奇这个数字到底是什么。 这是Java的沙箱或其他东西的一些内存位置吗?

如何以正确的方式打印对象内容?

我有一个ArrayList ,其中包含User类中的一些对象。 当我打印这些对象时,我得到了: [User @ 18fd984,User @ 18fd984] 如何以正确的方式打印这些对象?

错误:通用数组创建

我不明白通用arrays创建的错误。 首先,我尝试了以下内容: public PCB[] getAll() { PCB[] res = new PCB[list.size()]; for (int i = 0; i < res.length; i++) { res[i] = list.get(i); } list.clear(); return res; } 然后我尝试这样做: PCB[] res = new PCB[100]; 我必须错过一些似乎正确的事情。 我试着把它抬起来,我真的做到了。 没有任何东西在点击。 我的问题是:我该怎么做才能解决这个问题? 错误是: .\Queue.java:26: generic array creation PCB[] res = new PCB[200]; ^ Note: U:\Senior Year\CS451- file uses […]

‘new’关键字在Java中实际上做了什么,我应该避免创建新对象吗?

我刚刚注册了,但是自从我开始学习计算机编程以来,我一直在很好地利用这个网站,我一直在自学并考虑我的一点兴趣。 我确实在寻找类似的问题,但实际上我找不到我想要的答案。 现在,意识到,在Java(这是我建议开始使用的语言)中,根据需要声明和实例化变量被认为是很好的编程习惯,请考虑以下几行: class MyClass { void myMethod() { AnotherClass myObject = new AnotherClass(); myObject.doStuff(); } } 现在,假设我在运行程序时调用了myMethod()10次,那有什么用呢? 每次创建一个新对象吗? 是否每次都重新分配myObject变量? 编译器是否会跳过代码,因为它看到对象已经创建并且变量myObject已经分配给了这样的对象? 简而言之:只有当我打算只调用一次该方法时,我才能编写这样的代码吗? 我知道……因为问我这么愚蠢的问题而感到羞耻,但请给我一个机会! 提前致谢! —————————编辑———————- ——- 所以现在我应该在得到新答案后编辑这篇文章吗? 顺便说一下…天哪,很快,非常感谢! 哇我很困惑,我想这是因为我一直在教自己……不管怎么说,每次为myObject变量创建一个new AnotherClass对象都没用? 我的意思是,如果我想在整个程序中使用myObject变量,那么我不应该声明它一劳永逸吗? 也许在另一种方法中,我只会调用一次? 因为据我所知,每次调用myMethod()都会创建一个新对象,从而覆盖myObject自己的属性,即变量,或者我只是在胡说八道? —————————编辑———————- ——- 我从一些我现在不记得的网站上读到这段代码后出现了疑问: public class DataBase { private static String buf, retString = “\n”; private static File file = new File(“test.txt”); public […]

将一个Object数组转换为我想要的类的数组

仅供审阅,有人可以快速解释阻止其工作的原因(编译时): private HashSet data; … public DataObject[] getDataObjects( ) { return (DataObject[]) data.toArray(); } ……这是什么使得它的工作方式: public DataObject[] getDataObjects( ) { return (DataObject[]) data.toArray( new DataObject[ Data.size() ] ); } 我不清楚使用铸造(或其他任何东西)的机制是如此。

为什么在打印对象时调用toString()方法?

我似乎无法理解为什么当我在quarter对象上使用println方法时,它返回toString方法的值。 我从来没有调用过toString方法为什么我得到返回值? public class Main { public static void main(String[] args) { Quarter q = new Quarter(); Nickel n = new Nickel(); System.out.println(q); System.out.println(n); } } public abstract class Money { private int value; public Money(int v) { value=v; } public abstract int getValue(); protected int myValue() { return value; } public abstract String toString(); […]

如何确保hashCode()与equals()一致?

当重写java.lang.Object的equals()函数时,javadocs建议, 通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码。 hashCode()方法必须为每个对象返回一个唯一的整数 (这在基于内存位置比较对象时很容易,只需返回对象的唯一整数地址) 应该如何覆盖hashCode()方法,以便它仅基于该对象的特性为每个对象返回一个唯一的整数 ? public class People{ public String name; public int age; public int hashCode(){ // How to get a unique integer based on name and age? } } /*******************************/ public class App{ public static void main( String args[] ){ People mike = new People(); People melissa = new People(); mike.name = […]