`
jiagou
  • 浏览: 2516606 次
文章分类
社区版块
存档分类
最新评论

简单的java静态导入

 
阅读更多

静态导入

JDK 1.5 增加的静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)
语法:
Import static 包名.类名.静态属性|静态方法|*
静态导入语句使用 import static 语句
导入指定类的单个静态属性:
import static java.lang.System.out
导入指定类静态方法 import static java.lang.Math.max
导入指定类全部静态属性和方法
import static java.lang.Math.*

例:

package com.hbsi.base;


import static java.lang.System.out;
import static java.lang.Math.*;


public class Demo1 {


/**
* @param args
*/
public static void main(String[] args) {
out.println("hello world");
System.out.println(PI);
System.out.println(Math.sqrt(4));



}


}

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

典型应用:
List list = new ArrayList();
list.add(1);
int j = (Integer)list.get(0);

例:

package com.hbsi.base;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class Demo2 {


/**
* @param args
*/
public static void main(String[] args) {
Integer i=1; //自动装箱
//Integer i=new Integer(1);

int j=i; //自动拆箱

//应用
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()){
int num=(Integer)it.next();
System.out.println(num);
}

//int num=(Integer)list.get(0);


}


}

增强for循环

引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!
因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上
使用 foreach 循环遍历数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素, foreach 循环自动遍历数组和集合的每个元素
语法格式:
for ( type 变量名:集合变量名 ) { … }
for(type varName : array | collection){
//varName 自动迭代访问每一个元素
}


从 JDK 1.5 开始, Java 允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参
若在定义方法时, 在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值, 多个参数值被当成数组传入
可变形参只能处于形参列表的最后, 所以一个方法最多只能有一个长度可变的形参
调用包含一个可变形参的方法时, 可以为该形参传入多个参数或一个数组
调用可变参数的方法时, 编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数

例:

package com.hbsi.base;


import java.util.Arrays;
import java.util.List;


import org.junit.Test;


public class Demo4 {


public static void main(String [] args){
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);

int [] num1={1,2,3,4};
List list3=Arrays.asList(num1);
System.out.println(list3);


}

@Test
public void testsum(){
/*int[] arr={1,2,6,9};
System.out.println(sum(arr));*/


int sum1=sum(1,2,3,4,5);
System.out.println(sum1);
}


public int sum(int...arrs){
int sum=0;
for(int i:arrs){
sum +=i;
}
return sum;
}

public void test1(int...a){

}


}

枚举类:

在Java中,枚举类型本质上其实就是一个类,枚举中的常量都是该枚举类型的实例。虽然枚举类型有一些限制,比如不能再派生出子枚举类型,不能调用构造函数,不过我们仍然可以在枚举类型中定义构造函数、字段和方法 
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
JDK 5新增的 enum 关键字用于定义一个枚举类
枚举类练习
 设计一个Student类
 class Student{
 private String name;
 private Grade grade;
 ……}
 要求:学生的grade只能是a,b,c,d,e五个级别。可以给学生设置成绩,并可以输出学生成绩情况(优,良,中,可,差)
源码如下:
package com.hbsi.enum3;


public class Student {
	
	private String name;
	private Grade grade;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	
	
	


}


enum Grade{
	A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");
	
	private String value;
	
	private Grade(String value){
		this.value=value;
	}


	public String getValue() {
		return value;
	}
	
}


测试用码:
package com.hbsi.enum3;


public class Demo1 {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Student s=new Student();
		s.setName("张三");
		s.setGrade(Grade.A);
		System.out.println(Grade.B.getValue());


	}


}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics