Java Glossary : int vs Integer

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : I words : int vs Integer.

int vs Integer
Newbies are often confused by the difference between int and Integer.

To properly understand the difference, you should read an introductory textbook on Java. I will make a small stab at answering here.

Everything I say here applies analogously to char and Character, short and Short, long and Long, float and Float, double and Double.

Definitions

An int is a primitive. It is not an Object. An int is a high performance, streamlined beast for calculating numbers in the range -2,147,483,648 [-231] aka Integer.MIN_VALUE to +2,147,483,647 [2 31-1] aka Integer.MAX_VALUE. An int is a bare bones 32-bit chunk of information. int variables are mutable. Unless you mark them final, you can change their value at any time.

An Integer, is a Object that contains a single int field. An Integer is much bulkier than an int. It is sort like a Fedex box to contain the int. Integers are immutable. If you want to affect the value of a Integer variable, the only way is to create a new Integer object and discard the old one.

Which is better?

That is like asking which is better a volley ball or a volleyball in a Fedex box. It depends what you want to do with it.
int vs Integer
ability unboxed
int
boxed
Integer
Calculate with it, + - * / % ^ etc. yes no
Pass it as a parameter yes yes
return it as a value yes yes
Use methods on it from java.lang.Integer no yes
Store it in a Vector or other Collection no yes
Use it as a HashMap key no yes
serialize it no yes
send it by itself over RMI no yes
send it as part of another Object over RMI yes yes

Converting

Fortunately it is easy to convert back and forth between int and Integer.

// to int i from Integer ii
int i = ii.intValue();

// to Integer ii from int i
Integer ii = new Integer( i );

See this Amanuensis for other conversions.

Why Both?

Why are there both int and Integer? For speed. ints, without any Object packaging are compact and fast. Would it not have been easier if there were only one of sort of creature that could do everything and have the compiler automatically figure out when the packaging was needed and when not? The Eiffel language designers thought so, and the Java designers are gradually coming around to the same conclusion. Starting with Java 1.5, with boxing and unboxing, the compiler will sometimes automatically do the conversions to and from int and Integer for you so you can treat int and Integer as if they were almost the same thing.


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 1675.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/intvsinteger.html J:\mindprod\jgloss\intvsinteger.html