黑马程序员技术交流社区

标题: 【哈尔滨校区】jdk1.5的新特性(上) [打印本页]

作者: 张斯佳    时间: 2018-9-20 08:55
标题: 【哈尔滨校区】jdk1.5的新特性(上)
本帖最后由 张斯佳 于 2018-9-20 08:57 编辑

今天开始给大家总结一下JDK1.5的新特性,虽然现在出到10了,但是大部分公司还是在用老的版本,面试的时候难免被问到,我帮大家总结一下:
(1)静态导入:
**import语句可以导入一个类或某个包中的所有类
**import static语句导入一个类中的某个静态方法或所有静态方法
静态导入后,静态方法前面就不用写类名.方法的方式类调用
**语法举例:
import static java.lang.Math.sin;//导入一个静态方法
import static java.lang.Math.*; //导入一个类中的所有静态方法
**静态导入使用注意:
当类名重复时,需要制定具体的包名;
当方法重名时,需要制定具体所属的对象或者类
(2)可变参数:
**可变参数的特点:
*可变参数只能出现在参数列表的最后;
*...位于变量类型和变量名之间,前后有无空格都可以;
*调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,
在方法体中以数组的形式访问可变参数。
**可变参数举例:
*变量类型... 变量名 如 int... arr表示可变参数数组
*public static void show(String str , int... arr){}
(3)增强for循环:
**语法:
for ( type 变量名:集合变量名 ) { … }
**注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
**举例:
public static int add(int x,int ...args) {
int sum = x;
for(int arg:args) {
sum += arg;
}
return sum;
}
**增强for循环代替了迭代器使用的不爽,简化书写
**增强for循环局限性:
对集合或者数组进行遍历时,只能取元素,不能对集合进行操作
(4)基本数据类型的自动装箱和拆箱
**基本数据类型
byte ---> Byte
short ---> Short
int ---> Integer
long ---> Long
float ---> Float
double ---> Double
char ---> Character
boolean ---> Boolean
**例子:
**装箱:自动把一个基本数据类型的数据装箱成一个该类型数据的对象引用
Integer i = 3;(jdk1.5之前这样写是不行的,编译报错)
**拆箱:自动把一个基本数据类型的对象引用拆箱成一个基本数据类型的数据,再参与运算
Integer i = 12;
sop(i+4);
**享元模式:
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);//打印true
Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12);
System.out.println(num5 == num6);//打印true
Integer num3 = 129;
Integer num4 = 129;
System.out.println(num3 == num4);//打印false
为什么前面的返回true而后面的运算返回false呢?
对于基本数据类型的整数,装箱成Integer对象时,如果该数值在一个字节内,(-128~127)
一旦装箱成Integer对象后,就把它缓存到磁里面,当下次,又把该数值封装成Integer对象时
会先看磁里面有没有该对象,有就直接拿出来用,这样就节省了内存空间。因为比较小的整数,
用的频率比较高,就没必要每个对象都分配一个内存空间。
这就是享元模式!比如26个英文字母,10个阿拉伯数字








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2