JDK1.5的新特性(1)

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来。

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

一、概述

其实说起来jdk1.5已经出现很长时间了,现在再说它是新特性未免有些过时,事实上这一部分知识从新颖性上确实不足,但是从实用性上却是值得我们好好研究。

些特性包括静态导入、可变参数、增强形for循环、自动拆箱与装箱、枚举、反射、javaBean内省。

那么之后就依次介绍这些新特性。

二、静态导入

·1,语法

静态导入的知识比较简单,就是在导入包的语句中的import关键字后面加static关键字。

比如:import static java.lang.Math.PI;

a,以前没有静态导入的时候写法

System.out.println(Math.random());

b,有静态导入的写法

import static java.lang.Math.PI;
import static java.lang.Math.random;
public class TextDemo {
	public static void main(String[] args) {
		System.out.println(PI);
		System.out.println(random());
	}
}

2,优缺点

静态导入虽然简化了我们的书写,但也容易造成不必要的混淆。因为看不到方法的所属,而且也不能导入不同包中相同名称的方法,所以并不推荐大量使用静态导入。

三、可变参数

1,概述

可变参数顾名思义,就是使程序员可以声明一个接受可变数目参数的方法。

比如说我们要做一个简单的加法函数

add(1,2)

add(1,2,3)

add(1,2,3,4)

add(1,2,3,4,5)

因为这个方法接受的参数个数不确定,按照我们以前的做法要写很多个方法重载来完成,显然很麻烦。如果使用可变参数的话我们只需要一个函数就行了

2,例如

public class TextDemo {
	public static void main(String[] args) {

		System.out.println(add(1, 2));
		System.out.println(add(1, 2, 3));
		System.out.println(add(1, 2, 3, 4));
		System.out.println(add(1, 2, 3, 4, 5));
	}

	private static int add(int i, int ... nums) {
		int sum = i;
		for(int num : nums){
			sum =sum + num;
		}
		return sum;
	}
}

,3,注意:

a,可变参数只能出现在参数列表的最后

b,...位于类型和变量之间,有无空格均可。

c,根据如下代码提示可以看出,int ... nums 其实隐含的是声明了一个数组。

四、增强型for循环

增强型for循环在上个例子中其实就已经用到了,事实上它也确实挺好用的。

1,语法

for(数据类型变量名 :被遍历的集合或者数组) {...}

2,举例

上面有一个迭代数组的例子,这里就再举一个集合的吧

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

public class TextDemo {
	public static void main(String[] args) {
		ArrayList<String> arrs = new ArrayList<String>();
		arrs.add("aaa");
		arrs.add("bbb");
		arrs.add("ccc");

		//传统迭代方法
		Iterator it = arrs.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//增强for循环迭代方式
		for(String arr : arrs){
			System.out.println(arr);
		}
	}
}

3,注意

增强型for循环对集合进行遍历,只能获取集合元素。但是不能对集合进行操作。

传统for遍历数组时有索引,如果想要对某一索引操作还是需要用传统for循环。

五、自动拆箱与装箱

在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。

自动装箱:基本类型自动转为包装类.(int >> Integer)

自动拆箱:包装类自动转为基本类型.(Integer >> int)

public class TextDemo {
	public static void main(String[] args) {
		int i = 2;
		ArrayList<Integer> arrs = new ArrayList<Integer>();
		arrs.add(i);//自动装箱,自动将int转换成Integer

		//-------------------------------------------\		Integer j = 3;
		int num = 2 + j;//自动拆箱,将Integer自动转成int
	}
}

六、枚举

1,概述

用过c++的人肯定对枚举不陌生,现在java也加入了枚举。

枚举作用就是让某个类型的变量取值只能为若干固定的值,否则,编译器就会报错。

枚举可以让编译器在编译时就能控制源程序中填写的非法值。

2,格式

public enum weeks
{
   SUN, MON, TUE, WEN, THI, FRI, SAT;
}

3,常见方法

		weeks day = weeks.MON;
		System.out.println(day);
		System.out.println(day.name());
		System.out.println(day.toString());
		System.out.println(weeks.FRI);
		System.out.println(day.ordinal());//该元素在所属的位置
		System.out.println(day.valueOf("FRI"));//将字符串转化为枚举常量
		System.out.println(day.values().length);//获取长度

,4,带有构造函数方法的枚举

枚举可以看做一个内部类,类有构造方法,枚举也不例外

5,注意:

a,但是枚举的构造只能私有,不能公有,因为枚举值是public static final的常量,这样可以保证外部代码无法重新构造枚举类的实例。

b,构造器只是在构造枚举值的时候被调用。

比如:

<span style="white-space:pre">	</span>public static void main(String[] args) {
<span style="white-space:pre">		</span>weeks day = weeks.MON;
<span style="white-space:pre">	</span>}

<span style="white-space:pre">	</span>public enum weeks {// 这里的枚举是一个内部类
<span style="white-space:pre">		</span>SUN, MON, TUE, WEN, THI(1), FRI, SAT;//这里的THI(1)就是在调用枚举的有参构造函数
<span style="white-space:pre">		</span>private weeks() {
<span style="white-space:pre">			</span>System.out.println("first");
<span style="white-space:pre">		</span>}

<span style="white-space:pre">		</span>private weeks(int i) {
<span style="white-space:pre">			</span>System.out.println("second");
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}

返回的结果调用了7此构造函数

6,带有方法的枚举

public class TextDemo {
	public static void main(String[] args) {
		TrafficLamp lamp =TrafficLamp.Red;
		System.out.println(lamp.nextLamp().toString());
	}	

	// 交通灯
	public enum TrafficLamp {
		Red,Yello,Green;

		public  TrafficLamp nextLamp() {
			if (this == Yello) {
				return Red;
			}
			if (this == Red) {
				return Green;
			}
			if (this == Green) {
				return Yello;
			}
			return null;
		}

	}
}

7,带有抽象方法的枚举

// 交通灯
	public enum TrafficLamp {
		Red(60){//内部类中的匿名内部类,表示红灯60s
			@Override
			public TrafficLamp nextLamp() {

				return Green;

			}

		},Yello(10) {
			@Override
			public TrafficLamp nextLamp() {

				return Red;

			}
		},Green(60) {
			@Override
			public TrafficLamp nextLamp() {

				return Yello;

			}
		};

		public abstract TrafficLamp nextLamp();

		private int time;
		private TrafficLamp(int time) {
			this.time = time;
		}
	}

七、最后

JDK1.5的新特性,都是与我们实际开发有关的有用功能,由于篇幅有限,所以写成多篇。

时间: 2024-11-10 15:25:53

JDK1.5的新特性(1)的相关文章

JDK1.5的新特性:javabean、注解类、类加载器

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

多线程(JDK1.5的新特性互斥锁)(掌握)

多线程(JDK1.5的新特性互斥锁)(掌握)1.同步·使用ReentrantLock类的lock()和unlock()方法进行同步2.通信·使用ReentrantLock类的newCondition()方法可以获取Condition对象·需要等待的时候使用Condition的await()方法, 唤醒的时候用signal()方法·不同的线程使用不同的Condition, 这样就能区分唤醒的时候找哪个线程了举例: public static void main(String[] args) { f

JAVA JDK1.5-1.9新特性

JAVA JDK1.5-1.9新特性 1.5 1.自动装箱与拆箱: 2.枚举(常用来设计单例模式) 3.静态导入 4.可变参数 5.内省 1.6 1.Web服务元数据 2.脚本语言支持 3.JTable的排序和过滤 4.更简单,更强大的JAX-WS 5.轻量级Http Server 6.嵌入式数据库 Derby 1.7 1,switch中可以使用字串了 2.运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 4

jdk1.5-1.10新特性

从网上搜集摘录的jdk特性,在这里记录下来以便自我学习. jdk5新特性    1.自动装箱和拆箱    2.枚举    3.静态导入    4.可变参数    5.內省       是Java语言对Bean类属性.事件的一种缺省处理方法.例如类A中有属性那么,那我们可以通过getName,setName来得到其值或者设置新的值.通过getName/setName来访问name属性,这就是默认的规则.Java中提供了一套API用来访问某个属性的getter,setter方法,通过这些API可以使

JDK1.5的新特性(2):反射

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

jdk1.8排序新特性

import java.util.Collections;import java.util.List;import java.util.ArrayList;import java.util.Comparator; public class Java8Tester { public static void main(String args[]){ List<String> names1 = new ArrayList<String>(); names1.add("Googl

JDK1.9的新特性集合

原文地址:https://www.cnblogs.com/wulinmiao/p/12153011.html

JDK各个版本的新特性jdk1.5-jdk8

JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性.希望能给予帮助. JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue(

JDK1.5-1.8各版本新特性

JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性.希望能给予帮助. JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue(