Java高新技术 JDK1.5之新特性
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之新特性的更多相关文章
- java 1.7 1.8新特性
在JDK1.7的新特性方面主要有下面几方面的增强:1.jdk7语法上1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头.1.2 Switch语句支持string类型1.3 Try-wit ...
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- 多线程(JDK1.5的新特性互斥锁)
多线程(JDK1.5的新特性互斥锁)(掌握)1.同步·使用ReentrantLock类的lock()和unlock()方法进行同步2.通信·使用ReentrantLock类的newCondition( ...
- Java学习:JDK8的新特性
Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...
- Java 各个版本中的新特性
新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...
- JAVA JDK1.5-1.9新特性
1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省 1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量 ...
- java--加强之 jdk1.5简单新特性,枚举,注解
转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9944041 Jdk1.51新特性(静态导入,可变参数,加强for循环,自动拆装箱) 08.ja ...
- 各版本JDK1.5-1.8新特性
概述 一jdk15新特性 泛型 foreach 自动拆箱装箱 枚举 静态导入Static import 元数据Metadata 线程池 Java Generics 二jdk16新特性 Desktop类 ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
随机推荐
- IBM与麻省理工学院联合建立AI实验室 承诺投资2.4亿美元
IBM和麻省理工学院将通过今天宣布的一个新的联合实验室共同努力,对人工智能进行广泛的研究.麻省理工学院IBM沃森AI实验室将重点关注四个研究支柱:开发AI算法,使用物理学来创建AI计算的新硬 ...
- 【集美大学1411_助教博客】团队作业2——需求分析&原型设计 成绩
首先要向各位同学道歉,最近助教的工作较多,并且伴随着频繁的出差,评论博客和评分都不及时,以致于同学们都没有得到反馈,在此我要表示歉意.其次,对于第二次团队作业,有两个团队没有提交到班级博客中但按时完成 ...
- java中覆盖必须满足的约束
子类方法的名称,参数何返回类型必须与父类一致. 子类方法不能缩小父类方法的访问权限 子类方法不能抛出比父类方法更多的异常 方法覆盖只存在于子类和父类,同一个类中方法只能被重载 父类的静态方法不能被子类 ...
- 201521123061 《Java程序设计》第八周学习总结
201521123061 <Java程序设计>第八周学习总结 1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 主要是应用到了list中的a ...
- 201521123056 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 1.1 思维导图: 2. 书面作业 本次作业题集集合 1. List中 ...
- 201521123050 《Java程序设计》第8周学习总结
1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 在删除元素时,要注意后续元素位置的前移 2.统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 ...
- 201521123027 <iava程序设计>第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- Java-高效地使用Exception-实践
注:本文翻译自Exceptional practices,共分为3节.该文章从实践的角度非常透彻地解释了为什么要处理异常,以及如何处理异常.这些都是那些只会介绍trycatchfinally语法的教材 ...
- MySql各种查询
1.简单查询 select * from info; select Code as '代号',name as '姓名' from info; 2.条件查询 select * from car wher ...
- 史上最全CentOS安装教程,图文结合
这是我最近整理的一份最全的CentOS安装步骤,亲自测试步骤,步步都有截图,步骤清晰.按此教程可轻松装机,并且安装成功的主机能访问外部网络. 闲话不说,首先介绍一下本教程用到工具: VMware Wo ...