(14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型
Jdk1.5新特性之静态导入
jdk1.5新特性值静态导入
静态导入的作用:简化缩写
静态导入的作用:可以作用一个类的所有静态成员。
静态导入的格式:import static 包名.类名.静态的成员
import static java.util.Collections.sort; //静态导入指定的某个静态成员方法
import static java.util.Collections.*; 导入所有的静态成员
除了可以导入静态的成员方法,也可以静态的导入成员变量,比如System.out就是一个典型的静态成员,每次都写那么多的System是多么的麻烦,可以向下面这样静态导入:
Import static java.lang.System.out; 以后输出的时候可以直接使用out
注意事项:如果本类中有个方法和静态导入的方法,完全一样的时候,那么本类的方法将将会覆盖静态导入的方法,这个简记为就近原则。如果需要使用静态导入的成员,需要在静态成员前面加上类名。
Jdk1.5新特性之增强for循环
Iterable
|——Collection 单例集合的跟接口
之前说Collection是单例集合的根接口,其实上面还有一个超级根接口Iterable,实现这个接口的主要目的是为类拥有增强for循环的功能。
jdk1.5新个性值增强for循环
增强for循环的而作用:简化迭代器的书写格式。之所以这样说,事实上,增强for循环底层还是用迭代器实现的,所以,在增强for循环的过程中也是不能使用集合来修改元素的个数,慎之,慎之。
增强for循环的适用范围:如果使用增强for循环必须要实现Iterable接口的对象或者是数组对象。
增强for循环的格式:
for(变量类型 变量类型 : 遍历的目标)
{
}
通过实例可以很明显的看出来,增强for循环就是比迭代器用起来更简便一些
增强for循环的注意事项:
1、增强for循环的底层也是使用了迭代器获取的,只不过获取迭代器是有jvm来完成的,不需要我们获取迭代器而已,所以在使用增强for循环的时候,不允许改变集合的元素的个数。
2、迭代器遍历元素与增强for循环遍历元素的区别是:使用迭代器遍历结合的元素时可以删除集合的元素,当我们使用增强for循环时是不能做增删操作的,因为增强for循环中维护的迭代器对象在jvm手中。
3、普通的for循环和增强for循环的区别:普通for循环不需要遍历的目标,但是增强for循环一定要有遍历的目标,有时相当是一宗对空间的浪费。到底使用哪种方式(普通for,iterator,增强for),视实际情况
4、注意了,注意Map集合没有实现Iterable接口,所以不能直接使用增强for循环,如果要使用增强for循环要现借助于Collection的集合,先取出到Set中
Jdk1.5新特性之 可变参数
可变参数格式:
数据类型... 变量名
可变参数需要注意的细节:
1、如果一个函数的形参使用了可变参数之后,那么调用该方法的时候可以传递参数也可以不传递参数。
2、可变参数实际上是一个数组对象
3、可变参数必须位于形参中的最后一个。
4、一个方法最多只能有一个可变参数,很明显参数列表只有一个最后位置。
Jdk1.5新特性之 自动装箱与自动拆箱
java是面向对象 的语言,任何事物都可以用类来解决,sun就使用了
一些描述java中八种基本数据类型的数据类型
基本数据类型 基本类型的包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
基本数据类型对应包装类型的好处:
1、 包装类型,基本数据类型的数据也可以使用一些方法。
//整数变成字符串
System.out.println("整数转换成对应的字符串:"+Integer.toString(1));
//把整数转换成对应的禁止形式
System.out.println("转成二进制:"+Integer.toBinaryString(10));
System.out.println("十进制到八进制:"+Integer.toOctalString(10));
System.out.println("10到十六进制:"+Integer.toHexString(10));
//可以把字符串当成对应的禁止数据帮你转换
String data = "10";
int a = Integer.parseInt(data, 11); //进制的范围最大不超过36
System.out.println("a = "+a);
//自动装箱:自动把java的基本数据类型的数据转成对象数据类型
int tmp = 10;
Integer b = tmp;
//自动拆箱:把引用类型的数据转换成基本类型的数据
Integer c = new Integer(13);
int d = c;
System.out.println(d);
//引用的数据类型
Integer e = 127;
Integer f = 128;
System.out.println("e == f:"+(e==f)); syso true
//Integer类内部维护了一个缓冲数组存储了-128~+127这些数据在一个数组中,如果你获取的数据失落在这个范围之内的,
//就直接从该缓冲区内获取对应的数据 这个完全可以查看Integer的源码
Jdk1.5新特性之枚举类型
有关枚举可以参见另一篇文章,讲的很详细,地址:http://www.cnblogs.com/OliverZhang/p/6003178.html
说说从网上和javacore上看的有关枚举的一句经典的介绍,你看 enum Sez{man, woman;}就这么简简单单的一句都做了写什么呢?在java类库中存在这么一个类Enum这个类叫做枚举类,一旦使用enum关键字修饰Sex,那么Sex就变成了Enum的子类......
问题:某些方法所接受的数据必须是在固定范围之内的。
解决方案:自定义一个类,然后是私有化函数,在自定义类中创建类的对象。
Jdk1.5之后对以上问题提供了新的解决方案。
枚舉解決的問題:一些方法在運行時,他需要的數據不是任意的,而是在一定的範圍內的。
枚舉類的定義格式:
enum 類名
{
}
枚舉要注意的細節:(結合反編譯 javap -c -l -private Sex)
1、枚舉也是一個特殊的類
2、枚舉值默認的修飾符是public static final day19.Sex man;
3、枚舉值所屬的類的數據類型,枚舉值是指向了本類的對象。本例中是一個Sex型的。
4、枚举类的构造方法默认是private型的。
5、枚举类可以定义自己的成员变量与成员函数。
6、枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
7、枚举类可以存在抽象的方法,但是枚举值必须要实现抽象的方法。
8、枚举值必须要位于枚举类的第一个语句,否则报错。
枚举使用的范围:
方向,性别,季节,星期,尺码,,,,,,
switch 语句适用的数据类型:byte、char、short、int、String、枚举
注意:case语句后面的枚举值,只需要但写枚举值,不要声明这个枚举值属于哪个枚举类,否则报错。为什么呢?1因为在进switch(season)
语句的时候,这个时候就已经判断了枚举类型,2你不小心可能会传入别的枚举值比如Sex.man等
(14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型的更多相关文章
- JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)
JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7 ...
- java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生成对象 get set add System.arrayCopy()用于集合等的扩容
8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character ...
- 理解JDK1.5的自动装箱拆箱
JDK1.5的升级引入了装箱和拆箱概念,简单说就是为了简化书写. JDK1.5之前,创建Integer对象是需要这么写的 Integer i = new Integer("3") ...
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
---------- android培训.java培训.期待与您交流! ---------- 一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包 ...
- Java JDK5新特性-静态导入
2017-10-31 00:10:50 静态导入格式:import static 包名 ...类名.方法名: 也就说可以直接导入到方法名. 注意: 方法必须是静态的 如果有多个同名的静态方法,容易不知 ...
- 转:关于C++14:你需要知道的新特性
关于C++14:你需要知道的新特性 遇见C++ Lambda C++14 lambda 教程 C++11 lambda表达式 C++标准库:使用 std::for_each std::generate ...
- java13-5 JDK1.5以后的一个新特性和Integer的面试题
1.JDK5的新特性 自动装箱:把基本类型转换为包装类类型 自动拆箱:把包装类类型转换为基本类型 注意一个小问题: 在使用时,Integer x = null;代码就会出现NullPointerExc ...
- Spring4.1新特性——Spring MVC增强
目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...
- Java 14 令人期待的 5 大新特性,打包工具终于要来了
随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述. Java 13刚刚发布给开发人员使用不久,最新版本的JDK于2019年9月发 ...
随机推荐
- Android之Activity系列总结(一)--Activity概览
Activity 本文内容 创建 Activity 实现用户界面 在清单文件中声明 Activity 启动 Activity 启动 Activity 以获得结果 结束 Activity 管理 Acti ...
- 自述创业史 | XMove动作感应系统(二)
XMove是沙漠君和几个死党从2010年开始开发的一套人体动作捕捉系统,软硬件全部自行开发,投入了大量的精力,历经三年,发展四个版本.文章分上下篇,本文为下篇,前三代的故事在<光荣与梦想| XM ...
- 深入理解DOM事件类型系列第六篇——加载事件
前面的话 提到加载事件,可能想到了window.onload,但实际上,加载事件是一大类事件,本文将详细介绍加载事件 load load事件是最常用的一个事件,当页面完全加载后(包括所有图像.java ...
- Oracle_关联查询
1. 等值连接(Equijoin).非等值连接(Non-Equijoin).外连接(Outer join):-->左外连接-->右外连接.自连接(Self join) 交叉连接(Cross ...
- ArcGIS制图技巧系列(3)—让地图更有立体感
ArcGIS制图技巧系列(3)-让地图更有立体感 by 李远祥 在前面的章节中,我们已经介绍过各种的地图效果,如发光效果,山体阴影效果,植被填充效果等,所有的这些效果不外乎是各种技术的叠加和技巧的使用 ...
- C++学习的心路历程之心理障碍
断断续续的C++学习已经过了1年多了,可是,我还是没有迈出可以自如输出写点什么的那一步.甚至我因为这个老是怀疑自己的智商,我是真心想学懂,因为这个关系到我的就业,直接关系到我的饭碗.我是十分的着急,可 ...
- 网络攻击技术开篇——SQL Injection
本文转自: http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户数据库 ...
- MongoDB学习总结(六) —— 数据库备份和恢复
我们都知道数据库数据经常备份是多么的重要,MongoDB作为一个数据库系统,自然提供了完善,丰富而且好用的备份与恢复机制. 以下介绍三种数据库备份和恢复的方式 > 数据目录直接拷贝 数据库目录直 ...
- Python dir()/help()
dir() dir()用来查询一个类或者对象所有属性.你可以尝试一下 print dir(list) 返回的结果: ['__add__', '__class__', '__contains__', ' ...
- MASM32快速起步
MASM32是一个免费的软件程序,让您编辑Microsoft宏汇编程序(MASM)代码从一个基本的文本界面.它强调MASM代码各部分以不同的颜色,使其更容易扫描和检测错误.它提供了一个简单的布局程序员 ...