---------------------- android培训、java培训、期待与您交流! ----------------------
jdk1.5的新特性
1,静态导入
什么是静态导入?
我们平常在用到某个类的静态的方法的时候。是通过类名.方法名调用的。那么现在有一种新的调用方式就是可以把类名去掉,直接用方法名即可,前提是我们必须要把这个静态的方法所在的类导入到当前源文件中,那么这种类的导入就叫静态导入。
格式是:1, import static java.包名.类名.方法名//将某个类中的某个静态方法导入 2,import static java.包名.类名.*//奖某个类 中所有的静态的方法导入。
什么是静态导入?
我们平常在用到某个类的静态的方法的时候。是通过类名.方法名调用的。那么现在有一种新的调用方式就是可以把类名去掉,直接用方法名即可,前提是我们必须要把这个静态的方法所在的类导入到当前源文件中,那么这种类的导入就叫静态导入。
格式是:1, import static java.包名.类名.方法名//将某个类中的某个静态方法导入 2,import static java.包名.类名.*//奖某个类 中所有的静态的方法导入。
2,可变参数
overload 重载
override 重写
可变参数的特点
1,只能出现在参数列表的最后 ;
2,...位于变量类型和变量名之间。前后有无空格都可以。
3,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
class kebiancanshu
{
public static void main (String [] args)
{
System.out.println(sum(1,2,3));
}
public static int sum(int x,int...is)
{
int sum=x;
for(int y=0;y<is.length;y++)
{
sum+=is[y];
}
return sum;
}
}
override 重写
可变参数的特点
1,只能出现在参数列表的最后 ;
2,...位于变量类型和变量名之间。前后有无空格都可以。
3,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
class kebiancanshu
{
public static void main (String [] args)
{
System.out.println(sum(1,2,3));
}
public static int sum(int x,int...is)
{
int sum=x;
for(int y=0;y<is.length;y++)
{
sum+=is[y];
}
return sum;
}
}
要注释一部分代码的快捷键是ctrl+shift+/
3,增强for循环
class kebiancanshu
{
public static void main (String [] args)
{
System.out.println(sum(1,2,3));
}
public static int sum(int x,int...is)
{
int sum=x;
for(int y:is) ///增强for循环
{
sum+=y;
}
return sum;
}
}
注意事项:迭代变量必须在()中定义。集合变量可以是数组或实现了iterable接口的集合类。
class kebiancanshu
{
public static void main (String [] args)
{
System.out.println(sum(1,2,3));
}
public static int sum(int x,int...is)
{
int sum=x;
for(int y:is) ///增强for循环
{
sum+=y;
}
return sum;
}
}
注意事项:迭代变量必须在()中定义。集合变量可以是数组或实现了iterable接口的集合类。
4,自动装箱和拆箱功能
自动装箱
在jdk1.5之前我们这样写代码Integer a=3;是不可以的。而到了jdk1.5以后就可以了,Integer a=3;这个动作就用到了jdk1.5的自动装箱功能。他会自动把一个int型的基本数据类型3封装成一个Integer对象并赋给了引用变量a。
自动拆箱
在jdk1.5之前我们这样 写代码 Integer a=3; System.out.println(a+3);是不可以的。而到了jdk1.5之后就可以了。
实际上a是一个Integer的对象他是不 可以进行加法运算的,在这里之所以可以,就是因为jdk在1.5之后又自动拆箱功能,他自动把Integer的对象拆箱后变成了int型的基本数据后再和3作加法运算。所以结果是6.
注意事项:在把一个int型的数据自动装箱时,如果这个数的值在-128到127之间,那么Integer a=127;Integer b=127;System.out.println(a==b);的结果为 true。如果这个数的值超过了-128到127这个范围。比如 Integer a=128;Integer b=128;
System.out.println(a==b);的结果为 false。
自动装箱
在jdk1.5之前我们这样写代码Integer a=3;是不可以的。而到了jdk1.5以后就可以了,Integer a=3;这个动作就用到了jdk1.5的自动装箱功能。他会自动把一个int型的基本数据类型3封装成一个Integer对象并赋给了引用变量a。
自动拆箱
在jdk1.5之前我们这样 写代码 Integer a=3; System.out.println(a+3);是不可以的。而到了jdk1.5之后就可以了。
实际上a是一个Integer的对象他是不 可以进行加法运算的,在这里之所以可以,就是因为jdk在1.5之后又自动拆箱功能,他自动把Integer的对象拆箱后变成了int型的基本数据后再和3作加法运算。所以结果是6.
注意事项:在把一个int型的数据自动装箱时,如果这个数的值在-128到127之间,那么Integer a=127;Integer b=127;System.out.println(a==b);的结果为 true。如果这个数的值超过了-128到127这个范围。比如 Integer a=128;Integer b=128;
System.out.println(a==b);的结果为 false。
因为-128到127之间的范围是int的 范围,我们常用的数据也大部分 在这个范围之间,所以Java为了节省空间就在内存中定义一次
Integer a=3;下次无论谁在定义,都指向着一个3。这样就为内存节省了好多的空间。
这是一种设计模式叫做享元模式(flyweight)。
Integer a=3;下次无论谁在定义,都指向着一个3。这样就为内存节省了好多的空间。
这是一种设计模式叫做享元模式(flyweight)。
---------------------- android培训、java培训、期待与您交流! ----------------------