当我在Processing中创建整数变量时,我应该使用int
还是Integer
?他们似乎都以同样的方式工作。它是可选的,你会使用哪一个?
// The same thing?
int a = 5;
Integer b = 4;
// I prefer Integer because it looks like String:
Integer c = 95;
String d = "Hello!";
// Then again, int looks like char:
int e = 3;
char f = 'a';
我认为它可能只是一个人喜欢的,虽然int
被更多地使用了?
答案 0 :(得分:6)
它们有不同的用途。 int
是基本类型,而Integer
是对象。
原始int
的默认值为 0 ,而Integer
默认为 null 。基元使用更少的内存,只占用一个内存位置,占用32位或64位。对象需要更多开销。
除非您需要 null 整数或其他一些要求,否则请坚持使用int
。
供参考: https://processing.org/reference/int.html https://processing.org/tutorials/objects/
答案 1 :(得分:1)
int
类型是原始数据类型。这意味着您可以在任何可以使用原始文字的地方使用它,您可以将其视为输入数字,如1,2,3,99,-15等。< / p>
但是,您不能在必须使用Object的地方使用int。例如,此代码将无法编译:
void setup(){
ArrayList<int> list = new ArrayList<int>();
}
此代码不会编译,因为泛型参数需要一个类,而int是一个原语,而不是一个类。那么我们如何得到一个整数的ArrayList?
这就是原始包装器对象发挥作用的地方。它们是包装基元的对象,例如int。这样你就可以纠正上面的代码:
void setup(){
ArrayList<Integer> list = new ArrayList<Integer>();
}
其他原始包装类包括Float,Boolean, Character 等
然而,由于自动装箱和自动装箱,它变得更加复杂。基本上,Java(以及因此处理)将在原始值和它们的原始包装类之间自动转换。这就是你可以做这样的事情的原因:
void setup(){
int primitive = 7;
Integer wrapper = 7;
println(primitive == wrapper);
}
因此,出于您的目的,使用哪一个并不重要,因为Java(以及因此处理)会自动为您转换它。
但是,使用Integer而不是int可能会创建您不需要的对象,更重要的是,它可能会阻止您使用Processing.js模式。
推荐阅读:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
http://en.wikipedia.org/wiki/Primitive_wrapper_class
http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html