java13-5 JDK1.5以后的一个新特性和Integer的面试题

1、JDK5的新特性
    自动装箱:把基本类型转换为包装类类型
    自动拆箱:把包装类类型转换为基本类型

  注意一个小问题:
    在使用时,Integer x = null;代码就会出现NullPointerException。
  标准化:建议先判断是否为null,然后再使用。

 1 public class IntegerDemo {
 2 public static void main(String[] args) {
 3 // 定义了一个int类型的包装类类型变量i
 4 // Integer i = new Integer(100);
 5 Integer ii = 100;
 6 ii += 200;
 7 System.out.println("ii:" + ii);
 8
 9 // 通过反编译后的代码
10 // Integer ii = Integer.valueOf(100); //自动装箱
11 // ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱
12 // System.out.println((new StringBuilder("ii:")).append(ii).toString());
13
14 Integer iii = null;
15 // NullPointerException
16 if (iii != null) {
17 iii += 1000;
18 System.out.println(iii);
19 } //这一段是死代码,永远进不来
20 }
21 }

2、面试题:

   第一题:
    Integer i = 1;
    i += 1;
  这一段代码做了哪些事情?

  答: Integer i = 1;自动装箱
     i += 1; 自动拆箱,再自动装箱

  第二题:
    看程序写结果
 

 1 public class IntegerDemo {
 2 public static void main(String[] args) {
 3 Integer i1 = new Integer(127);
 4 Integer i2 = new Integer(127);
 5 System.out.println(i1 == i2);
 6 System.out.println(i1.equals(i2));
 7 System.out.println("-----------");
 8
 9 Integer i3 = new Integer(128);
10 Integer i4 = new Integer(128);
11 System.out.println(i3 == i4);
12 System.out.println(i3.equals(i4));
13 System.out.println("-----------");
14
15 Integer i5 = 128;
16 Integer i6 = 128;
17 System.out.println(i5 == i6);
18 System.out.println(i5.equals(i6));
19 System.out.println("-----------");
20
21 Integer i7 = 127;
22 Integer i8 = 127;
23 System.out.println(i7 == i8);
24 System.out.println(i7.equals(i8));

//上面的答案:equals方法的都是true,而 == 的答案依次是:flase,flase,flase,true
// 通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,
// 如果数据是该范围内的,就直接从缓冲池里面提取数据,不用创建新的空间
// 如果数据不是这个范围的,则需要重新创建新的空间
// 所以System.out.println(i5 == i6);这里是flase
// Integer ii = Integer.valueOf(127);
}
}

注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据

时间: 2024-12-26 18:01:51

java13-5 JDK1.5以后的一个新特性和Integer的面试题的相关文章

activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。

android:windowSoftInputMode 这个属性能影响两件事情: [一]当有焦点产生时,软键盘是隐藏还是显示 [二]是否减少活动主窗口大小以便腾出空间放软键盘 它的设置必须是下面列表中的一个值,或一个"state-"值加一个"adjust-"值的组合.在任一组设置多个值--多个"state-"values,例如&mdash有未定义的结果.各个值之间用|分开.例如:<activity android:windowSof

(14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型

Jdk1.5新特性之静态导入 jdk1.5新特性值静态导入 静态导入的作用:简化缩写 静态导入的作用:可以作用一个类的所有静态成员. 静态导入的格式:import static 包名.类名.静态的成员 import static java.util.Collections.sort; //静态导入指定的某个静态成员方法 import static java.util.Collections.*;  导入所有的静态成员 除了可以导入静态的成员方法,也可以静态的导入成员变量,比如System.out

JDK1.5-1.8各版本新特性

JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性.希望能给予帮助. JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue(

JDK1.8的几个新特性

场景一:假设我们有一个 List 包含一系列的 Person,Person 有姓名 name 和年龄 age 连个字段.现要求这个列表中年龄大于 20 的人数. 通常按照以前我们可能会这么写: long count = 0; for (Person p : persons) { if (p.getAge() > 20) { count ++; } } 但如果使用 stream 的话,则会简单很多: long count = persons.stream() .filter(person ->

黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举

一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包中所有的类. (2)import static是导入一个类中的某个静态方法或所有的静态方法. 注:在调用静态导入的类的静态方法时,可以不用再写类名.如Arrays.sort(int[])可以直接写sort(int[]); 2.静态导入的写法: (1)import static java.util.Arrays.*;   表示导入Arrays类中的所有静态成员. (2)import stati

高新技术---枚举及部分JDK1.5新特性

第一讲     枚举 一.概述 这里说的枚举,不是集合vector的特有枚举迭代器,而是JDK1.5的一个新特性.之所以单独拿它开刷,是这个知识点比较重要,同时相对来说比较难理解一些. 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外. 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错.枚举可以让编译器在编译时就可以控制源程序中填写的非法

JDK1.5新特性总结

“JDK1.5”(开发代码猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型.foreach循环.自动拆装箱.枚举.可变参数.内省.静态导入等.使用这些特性有助于我们编写更加清晰,强悍,安全的代码. 泛型(Generic) C++通过模板技术可以指定集合的元素类型,而java在1.5之前一直没有相对应的功能,一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制的类型转换.猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以强类型在编译时刻进行类

[译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/12034584.html 众所周知,对现有应用程序的接口进行更改是一项很危险的操作. 如果这个接口又在多个项目中使用了,那么进行更改将需要付出更多的精力,以确保它不会在其他地方运行失败. 如果该项目是一个小项目,那么我们可以很容易地识别

Java中的工具类和新特性

1:Collections集合框架工具类: /* 集合框架的工具类. Collections:集合框架的工具类.里面定义的都是静态方法. Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法. 它有两个常用的子接口, List:对元素都有定义索引.有序的.可以重复元素. Set:不可以重复元素.无序. Collections是集合框架中的一个工具类.该类中的方法都是静态的 提供的方法中有可以对list集合进行排序