您的位置:首页 > 编程语言 > Java开发

Java----JDK1.5出现的新特性

2013-07-15 01:31 253 查看
高新技术 JDK1.5出现的新特性
一、Static Import静态导入
import static语句:导入一个类中的某个静态方法,或所有静态方法。
例:
package cn.itcast.day1;

public class StaticImport {

public static void main(String[] args) {
int i = -3;
i = Math.abs(i);
System.out.println(i);
double num = Math.random();
System.out.println(num);
}
}
每次要使用Math类的功能都得加上类名进行调用,很麻烦。使用静态导入。
例:
package cn.itcast.day1;

import static java.lang.Math.*;
public class StaticImport {

public static void main(String[] args) {
int i = -3;
i = abs(i);
System.out.println(i);
double num = random();
System.out.println(num);
}
}
二、可变参数
可变参数:一个方法接受的参数个数不确定,可以使用可变参数对方法进行改进。
特点:只能出现在参数列表的最后;“...”位于变量类型和变量名之间。前后有无空格都可以;调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
例:
package cn.itcast.day1;

public class VariableParam {

public static void main(String[] args) {
// TODO Auto-generated method stub
fun("sum",3,4,5);
fun("sum",3,4,5,7);
fun("sum",3,7);
}

private static void fun(String string, int ... args) {
// TODO Auto-generated method stub
int sum = 0;
for(int i : args){
sum += i;
}
System.out.println(string+" = "+sum);
}

}



回顾:overload和override的区别?

异:
override(重写)

1.方法名、参数、返回值相同。

2.子类方法的访问权限不能小于父类方法。

3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4.方法被定义为final不能被重写。


overload(重载)

1、参数类型、个数、顺序至少有一个不相同。

2、不能重载只有返回值不同的方法名。

同:存在于父类和子类、同类中。

三、高级for循环
语法:for(type 变量:集合变量名){...}
注意事项:
1.迭代变量必须在“()”中定义。
2.集合变量可以是数组或实现了Iterator接口的集合类。
例:
package cn.itcast.day1;

public class ForEach {

public static void main(String[] args) {
int[] arrays = {1,2,3,4,5,6};
int sum = 0;
for(int num : arrays){
sum += num;
}
System.out.println("Sum = "+sum);
}
}



四、自动拆箱和自动装箱
例:
package cn.itcast.day1;

public class ForEach {

public static void main(String[] args) {
Integer i = 7;//自动将基本数据类型变量装箱成对象
Integer j = 3;
int sum = i+j;//自动将对象拆箱成基本数据类型变量
System.out.println("Sum = "+sum);
}
}



其实在运行过程中,省略了很多动作,Integer i = 7其实简写了Integer i = new Integer(7)。int sum = i+j其实也隐含了int sum
= i.intValue()+j.intValue()。自动拆箱装箱功能的出现实现了对代码的简化。

享元模式:
package cn.itcast.day1;

public class ForEach {

public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
System.out.println(a == b);

Integer c = 128;
Integer d = 128;
System.out.println(c == d);
}
}



疑惑:

为神马会这样了?

答:这是享元模式,一个byte的范围在-128~127。因为这些数被利用的次数较为频繁,所以为了优化内存,就把这些数提取出来供对象调用。作为对象们共享数据,所以也就相等了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: