文档章节

Java高级部分笔记-------Java5.0的新特性

查封炉台
 查封炉台
发布于 2014/04/21 16:44
字数 1369
阅读 615
收藏 9

  • 静态导入

1.1  JDK 1.5 增加的静态导入语法用于导入类的某个静态属性或方法。使用静态导入可以简化程序对类静态属性和方法的调用。

1.2 语法:Import static 包名.类名.静态属性|静态方法|*

1.3 例如:

StaticImport.java

package com.itcast.staticimport;
import static java.lang.Math.max;
import static java.lang.Math.abs;
public class StaticImport {
	public static void main(String[] args) {
		System.out.println(max(15,19));
		System.out.println(abs(41));
	}
}
//output:19
         41
//

      

  • 自动拆箱和装箱

        2.1 JDK5.0的语法允许开发人员把一个基本数据类型直接赋给对应的包装类变量,或者赋给Object类型的变量,这个过程称为自动装箱.

        2.2 自动拆箱和自动装箱与之相反,即把包装类对象直接赋给一个对应的基本类型变量.

        2.3 典型代码

package com.blog;

public class AutoBox {

	public static void main(String[] args) {
		Integer ibox=3;   //装箱
		System.out.println(ibox+12);  //拆箱
		Integer i2=13;
		Integer i3=13;
		//-128~127 true
		System.out.println(i2==i3);
		//other false
	}
}
//output:15
         true
~~//

  • 增强for循环

       3.1引入增强for循环的原因:在JDK以前的版本中,遍历数组或者集合中的元素,需要先获得数组的长度或者集合的迭代器,比较麻烦.

      3.2 因此JDK5.0定义了一种新的语法---增强for循环,以简化次操作.增强for循环只能用在数组,或实现Iterator接口的集合类上.

     3.3 语法格式

           for(变量类型 变量  :需要迭代的数组或集合)

package com.blog;

public class ForLoop {
	public static void main(String[] args) {
		Integer arrs[] = {1,5,40,84};
		for(Integer arr: arrs){
			System.out.print(arr+",");
		}
	}
}
//output:1,5,40,84,

  • 可变参数

      4.1 测试JDK中具有可变参数的类Arrays.asList()方法。分别传多个参、传数组,传数组又传参的情况。

            注意:传入基本数据类型数组的问题。

       4.2  从JDK 5开始, Java 允许为方法定义长度可变的参数。语法:

public void foo(int … args){

}

              注意事项:

       4.3 调用可变参数的方法时, 编译器将自动创建一个数组保存传递给方法的可变参数,因此,程序员可以在方法体中以数组的形式访问可变参数,可变参数只能处于参数列表的最后, 所以一个方法最多只能有一个长度可变的参数

package com.blog;
         /**
          * Variable Paramter 
          * foreach
          * @author lisai
          * @version 1.0
          */
public class VariableParamter {
	public static void main(String[] args) {
		System.out.println(add(2,3));
		System.out.println(add(3,5,8,40));
	}
	public static int add(int x,int...paramters){
		int sum=x;
		for(int paramter:paramters){
			sum+=paramter;
		}
		return sum;
	}
}
//output:5
         56

  • 枚举类

        5.1 为什么需要枚举?

        一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。

        5.2 JDK 5新增的 enum 关键字用于定义一个枚举类。

        5.3  枚举类具有如下特性:

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

            枚举类中声明的每一个枚举值代表枚举类的一个实例对象。

            与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有                的(这点不难理解)。

            枚举类也可以实现接口、或继承抽象类。

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

            若枚举类只有一个枚举值,则可以当作单态设计模式使用

       5.4 在自己看来枚举对象就相当于public static final声明的变量

package com.itcast.enums;
public class EnumTest {
	public static void main(String[] args) {
		WeekDay weekDay=WeekDay.MonDay;
		System.out.println(weekDay.next());
	}
}
abstract class  WeekDay{
	private WeekDay(){}
	public static final WeekDay SUNDAY=new WeekDay(){

		@Override
		public WeekDay next() {
			return MonDay;
		}
		
	}; 
	public static final WeekDay MonDay=new WeekDay(){

		@Override
		public WeekDay next() {
			return SUNDAY;
		}	
	}; 
	public abstract WeekDay next();
	@Override
	public String toString(){
		return this==SUNDAY?"SUNDAY":"MonDay";
	}
}
//带构造方法的枚举类
enum WeekDayEnum{
	SUNDAY(1),MONDAY;
	//构造方法必须私有
    private WeekDayEnum(){
	}
    private WeekDayEnum(int length){
    	
    }
}
//output:SUNDAY

  • 注解

注解(Annotation): @SuppressWarnings("deprecation")
                   @Override
       元注解:@Retention(RetentionPolicy.RUNTIME)
             @Target({ElementType.METHOD,ElementType.TYPE})
       注解生命周期阶段存在:Java源文件----->class字节码文件----->内存(运行时注解)
                   @Retention(RetentionPolicy.SOURCE)
                   @Retention(RetentionPolicy.CLASS)
                   @Retention(RetentionPolicy.RUNTIME)
                   Default存在class字节码文件
       为注解添加属性:
                   @Retention(RetentionPolicy.RUNTIME)
                   @Target({ElementType.METHOD,ElementType.TYPE})---作用在类,方法等上.
                   public @interface ItcastAnnotation {
	                     String color();
                   }
                   @ItcastAnnotation(color="蓝色")

package com.itcast.comment;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
	String color();
}

package com.itcast.comment;
@ItcastAnnotation(color="蓝色")
public class AnnotationTest {
	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		System.runFinalizersOnExit(true);
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
			ItcastAnnotation annotation=AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
			System.out.println(annotation);
			System.out.println(annotation.color());
		}
	}
}

注解更多详细知识点:http://www.ibm.com/developerworks/cn/java/j-annotate1/

在学习Java高级部分,首先学习了Java5.0的新特性.虽然Java的更高级版本(8.0)出现,但是我觉得这些基础的知识是很有用的.这些知识都是在开发中频繁用到的.

  JDK 6.0的新添特性:http://bbs.tech.ccidnet.com/read.php?tid=312315&fpage=0&toread=&page=1

  相关API:http://blog.csdn.net/lanniao1/archive/2007/08/25/1759047.aspx

  JDK 7.0的新特性的相关介绍:http://www.360doc.com/content/12/1013/23/820209_241321372.shtml

最后,还是希望自己英文慢慢地变好,那样的话就可以直接读取Java官网的API来发现Java8新特性.----------------

© 著作权归作者所有

查封炉台
粉丝 49
博文 56
码字总数 138491
作品 0
景德镇
程序员
私信 提问
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
java 7 入门书籍

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版...

modernizr
2014/05/15
6.9K
9
2018 年 Java 平台发布计划之新特性展望

过去一年 Java 发生了许多变化,其中一部分原因在于推迟了一年的 Java 9 的推出。但是,随着时间的推移,人们发现,比起 Java 9 的推出,Java 版本发布周期的变更意义更为重大。 前段时间公布...

达尔文
2018/01/14
3.8K
7
Scala学习笔记(1):Scala语言的来源

Scala是“scalable language”,也就是“可扩展”语言是意思。Scala是一种静态类型语言,它融合了函数式编程和面向对象编程和的思想,前者让它可以很方便快速地构建可用程序,后者则让其具有...

chengyao2
2013/04/28
0
0
Java 书籍 Top 10

陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Third Edition (by James Gosling) 本书...

JavaGG
2009/09/21
12.5K
20

没有更多内容

加载失败,请刷新页面

加载更多

Nginx性能调优

Nginx配置参数优化 Nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求。以下的配置参数是借鉴网上的一些调优参数,仅作为参考,不见得适于你的线上业务。 work...

wzb88
18分钟前
2
0
在 Linux 下确认 NTP 是否同步的方法

NTP 意即网络时间协议Network Time Protocol,它通过网络同步计算机系统之间的时钟。NTP 服务器可以使组织中的所有服务器保持同步,以准确时间执行基于时间的作业。NTP 客户端会将其时钟与 ...

Linux就该这么学
24分钟前
3
0
《剖析Java线程到底是并行还是并发》

我们都知道线程是最基本的执行单元,包含在进程内部,也就是说,进程是由线程构成。那么当我们编写多线程的时候,大部分教科书上都是称其为并发,而非是并行,这2种截然不同的概念,完全误导...

hiuh
48分钟前
0
0
backbone源码学习中的知识点整理(一)

一、self var root = (typeof self == 'object' && self.self === self && self) || (typeof global == 'object' && global.global === global && global); 现代web之前的window.self和self ......

学霸猫
今天
4
0
linux高级文件数据操作

cat :显示切割数据 -f:选择显示切割列; -s:比现实没有分割的行 -d:自定义分隔符 cut -d ‘ ’-f 1,3 a.txt : 以空格为分隔符显示第一列和第三列;这种情况不能分隔的行也会显示出来,如...

为何不可1995
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部