Java高新技术  JDK1.5的新特性



知识概要:

                (1)静态导入

(2)可变参数

(3)增强for循环

(4)基本数据类型的自动拆箱和装箱

静态导入

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

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

                  语法举例:

                  import static java.lang.Math.sin;

                  import static java.lang.Math.*;

代码示例

<span style="font-size:18px;">package cn.itheima.day1;

import static java.lang.Math.*;
class StaticImport
{
public static void main(String[] args)
{
System.out.println(max(3,6));
System.out.println(abs(-6));
}
}
</span>

好处:使用静态导入可以简化程序对类静态属性和方法的调用,并且简化了程序代码的书写。

弊端:

虽然JDK中出现了这个新特性,但是如果我们在自己的类中定义 了一个方法,与导入的类中的静态方法一样。

那Java虚拟机怎么知道用的是那个类的方法呢?所以虽然出现了这个新特性,但是建议还是别使用。

注意:如果将Javac设置为了Java 5.0以下,那么静态导入等JDK
1.5的特性都会报告错误。

可变参数

问题:一个方法接受的参数个数不固定,例如:

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

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

可变参数的特点:  只能出现在参数列表的最后;...位于变量类型和变量名之间,前后有无空格都可以;

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

package cn.itheima.day1;

class VarableParameter
{
public static void main(String[] args)
{
System.out.println(add(2,3));
System.out.println(add(2,3,3,4));
System.out.println(add(22,2,2,2));
}
public static int add(int a ,int...arr)
{
int sum = 0; /*for (int x = 0;x<arr.length ;x++ )
{
sum+=arr[x];
}*/
for (int arg: arr )
{
sum +=arg;
}
return sum ;
}
<span style="font-size:18px;">}
</span>

可变参数的原理:

调用可变参数的方法时, 编译器将自动创建一个数组保存传递给方法的可变参数。

因此,程序员可以在方法体中以数组的形式访问可变参数可变参数只能处于参数列表的最后。

所以一个方法最多只能有一个可变参数。

可变参数特点与注意事项:
1、可变参数只能出现在参数列表的最后。
2、可变参数只能在参数中只能有一个。
3、可变参数位于变量类型和变量名之间,前后有无空格都可以。
4、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

增强for循环:

引入增强for循环的原因:

在JDK 1.5 以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!

因此JDK 1.5 中定义了一种新的语法——增强for循环,以简化此类操作。

语法格式:

for(修饰符 变量类型 变量  :需迭代的数组或集合){}

语法:

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

                注意事项:

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

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

                举例: 

                public static int add(int x,int ...args)

{

                         int sum = x;

                         for(int arg:args) {

                         sum += arg;

                                                   }

                         return sum;

                  }

自动装箱和拆箱

               自动装箱:

               Integer num1 = 12;

自动拆箱:

               System.out.println(num1 + 12);

               基本数据类型的对象缓存:

               Integer num1 = 12;

               Integer num2 = 12;

               System.out.println(num1 == num2);

Integer num3 = 129;

               Integer num4 = 129;

               System.out.println(num3 == num4);

Integer num5 = Integer.valueOf(12);

               Integer num6 = Integer.valueOf(12);

               System.out.println(num5 == num6);

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

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

byte常量池

对于这些基本数据整数要装箱成Integer对象的时候,如果这个数据在1字节(-128
~ 127)之内的数字,就缓存在byte常量池,下次再用到的时候,先看池子里面有没有,如果有直接从池子里面拿来用。这样节省了内存空间。

这是一种设计模式叫做享元模式。(flyweight)

享元应用:

1、Word中输入英文字母,可创建26对象。

每个对象值是出现的位置不同(坐标),所以可用一个对象调用位置的方法。

如,字母Q:Q.zuobiao(int x,int y),将高度重复使用的char类型的字母Q封装成一个对象使用。

2、图标:Window下的文件夹图标,只是名称属性不同,包含了很多其他相同属性,那么可以应用享元模式。

package cn.itheima.day1;

class AutoBox
{
public static void main(String[] args)
{
Integer m = 128;
Integer n = 128; System.out.println("m==n "+(m==n)); Integer a = 127;
Integer b = 127; System.out.println("a==b "+(a==b)); }
}


Java高新技术 JDK1.5之新特性的更多相关文章

  1. java 1.7 1.8新特性

    在JDK1.7的新特性方面主要有下面几方面的增强:1.jdk7语法上1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头.1.2 Switch语句支持string类型1.3 Try-wit ...

  2. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

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

    多线程(JDK1.5的新特性互斥锁)(掌握)1.同步·使用ReentrantLock类的lock()和unlock()方法进行同步2.通信·使用ReentrantLock类的newCondition( ...

  4. Java学习:JDK8的新特性

    Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...

  5. Java 各个版本中的新特性

    新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...

  6. JAVA JDK1.5-1.9新特性

    1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省 1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量 ...

  7. java--加强之 jdk1.5简单新特性,枚举,注解

    转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9944041 Jdk1.51新特性(静态导入,可变参数,加强for循环,自动拆装箱) 08.ja ...

  8. 各版本JDK1.5-1.8新特性

    概述 一jdk15新特性 泛型 foreach 自动拆箱装箱 枚举 静态导入Static import 元数据Metadata 线程池 Java Generics 二jdk16新特性 Desktop类 ...

  9. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

随机推荐

  1. Linux-chown命令(1)

    chown  [chang owner]:更改文件的属主,也就是指定文件的拥有者改为另一个指定的用户或组. 命令格式: chown [选项]... [用户][:[组]] 文件... 例子:  sudo ...

  2. Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)

    注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...

  3. 从web图片裁剪出发:了解H5中的Blob

    刚开始做前端的时候,有个功能卡住我了,就是裁剪并上传头像.当时两个方案摆在我面前,一个是flash,我不会.另一个是通过iframe上传图片,然后再上传坐标由后端裁剪,而我最终的选择是后者.有人会疑惑 ...

  4. js page click

     DataTables  Editor Your account: Login / Register Examples Manual Reference Options API Events Butt ...

  5. 初入PHP,(for循环~水仙花数)

    找出100-999之间的所有"水仙花数".所谓水仙花数是指一个三位 数,各位数字的立方和等于该数本身.(如153次方=1的3次方+5的3次方+3的3次方)并输出这些数字 想想153 ...

  6. 第02周-Java作业评价

    1. 本周作业简评与建议 作业存在的问题 格式上还是存在问题,但是比较第一次有很大的进步. 答题上,有的同学还是很敷衍,题目要求有分析过程,但是只写一个false,true,没有分析.也比较缺少自己的 ...

  7. 201521123081《Java程序设计》 第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  8. 201521123090《JAVA程序设计》第二周学习总结

    1. 本章学习总结 java基本数据类型 String类对象使用 枚举类型及switch分支 容器的概念 2. 书面作业 Q1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代 ...

  9. 201521145042《Java程序设计》第14周学习总结

    MySql操作视频与数据库相关jar文件请参考QQ群文件. 本次作业参考文件 数据库PPT 0. 本周课程设计发布 Java课程设计 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总 ...

  10. websphere部署 hibernate jpa & Error 500: javax/persistence/OneToOne.orphanRemoval()Z

    WebSphere 7 & Javax/Persistence/OneToMany.OrphanRemoval() Error 文章出处:http://www.mkyong.com/websp ...