处理中的整数或整数?

时间:2015-03-04 19:51:52

标签: processing

当我在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被更多地使用了?

2 个答案:

答案 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