黑马程序员<高新技术一>

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

静态导入:

import语句可以导入一个类或某个包中的所有类

import static语句导入一个类中的某个静态方法或所有静态方法

语法举例:

import static java.lang.Math.max;

import static java.lang.Math.*;

当导入静态方法后,可以不使用类名调用方法,如:

System.out.println(max(3,6));

这是java 1.5版本出现的新特性,JDK要使用1.5以上版本。


-------------------------------------------------------------------------------

可变参数的方法:

当我们对同一个方法所传入的参数个数不确定时,以前要使用重载的方式写多个方法,而1.5之后,可以使用

可变参数来定义一个方法即可。如:

System.out.println(countScore(2,3,5));

System.out.println(countScore(1,2,3,5));      

就需要一个可变参数的countScore方法来实现。


可变参数的特点:

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

2、...位于变量类型和变量名之间,前后有无空格都可以;

3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

Java代码  

  1. publicstaticint add(int x,int ...args) {  

  2. int sum = x;  

  3. for(int i=0;i<args.length;i++) {  

  4.            sum += args[i];  

  5.        }  

  6. return sum;  

  7.    }  


--------------------------------------------------------------------------------------------------------------------------

增强for循环:

格式:

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

注意事项:

1、迭代变量必须在( )中定义!

2、集合变量可以是数组或实现了Iterable接口的集合类。

如在可变参数中的例子:

Java代码  

  1. publicstaticint add(int x,int ...args) {  

  2. int sum = x;  

  3. for(int arg : args) {  

  4.                sum += args[i];  

  5.            }  

  6. return sum;  

  7.        }  


--------------------------------------------------------------------------------------------

基本数据类型的自动拆箱装箱:

自动装箱:

Integer num1 = 12;

将int类型的12自动装箱为一个Integer对象。

自动拆箱:

System.out.println(num1 + 12);

将Integer类型的num1拆箱为一个int类型再与12进行运算。


---------------------------------------------------------------------------------

享元设计模式:

Integer i1 = 13

Integer i2 = 13

System.out.print(i1 == i2);//返回的是true


Integer i1 = 137

Integer i2 = 137

System.out.print(i1 == i2);//返回的是false

在自动装箱过程中,如果赋值大小在一个字节之内,-128-127之间的数字,一旦被装箱成一个对象,就会

放入缓存中,如果再有相同的的赋值动作,则它们指向同一个装箱的对象。

这是一种设计模式:享元设计模式。


----------------------------------------------------------------------------------

枚举:

枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方

法或变量等放在枚举元素的前面,编译器报告错误。

枚举只有一个成员时,就可以作为一种单例的实现方式。

带构造方法的枚举:

1、构造方法必须定义成私有的 。

2、枚举元素MON和MON()的效果一样,都是调用默认的构造方法。

带方法的枚举:

定义枚举TrafficLamp

实现普通的next方法

实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。

增加表示时间的构造方法

Java代码  

  1. publicclass EnumDemo {  


  2. publicstaticvoid main(String[] args) {  


  3.        WeekDay weekDay = WeekDay.FRI;  


  4.        System.out.println(weekDay);  

  5.        System.out.println(weekDay.name());//打印这个对象的名字

  6.        System.out.println(weekDay.ordinal());//对象排在哪个位置

  7.        System.out.println(WeekDay.valueOf("SUN"));  

  8.        System.out.println(WeekDay.values().length);  


  9.        TrafficLamp lamp = TrafficLamp.GREEN;  

  10.        System.out.println(lamp.nextLamp());  

  11.    }  


  12. publicenum WeekDay {  


  13.        SUN(1),MON,TUE,WED,THI,FRI,SAT;//元素列表必须放在最前面,代表枚举的实例对象


  14. //默认调用无参构造方法

  15. private WeekDay() {  


  16.            System.out.println("first");  

  17.        }  


  18. private WeekDay(int day) {  


  19.            System.out.println("second");  

  20.        }  

  21.    }  


  22. publicenum TrafficLamp {  


  23.        RED(30) {//每个元素代表一个实例对象,必须实现抽象方法

  24. @Override

  25. public TrafficLamp nextLamp() {  

  26. return GREEN;  

  27.            }  

  28.        },GREEN(45) {  

  29. @Override

  30. public TrafficLamp nextLamp() {  

  31. return YELLOW;  

  32.            }  

  33.        },YELLOW(5) {  

  34. @Override

  35. public TrafficLamp nextLamp() {  

  36. return RED;  

  37.            }  

  38.        };  


  39. publicabstract TrafficLamp nextLamp();//定义了抽象方法的枚举不需要在类名上加抽象


  40. privateint time;  


  41. private TrafficLamp(int time) {  

  42. this.time = time;  

  43.        }  

  44.    }  



  45. }  

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

你可能感兴趣的:(java,程序员,开发,import)