处理中的整数或整数?

Integer or int in 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 用得更多?

它们有不同的用途。 int 是原始类型,而 Integer 是对象。

原语 int 的默认值为 0,而 Integer 将默认为 null。基元使用的内存要少得多,只有一个内存位置,占用 32 或 64 位。一个对象需要更多的开销。

除非您需要 null 整数或其他一些要求,否则请坚持使用 int

供参考: https://processing.org/reference/int.html https://processing.org/tutorials/objects/

int 类型是 原始 数据类型。这意味着您可以在任何可以使用 原始文字 的地方使用它,您可以将其视为键入的数字,例如 1、2、3、99、-15、等等

但是,您不能在必须使用 Object 的地方使用 int。例如,这段代码将无法编译:

void setup(){
  ArrayList<int> list = new ArrayList<int>();
}

此代码无法编译,因为通用参数需要 class,而 int 是原始类型,而不是 class。那么我们如何获得整数的 ArrayList?

这就是 原始包装对象 发挥作用的地方。它们是 wrap 原始类型(例如 int)的对象。这样你就可以更正上面的代码:

void setup(){
  ArrayList<Integer> list = new ArrayList<Integer>();
}

其他原始包装器 classes 包括 Float、Boolean、Character

但是,由于 自动装箱 自动拆箱 ,它变得更加复杂。基本上,Java(因此处理)将自动在原始值和它们的原始包装器class之间转换。这就是为什么你可以做这样的事情:

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