首页 > 试题广场 >

以下代码将打印出

[单选题]
以下代码将打印出
	public static void main(String args[]) {
		  List  Listlist1 = new ArrayList();
		  Listlist1.add(0);
		  List Listlist2 = Listlist1;
		  System.out.println(Listlist1.get(0) instanceof Integer);
		  System.out.println(Listlist2.get(0) instanceof Integer);
	}
  • 编译错误
  • true true
  • true false
  • false false
推荐
B.
collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据,该题中装入了0,是一个基本类型,但是JDK5以后提供了自动装箱与自动拆箱,所以int类型自动装箱变为了Integer类型。编译能够正常通过。
将list1的引用赋值给了list2,那么list1和list2都将指向同一个堆内存空间。instanceof是Java中关键字,用于判断一个对象是否属于某个特定类的实例,并且返回boolean类型的返回值。显然,list1.get(0)和list2.get(0)都属于Integer的实例
编辑于 2016-05-24 10:42:04 回复(12)
答案B  不指定ArrayList类型,存入数据,再次取出时,默认是Object类型;但这个题的关键是instanceof关键字,instanceof执行时类似利用java反射机制,识别对象信息。
发表于 2015-08-04 11:05:50 回复(2)
List集合中的元素必须是对象。
Listlist1.add(0);JDK1.5之后支持自动装箱(int类型自动装箱成Integer),编译通过。

instanceof:前一个参数通常是一个引用类型变量,后一个操作数通常是一个类(也可以是一个接口, 它用于判断前面的对象是否是后面的类,或者其子类、实现类的实例

List没有使用泛型,说明使用get(0)取出的元素的编译类型是Object型的, 但运行时类型是Integer。所以打印true。这边体现了多态。
而Listlist1把引用赋给了List list2,说明两个指向同一个对象。第二个打印的也是true。
发表于 2016-08-10 20:34:40 回复(0)
public class Test { public static void main(String[] args){ List list1 = new ArrayList(); List list2 = list1; list1.add(0); Object o = list1.get(0); Class<?> oClass = o.getClass(); System.out.println(oClass.getSimpleName()); // 实际类型为Integer。 System.out.println(list1.get(0) instanceof Integer); System.out.println(list2.get(0) instanceof Integer); // ArrayList在底层存储数据时就是采用的一个Object[]类型的数组来实现的。在get操作时会强转为泛型类型然后返回, 在 // 此例中并没有给ArrayList泛型。 所以使用的默认值, 即Object类型。所以此例中返回的是一个Object的对象。 // 但是又因为在add的时候由于0是基本类型, 所以在add时会发生自动装箱操作, 将0转换为Integer类型然后添加到ArrayList中。所以 // 通过get获取的对象的实际类型为Integer(第14行通过获取它的Class对象进行验证); // instanceof在进行比较时会获取对象的实际类型进行比较, 所以通过list1.get(0)和list2.get(0)获取到的对象的实际类型肯定是Integer // 类型的, 所以这两个输出的都是true。 }}
发表于 2016-05-24 13:26:59 回复(2)
B。这里由于List没有规定数据类型,任何类型数据加入到List中后都会默认为Object类型,当再要拿出时就要进行强制类型转换,否则编译不通过。所以list1.get(0)应该是一个Object对象,这里理解为Object对象是任何对象类型的实例。
编辑于 2016-05-24 10:41:58 回复(11)
public static void main(String[] args) {
    List Listlist1 = new ArrayList();
    Listlist1.add(Integer.valueOf(0));
    System.out.println(Listlist1.get(0) instanceof Integer);
    System.out.println(Listlist1.get(0) instanceof Integer);
}

这是编译后的代码
发表于 2017-06-12 21:32:08 回复(0)
1.collection类型集合(ArrayList,LinkedList只能装入对象类型的数据),题目中装入0,基于对象的自动封装与拆箱 0-->Interger对象
2.instanceof是java关键字 用于测试一个对象是否是某个类的实例,并且返回Boolean类型数据,
3.基于自动封装和自动拆箱以及instanceof 可以知道返回值为true
发表于 2018-09-21 10:31:28 回复(0)
明明就是编译通过不了,Listlist1和Listlist2是哪来的变量啊
发表于 2015-09-17 22:38:56 回复(0)
(1)集合中存入的是基本类型的对象;
(2)基本类型存在自动装箱和拆箱的功能;
(3)instanceof用于判断前者是否属于后者实例。
综上,选择B。
发表于 2019-09-10 17:37:11 回复(0)



发表于 2017-03-06 08:31:07 回复(0)
List<Number> n = new LinkedList<Number>(); n.add(0); System.out.println(n.get(0) instanceof Integer); // true // 容器都会被擦除成Object,然后instanceof 和getClass会在运行时通过反射获得对象真正的类型。
发表于 2016-04-07 21:24:35 回复(0)
B list1.add(0)时,会将0进行自动装箱成对应的包装类Integer,当进行get操作时,取出的元素就是Integer类型的 对于list2来说,它被初始化为list1, 它指向了list1所指向的地址
发表于 2015-09-09 21:39:30 回复(0)
getClass()是得到运行时类型。
把元素放入数组的确会类型擦除变成Object类型,这个类型是编译类型。所以说这道题不用考虑这方面原因
发表于 2016-05-31 14:05:15 回复(0)
发表于 2022-04-26 16:42:40 回复(0)
List集合中的元素必须是对象。 Listlist1.add(0);JDK1.5之后支持自动装箱(int类型自动装箱成Integer),编译通过。 instanceof:前一个参数通常是一个引用类型变量,后一个操作数通常是一个类(也可以是一个接口, 它用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。 List没有使用泛型,说明使用get(0)取出的元素的编译类型是Object型的, 但运行时类型是Integer。所以打印true。这边体现了多态。 而Listlist1把引用赋给了List list2,说明两个指向同一个对象。第二个打印的也是true。
发表于 2021-05-22 17:34:23 回复(0)
instanceof是用来判断某一个对象是否是某个类的实列
发表于 2018-10-18 14:59:51 回复(0)

public static void main(String[] args)
    List list1 = new ArrayList();
    list1.add(0);
    List list2 = list1;
    System.out.println("list1.get(0):"+list1.get(0).getClass()+"  "+"list2.get(0):"+list2.get(0).getClass());
    //System.out.println(list1.get(0) instanceof Integer);
    //System.out.println(list2.get(0) instanceof Integer);
// 输出: list1.get(0):class java.lang.Integer  list2.get(0):class java.lang.Integer
发表于 2015-08-15 19:22:42 回复(0)
instanceof方法是用来判断某一个对象是否是某个类的实列
发表于 2023-04-24 23:15:19 回复(0)
首先 jdk5之后就会实现自动装箱,而instanceof是Java的关键字 用于判断一个对象是否为另一个对象的子类或者同类型,list1.get(0)和list2.get(0)都是Integer实例
发表于 2022-03-31 16:29:03 回复(0)
list1.get(0)和list2.get(0)都属于Integer的实例,list1和list2返回的都是Integer包装类的类型
发表于 2019-01-01 10:43:46 回复(0)
collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据,1是基本类型,JDK1.5后提供了自动拆箱与自动装箱机制,所以1会被自动装箱成Integer类型。编译能够正常通过。
将list1的引用赋值给list2,那么list1和list2指向同一个内存空间。instanceof是Java中的关键字,用于判断一个对象是否属于某个特定的类的实例,并且返回boolean类型的返回值。显然,list1.get(1)和list2.get(0)都属于Integer实例。
发表于 2016-09-06 10:44:34 回复(0)