看这两个简单的程序:
程序1:
public class GenArray extends Applet {
byte[] myArray ={ (byte) 'M', (byte) 'o', (byte) 'd', (byte) 'e',
(byte) '1' };
}
程式2:
public class GenArray extends Applet {
byte[] myArray = new byte[5];
{
myArray[0] =(byte) 'M';
myArray[1] =(byte) 'o';
myArray[2] =(byte) 'd';
myArray[3] =(byte) 'e';
myArray[4] =(byte) '1';
}
}
我想知道MyArray
在Program-1 MyArray
的最后一行和Program-2 的最后一行之间是否有区别?(任何区别!)
在第二个程序中,{ ... }
are不是数组定界符,它们是块定界符;在这种情况下,它们用于提供所谓的初始化块,该初始化块在实例化类的新实例时执行。
创建初始化数组的“正确”方法是:
new byte[] { 1, 2, 3 };
在初始化引用,使用现有引用或将数组传递给方法时,都可以始终使用它:
byte[] myArray = new byte[] { 1, 2, 3 }; // OK
myArray = new byte[] { 4, 5, 6 }; // OK
anObject.someMethod(new byte[] { 7, 8, 9}); // OK
但是,第一种变体非常普遍,因此Java允许您 在特定情况下new byte[]
省略该部分: __
byte[] myArray = { 1, 2, 3 }; // OK
myArray = { 4, 5, 6 }; // Does not compile
anObject.someMethod({ 7, 8, 9}); // Does not compile
问题内容: 我正在网上关注Java教程,尝试学习该语言,并且它在使用数组的两种语义之间反弹。 和: 该教程从未真正提到过为什么它会在两者之间来回切换,所以我对该主题进行了一些搜索。我目前的理解是,操作员正在创建“ longs数组”类型的对象。我 不 明白的是为什么我要那个,那有什么后果? 是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用? 有什么我 不能 用普通数
问题内容: 以下两个声明之间有什么区别? 和 是在堆栈上还是在堆上声明? 问题答案: 一个明显的区别是,一个全为零,另一个包含[1..5]。 但这是唯一的区别。两者都是5元素整数数组,都以相同的方式分配。用大括号声明不只是语法上的方便。 请注意,只有在声明数组时才能使用此形式: 但不是 要么 对象(数组是对象)在堆上分配。
问题内容: 因此,对于Toast类,显然可以这样编写: 为什么完全可以实例化toastMessage并将其用作没有new关键字的对象? 如何通过方法实例化toastMessage? 问题答案: 这里没有什么特别的。您只是在调用创建实例的静态方法(或者可以重用现有实例- 这是实现细节)。例如,这是您会在各处看到的一种模式。有时可以改为调用构造函数,有时 只能 通过静态方法创建实例。 除非幕后功夫,否
问题内容: 以下代码是做什么的: 构造函数在哪里,我想用新函数扩展Widget的“类” 。 什么是 关键词在那里做,如果它被省略了,会发生什么? 问题答案: WeatherWidget.prototype = new Widget; 该关键字调用构造函数,返回值分配给属性。(如果省略,除非添加了参数列表,否则将不会调用。但是,以这种方式调用可能是不可能的。如果它不是严格的模式代码并且实现是,则肯定
问题内容: 我对在swift中使用 static 关键字有些困惑。众所周知,swift引入了 let 关键字来声明不可变对象。就像声明表视图单元格的ID一样,该ID在其生命周期中很可能不会发生变化。现在在一些类似struct的声明中使用 static 关键字是什么: 而 让 关键字做同样的事情。在目标C中,我们使用static声明了一些常量,例如 除了让我更好奇的是,还使用了 static 关键字
我满足了一些深度复制原始对象文字的需求,除了一些键。我知道扩展运算符不会深度复制整个嵌套对象,但这不是这个问题的要点,所以让我们通过这个问题。 所以,回到原来的问题,我看不出使用delete关键字和将undefined分配给我要删除的目标属性之间有什么区别。 似乎方式没有那么冗长,但这样完全可以吗?