黑马程序员——jdk1.5新特性

来源:互联网 发布:适合iphone的软件 编辑:程序博客网 时间:2024/04/30 18:13

JDK1.5新特性:

在jdk1.5中,为了便于开发,增加了一些列新的技术和功能,主要有以下几个技术

静态导入,可变参数,for循环增强,装箱与拆箱,枚举

1.静态导入  jdk1.5以上版本

例如:

在代码段中可以直接调用math()方法,

格式在代码起始地方导入:import static java.lang.math.*;

例如以下代码就使用了 java.lang.Math.*包的静态导入,该导入中直接可以调用Math中包含的一切方法:

import static java.lang.Math.*;
public  class StaticImportDemo {
public static void main(String[] args) {
int x = 23;
int y = 30;
int a = -21;
System.out.println("最大值:" + max(x, y));
System.out.println("最小值:" + min(x, y));
System.out.println("绝对值:" + abs(a));
}
}

2.可变参数,只一个方法接收的参数个数不固定

特点:

(1)只能出现在参数列表的最后;

(2)...位于变量型和变量名之间,前后有无空格都可以,不限制;

(3)调用可变参数的方法时候,编译器为该可变参数自动隐藏的创建一个数组,在方法体中可以以数组的形式访问可变参数

代码实例如下,args为可变参数,注释的for循环相当于写的可变参数的for循环实例:

public class VaraableParameter {
public static void main(String[] args) {
System.out.println(add(10, 12));
System.out.println(add(1,2, 3, 4,5,6));
public static int add(int x, int... args) {
int sum = x;
/*
* for(int i=0;i<args.length;i++){
* sum += args[i];
* }
*/
for (int arg : args) {
sum += arg;
}
return sum;
}
}

3,for循环增强

格式:for(type 变量名:集合变量名){}

注意:迭代变量必须在()中定义,集合变量可以是数组或者实现了Iterator接口的集合类,例如用增强for循环来输出一个二维数组

代码实例:

public class DemoFor {
public static void main(String[] args) {
int[][] arr = { { 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 } };
for (int[] row : arr) {
for (int elemen : row) {
System.out.println(elemen);
}
}
}
}


4.自动装箱拆箱

基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自jdk1.5开始提供的功能。

一般我们要创建一个类的对象的时候,我们会这样:

Class a = new Class(parameter);


当我们创建一个Integer对象时,却可以这样:
 Integer i = 10; (此处的意思不是 int i = 100)
在执行上面代码的时候,系统为我们执行如下代码:Integer i = new Integer(100); 这就是基本数据类型的自动装箱功能。

Integer i = 10;        //装箱  
 int t = i;             //拆箱


享元模式:是指很多对象有相同的属性,值创建一个对象,不同的属性把它变为方法的参数,称为外部状态,相同属性称为内部状态。


5.枚举,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.

枚举其实就是对象,每一个枚举的实例是其自己的一个对象。

定义枚举类,注意:元素列表必须放在所有其他信息之前。

枚举实例:

public enum Day {
    SUN ,MON  FRI
}
 
public class EnumTest {
    Day day;  
    public EnumTest(Day day) {
        this.day = day;
    }
     
    public void tellItLikeItIs() {
        switch (day) {
            case MON: System.out.println("Monday ");
                         break;              
            case FRI: System.out.println("Friday");
                         break;               
            case SUN: System.out.println("Weekday);
                         break;     
        }
    }
     
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MON);
        firstDay.tellItLikeItIs();

        EnumTest fifthDay = new EnumTest(Day.FRI);
        fifthDay.tellItLikeItIs();

        EnumTest seventhDay = new EnumTest(Day.SUN);
        seventhDay.tellItLikeItIs();   
    }}

自学心得:在学习基础加强部分的jdk1.5新特性中,我感受到Java新技术的革新带给我开发者带来很多便利,大大提高了开发效率,减轻了开发者的负担,我感觉到程序员这个行业是一个断出现新技术的行业,只有自己平常多多关注和学习新技术,才能让自己得到提高。

0 0