Spa*_*ost 0 java arrays object
我想知道在两种情况下是否都创建了MyObject对象.如果没有,为什么两种情况都能正常工作?
MyObject[] abcd = new MyObject[8];
abcd[0] = MyObject();
String str = abcd[0].someMethod();
Run Code Online (Sandbox Code Playgroud)
和
MyObject[] abcd = new MyObject[8];
String str = abcd[0].someMethod();
Run Code Online (Sandbox Code Playgroud)
我知道在第一个例子中,MyObject数组是用8个元素创建的,并存储在该数组的引用变量abcd中.我有一个MyObject引用数组,但没有实际的MyObject对象.所以我创建了这些对象,第一个对象存储在数组0中.
在第二个例子..是同样的事情,只是更短的代码?
*已编辑:忘记添加[]我道歉.*
假设你的意思
MyObject[] abcd = new MyObject[8];
abcd[0] = new MyObject();
String str = abcd[0].someMethod();
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作.
第二个版本将抛出一个NullPointerException 除非 someMethod碰巧static.在这种情况下,Java不依赖于static为要调用的方法创建的实例.