初学者问:为什么ArrayList不能放int?

时间:2022-09-29 22:03:14
可以使用ArrayList<Integer>,却不可以使用Integer<int>,为什么呢?

53 个解决方案

#1


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型

#2


只能放对象
用 Integer 吧

#3


该回复于2011-02-28 09:56:19被版主删除

#4


我从C++转过来的,C++中的list可以存放任何类型。

#5


只能放对象
用 Integer 吧

#6


集合类存放的都是对象的引用,而非对象本身

#7


引用 1 楼 amos1989 的回复:
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型


#8


Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?

#9


只能存放对象的。而int是基础数据类型的。所以 不能存放。
 其实 用包装器就是 把int 数值转化为对象

#10


c++还转过来学JAVA么?
JAVA有这么火么

#11


集合类可以包含Object,String,Float以及Runnable类型的对象。不能用于原始数据类型的列表,例如整型数组。

#12


java内存分为四个区.其中堆不是会被垃圾处理机制随时收回.如果你用int = 8, 这个 8 是放在堆里吧?你想存起来的东西,存完就消失有什么用而interage 是类可以放在code的不会消失(我一直这么理解不知道对不高手看看)

#13


[Quote=引用 8 楼 runer 的回复:]

Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?
[/Quot]
jdk1.6.0_24

#14


我也想问呢

#15


int 不是对象 integer是 int的包装类   

#16


Integer  原始类

#17


在 Java 中,集合 才可以放数据,
Integer不是集合,所以 Integer<int> 不能使用
List     是集合,所以 List<Integer> 可以用

#18


引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?


准确而完整的回答!

#19


集合只能放引用类型的,基本类型不行

你可以使用基本类型的包装类。

#20


还真不知道不可以存基本类型数据,应该可以自动转换吧。

#21


只能写成int[]

#22


int是基本的数据类型,不是对象啊

#23


泛型只能接收一种类
int是值类型
Integer才是一个类  包装类

#24


该回复于2011-02-28 16:05:06被版主删除

#25


该回复于2011-02-28 16:19:00被版主删除

#26


引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?



支持

#27


Integer不是范型类,没有这样的用法Integer<int>

List是范型类,所以可以这样List<Integer>

#28


int是基本数据类型

#29



import java.util.ArrayList;


public class Test1 {
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(65535);
System.out.println(list.get(0));
}
}

#30


回去好好看看java在内存中的存储结构吧。答案楼下别的楼给你解释了,剩下的是我对你的建议。

#31


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型

#32


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型   貌似是这样

#33


泛型只能接收一种类
int是值类型
Integer才是一个类 包装类

#34


Integer<int> 这个是什么东西 我还真不知道。如果你只是放int为什不用数组?

#35


引用 33 楼 java_arraylist 的回复:
泛型只能接收一种类
int是值类型
Integer才是一个类 包装类

名字不错。

#36


int是基本类型,List里要存放对象的。

#37



@Test
public void kjljli(){
int a=1;
int b=2;
int c=3;
int d=10;
int e=11;

List<Integer> list = new ArrayList<Integer>();
list.add(a);
list.add(d);
list.add(e);
list.add(b);
list.add(c);


Collections.sort(list);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}

#38


我匿了,看错了......

#39


list是放对象的容器。

#40


理解泛型你就不会问这个问题了。

#41


引用 10 楼 ls1firesoar 的回复:
c++还转过来学JAVA么?
JAVA有这么火么


ding....

#42


我目前是这样理解的:Java里的一个“对象变量”对应C++里的指针,ArrayList里放的东西是一列指针,每个指针指向堆里的一个“实际的对象”。

而对于int,每个“int变量”都对应一块内存,这块内存有可能在栈里,也有可能在堆里,如果让ArrayList的“指针”指向在栈里的“int变量”,则在释放栈后,ArrayList内的“指针”将指向空引用。

#43


public boolean add(E o)
Appends the specified element to the end of this list.

#44


一块理解理解。。

#45


ArrayList<E>中的E只能是引用类型,然而:int,byte,char,long,double,float,boolean...八种类型为基本类型,Integer是int的封装类型,每个基本类型都对应一个封装类,所以只能用Integer,不能用int

#46


ArrayList只能存储对象,不能存储基本类型.Integer是int的包装类,用来生成int类的对象,因此Integer是可以的.

#47


java就这么规定的,很2是吧,c++多好啊

#48


集合只能存放引用对象,不能存放值对象。

#49


jdk1.4不支持泛型吧。
引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?

#50


Arraylist里面全都是对象!所以不能让int

#1


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型

#2


只能放对象
用 Integer 吧

#3


该回复于2011-02-28 09:56:19被版主删除

#4


我从C++转过来的,C++中的list可以存放任何类型。

#5


只能放对象
用 Integer 吧

#6


集合类存放的都是对象的引用,而非对象本身

#7


引用 1 楼 amos1989 的回复:
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型


#8


Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?

#9


只能存放对象的。而int是基础数据类型的。所以 不能存放。
 其实 用包装器就是 把int 数值转化为对象

#10


c++还转过来学JAVA么?
JAVA有这么火么

#11


集合类可以包含Object,String,Float以及Runnable类型的对象。不能用于原始数据类型的列表,例如整型数组。

#12


java内存分为四个区.其中堆不是会被垃圾处理机制随时收回.如果你用int = 8, 这个 8 是放在堆里吧?你想存起来的东西,存完就消失有什么用而interage 是类可以放在code的不会消失(我一直这么理解不知道对不高手看看)

#13


[Quote=引用 8 楼 runer 的回复:]

Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?
[/Quot]
jdk1.6.0_24

#14


我也想问呢

#15


int 不是对象 integer是 int的包装类   

#16


Integer  原始类

#17


在 Java 中,集合 才可以放数据,
Integer不是集合,所以 Integer<int> 不能使用
List     是集合,所以 List<Integer> 可以用

#18


引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?


准确而完整的回答!

#19


集合只能放引用类型的,基本类型不行

你可以使用基本类型的包装类。

#20


还真不知道不可以存基本类型数据,应该可以自动转换吧。

#21


只能写成int[]

#22


int是基本的数据类型,不是对象啊

#23


泛型只能接收一种类
int是值类型
Integer才是一个类  包装类

#24


该回复于2011-02-28 16:05:06被版主删除

#25


该回复于2011-02-28 16:19:00被版主删除

#26


引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?



支持

#27


Integer不是范型类,没有这样的用法Integer<int>

List是范型类,所以可以这样List<Integer>

#28


int是基本数据类型

#29



import java.util.ArrayList;


public class Test1 {
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(65535);
System.out.println(list.get(0));
}
}

#30


回去好好看看java在内存中的存储结构吧。答案楼下别的楼给你解释了,剩下的是我对你的建议。

#31


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型

#32


JAVA集合只能存放引用类型的的数据,不能存放基本数据类型   貌似是这样

#33


泛型只能接收一种类
int是值类型
Integer才是一个类 包装类

#34


Integer<int> 这个是什么东西 我还真不知道。如果你只是放int为什不用数组?

#35


引用 33 楼 java_arraylist 的回复:
泛型只能接收一种类
int是值类型
Integer才是一个类 包装类

名字不错。

#36


int是基本类型,List里要存放对象的。

#37



@Test
public void kjljli(){
int a=1;
int b=2;
int c=3;
int d=10;
int e=11;

List<Integer> list = new ArrayList<Integer>();
list.add(a);
list.add(d);
list.add(e);
list.add(b);
list.add(c);


Collections.sort(list);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}

#38


我匿了,看错了......

#39


list是放对象的容器。

#40


理解泛型你就不会问这个问题了。

#41


引用 10 楼 ls1firesoar 的回复:
c++还转过来学JAVA么?
JAVA有这么火么


ding....

#42


我目前是这样理解的:Java里的一个“对象变量”对应C++里的指针,ArrayList里放的东西是一列指针,每个指针指向堆里的一个“实际的对象”。

而对于int,每个“int变量”都对应一块内存,这块内存有可能在栈里,也有可能在堆里,如果让ArrayList的“指针”指向在栈里的“int变量”,则在释放栈后,ArrayList内的“指针”将指向空引用。

#43


public boolean add(E o)
Appends the specified element to the end of this list.

#44


一块理解理解。。

#45


ArrayList<E>中的E只能是引用类型,然而:int,byte,char,long,double,float,boolean...八种类型为基本类型,Integer是int的封装类型,每个基本类型都对应一个封装类,所以只能用Integer,不能用int

#46


ArrayList只能存储对象,不能存储基本类型.Integer是int的包装类,用来生成int类的对象,因此Integer是可以的.

#47


java就这么规定的,很2是吧,c++多好啊

#48


集合只能存放引用对象,不能存放值对象。

#49


jdk1.4不支持泛型吧。
引用 8 楼 runer 的回复:
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型

另外,我想知道,兄弟用的哪个版本的JDK????

jdk1.4?

#50


Arraylist里面全都是对象!所以不能让int