2015-03-04 2 views
2

Когда я создаю целочисленную переменную в обработке, следует ли использовать int или Integer? Оба они работают одинаково. Возможно ли, какой из них вы бы использовали?Целое или int в обработке?

// 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 используется больше?

ответ

6

У них разные виды использования. int - это примитивный тип, а Integer - объект.

Примитивный int имеет значение по умолчанию в то время как Integer будет по умолчанию нуля. Примитивы используют гораздо меньше памяти, только одно место памяти, занимающее 32 или 64 бита. Объекту требуется больше накладных расходов.

Придерживайтесь использования int, если у вас нет необходимости в null целое или какое-либо другое требование.

Для справки: https://processing.org/reference/int.html https://processing.org/tutorials/objects/

1

Тип int является типом данных примитивные. Это означает, что вы можете использовать его в любом месте, где вы можете использовать примитивный литерал , который вы можете представить как напечатанное число, например 1, 2, 3, 99, -15 и т. Д.

Однако, вы не можете использовать int в местах, где вы должны использовать объект. Например, этот код не будет компилироваться:

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

Этот код не будет компилироваться, так как общие аргументы требуют класса, и INT является примитивным, а не класс. Итак, как мы получаем ArrayList из ints?

Здесь примитивная обертка Объекты вступить в игру. Это объекты, которые обертывают примитив, например, int. Таким образом, вы можете исправить приведенный выше код:

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

Другие классы примитивно оболочки включают Float, логическое, Характер и т.д.

Тем не менее, становится все более сложным благодаря авто-бокс и auto-unboxing. В принципе, 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

+0

Спасибо за помощь. У меня есть другой выбор, потому что я просто думаю, что он будет менее запутанным для новичков, но это, безусловно, тоже полезно читать! :) – towerofnix

Смежные вопросы