您的位置:首页 > 其它

[置顶] 静态导入 -->心德总结

2012-09-18 10:05 246 查看
一、JavaSe加强主要讲的是JDK 5.0新特性(有助于编写更加清晰,精悍,安全的代码。)

新特性包括:

1、静态导入

2、自动装包/拆包

3、for-each循环

4、可变参数

5、枚举

6、泛型

7、元数据

二、静态导入

1、静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)

2、语法:Importstatic
包名.类名.静态属性|静态方法|*(*代表所有)

3、导入语句使用import static
语句

1)导入指定类的单个静态属性:import static java.lang.System.out

2)、导入指定类静态方法: import staticjava.lang.Math.max

3)、导入指定类全部静态属性和方法: import static java.lang.Math

三、自动装箱/拆箱

1、自动装箱(autoboxing):把一个基本数据类型直接赋给对应的包装类变量,
或者赋给 Object 变量


2、自动拆箱:把包装类对象直接赋给一个对应的基本类型变量

例子:

int m=9;

Integer n=m;(自动装箱)

int k=n;(自动拆箱)

3、典型应用:

Listlist = new ArrayList();

list.add(1);

//取出值

intj = (Integer)list.get(0);

4、代码说明:

package com.hbsi.base;

importjava.util.ArrayList;

importjava.util.Iterator;

importjava.util.List;

publicclass Demo2 {

/**

* @param args

*/

publicstaticvoid main(String[] args) {

//应用

List list=new
ArrayList();

list.add(1);
//list.add(new Integer(1));

list.add(2);

list.add(3);

//获取迭代器

Iterator it=list.iterator();

//遍历元素

while(it.hasNext()){

//it.next()取出的是对象

int num=(Integer)it.next();

//输出

System.out.println(num);

}

}

}

增强for循环

1、使用原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。

2、增强for循环只能用在数组、或实现Iterator接口的集合类上。

3、使用 foreach
循环遍历数组和集合元素时,
无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素,
foreach 循环自动遍历数组和集合的每个元素

4、语法格式:

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


for(type varName : array | collection){

//varName
自动迭代访问每一个元素

}

5、增强for循环遍历数组集合代码说明:

1)普通遍历

publicvoid testArr(){

//定义数组

String[] name={"aa","bb","cc"};

//遍历数组

for(String str:name){

System.out.println(str);

}

}

2)如果数组中放的是类的类型对象:

需先编写java bean文件:

package com.hbsi.base;

publicclass Person {

private String
name;

privateintage;

//构造方法

public
Person(String name,int age){

this.name=name;

this.age=age;

}

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

publicint getAge() {

returnage;

}

publicvoid setAge(int age) {

this.age = age;

}

}

编写person类生成一个数组放person对象,数组是person类型的

publicvoid testArr1(){

//定义person类型的数组

Person[] persons=new Person[3];

persons[0]=new Person("张1",34);

persons[1]=new Person("张2",24);

persons[2]=new Person("张3",31);

//遍历元素

for(Person p:persons){

System.out.println(p.getName()+".."+p.getAge());

}

}

3)遍历集合(没有使用泛型)

publicvoid test3(){

List<String> list=new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

for(Object
str:list){

System.out.println(str);

}

}

4)遍历集合,使用泛型

List<String>list=new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

for(String
str:list){

System.out.println(str);

}

5)遍历集合,List中放置的javaBean

List<Person>List=new ArrayList();

List.add(newPerson(“aa”,23));

List.add(newPerson(“bb”,24));

List.add(newPerson(“cc”,25));

For(Personp:list)

{

System.out.println(p.getName()+” ”p.getAge());

}

6、遍历映射的元素

public void testMap(){

Map map=new
LinkedHashMap();

map.put("1","aaa");

map.put("2","bbb");

map.put("3","ccc");

1、//通过map.keySet()把键值取出,遍历

Set keys=map.keySet();

Iterator it=keys.iterator();

while(it.hasNext()){

String key=(String)it.next();

String value=(String)map.get(key);

System.out.println(key+"="+value);

}

2、//使用map.entrySet()方法

Set set=map.entrySet();

Iterator it=set.iterator();

while(it.hasNext()){

Map.Entry me=(Map.Entry)it.next();

String key=(String)me.getKey();

String value=(String)me.getValue();

System.out.println(key+"="+value);

}

3、//for循环

for(Object obj:map.entrySet()){

Map.Entry me=(Map.Entry)obj;

System.out.println(me.getKey()+"="+me.getValue());

}

可变参数

1、Java
允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参

2、在定义方法时,
在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值,
多个参数值被当成数组传入

3、可变形参只能处于形参列表的最后,
所以一个方法最多只能有一个长度可变的形参

4、调用包含一个可变形参的方法时,
可以为该形参传入多个参数或一个数组

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

示例代码:

第一种:

publicint sum(String []args)//(int … args)或(int
a, int… args) {

int sum=0;

for(int i:arrs){

sum +=i;

}

return sum;

}

调用时传值:

1)int sum=sum{1,2,3,4,5};

2)int[] array={1,2,3,4,5};

Sum=sum(array);

6、可变参数的类Arrays.asList()方法。分别传多个参、传数组的情况

多个参数:

List list=Arrays.asList("1","2","3");

System.out.println(list);

传数组:

Integer[] num={1,2,3,4};

List list2=Arrays.asList(num);

System.out.println(list2);

枚举类

1、 使用枚举原因:一些方法在运行时,需要的数据不能是任意的,而必须是一定范围内的值。

2、 实现枚举类:

1)通过 private
将构造器隐藏起来

2)这个类的所有可能实例都使用 public static final
修饰

3)属性不应允许被改动,
所以应该使用 private final 修饰

3、enum
关键字用于定义枚举类

枚举类也是一种特殊形式的Java类。

4、枚举类和普通类的区别:

1)使用 enum
定义的枚举类默认继承了 java.lang.Enum


2)枚举类的构造器只能使用 private
访问控制符

3)枚举类的所有实例必须在枚举类中显式列出(,
分隔 ; 结尾).
列出的实例系统会自动添加public static final
修饰

5、JDK5中扩展了switch语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型

6、若枚举只有一个成员,
则可以作为一种单例模式的实现方式

7、枚举类的属性:

1)枚举类对象的属性不应允许被改动,
所以应该使用 privatefinal 修饰

2)枚举类的使用private final
修饰的属性应该在构造器中为其赋值

3)若枚举类显式的定义了带参数的构造器,
则在列出枚举值时也必须对应的传入参数

枚举类常用的方法

8、Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:

1)name():返回此枚举常量的名称,在其枚举声明中对其进行声明

2)ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

3)valueof(Class enumClass, Stringname):返回带指定名称的指定枚举类型的枚举常量。

静态方法:

values() 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: