基础加强:JDK新特性
来源:互联网 发布:男性特点知乎 编辑:程序博客网 时间:2024/06/04 18:14
- Alt-down arrow: 将光标所在行或选中多行向下移动。Alt-up arrow会向上移动。
- Ctrl+/: 对一行注释或取消注释。对于多行也同样适用。
- Ctrl+1:自动修正(最经典的快捷键)
- Ctrl+D: 删除当前行或者选中行
- Ctrl+Alt+↓ 复制当前行到下一行(复制增加) 。Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
- Ctrl+Shift+X 把当前选中的文本全部变成大写。Ctrl+Shift+Y 把当前选中的文本全部变成小写
- Alt+Shift+R 给变量重命名 (尤其是变量和类的Rename,比手工方法方便很多)
- Alt+/:内容助手,提供任意可以搭配的内容,相当有用
- Alt+Shift+Z:提供可选用的模板代码
步骤:Window--->Preferences--->Java--->Editor--->Templates <====> Alt + Shift +Z
补充Name和Pattern(模式):
调用该模块后line_selection是指选中行的位置, cursor是指光标的位置二、JDK5的新特性
1、静态导入
由于像Collections和Arrays这些工具类中只有静态方法,每次使用其中成员时都要用“类名.方法名”来调用。JDK1.5为了简化书写引入了静态导入。import static两个关键字一起使用,然后在文件中直接采用静态方法名来访问某个类下的静态成员从而省去“类名.”这个前缀。
例如:
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。import static java.util.Collections.*;//导入的是Collections这个类中的所有静态成员。当静态导入后,在使用Collections和Arrays中的成员时可以直接使用。如:
class StaticImport //extends Object{public static void main(String[] args) {int[] arr = {3,1,5};sort(arr);int index = binarySearch(arr,1);out.println(Arrays.toString(arr));//注意,虽然静态导入,但此处Arrays不可省略
/*因为类任何类都继承了Object类,Object中也有toString方法,并且不带参数。此处如果不写“Arrays.”JVM不知道改掉用谁中的toString方法。所以会报错。*/}}2、可变参数
- 只能出现在参数列表的最后
- ... 位于参数类型和参数名之间,前后有无空格都可以
- 依据可变参数使用的实质,可以在可变参数所在的方法中以数组的形式来操作这个可变参数。
当出现可变参数数组之后,如上程序可以简化书写。public class Test { public static void main(String[] args) { System.out.println(add(2,3)); System.out.println(add(2,3,5)); } public static int add(int num1, int num2){ return num1 +num2; } public static int add(int num1, int num2, int num3){ return num1 +num2+ num3; }}
3、享元设计模式public static void printArrayII(int...args){ int sum =0;
for(int i=0; i< args.length; i++)//以数组的形式来操作可变参数
sum+=args[i];
return sum;
}
}
Integer i1 =137;//自动装箱成整形对象
Integer i2 =137;//自动装箱成整形对象
//由于i1和i2指向了两个new出来的堆内存的对象,所以两者的内存地址一定不同,所以 ==判断为false
System.out.println( i1==i2);//打印出false
i1 =13;
//13在[-128, +127]之间,并且第一次出现,所以相当于i1 =new Integer(13);此时JVM就会将这堆内存的对象存放到缓存池中
i2 =13;
/*这时,13再一次出现,JVM此时去缓存池中找有没有值为13的整形对象。发现有,就把这个i2指向这个堆内存的对象。 此时,i2和i1指向了同一个地址的对象,所以 ==判断结果为true*/
System.out.println( i1==i2); //打印出true
享元模式思想的体现:
当一个整数大小在一个字节B(-128~ +127)之间的时候,被自动包装为相应的对象,JVM就会将这些基本数据类型对应的对象存入缓存池中,以便程序的其他部分复用这个对象。因为Java认为值很小的对象使用频率很高。
——(享元)常用的东西,存放到公共空间,大家分享,节省内存
4、枚举
(1)枚举概述
- 枚举的出现让变量取固定的几个值(通过是优化构造函数,使枚举类的取值在构造时就确定下来),否则编译报错。
- 每一个枚举成员在程序内部都是全局常量(被public static final修饰)
- 枚举中的常量指向一个匿名内部类实例
- 定义枚举元素时候不用书写类型,由enum关键字保证这个常量的类型
- 省略public static final的书写形式
- 省略私有化构造函数
- 省略采用匿名内部类创建枚举常量的成员
- 获取
- 获取成员的名字:name() 默认值就是枚举成员的标示符名字(非静态)
- 获取成员在所有枚举元素中的排名:ordinal() 按照定义时候书写顺序的排行(非静态)
- 获取所有枚举成员构成的数组:values() (静态)
- 转换
- 将字符串转化为枚举类型的元素:valueOf(Stringname)
- 枚举成员常量必须位于枚举类的所有其他成员(构造函数,其他方法)之前。
- 定义枚举构造方法时,构造方法必须用private修饰。
- 枚举成员之后加上( )来调用相应的构造函数,() 为空调用的是枚举类的空参的构造函数。
- 当枚举类型中有抽象方法时,必须同时要求每个枚举成员实现这个抽象方法,否则编译报错。
- 由于enum这个关键字包含了abstract,所以可以直接在枚举类中添加抽象方法而不用为枚举类再添加abstract关键字。
- 如果枚举只有一个成员,那么这个枚举类型就可以作为单例模式的一种实现方式。
package cn.itcast.day2;public enum TrafficLamp { RED(30){ @Override public TrafficLamp nextLamp() { return GREEN; } }, GREEN(45){ @Override public TrafficLamp nextLamp() { return YELLOW; } }, YELLOW(5){ @Override public TrafficLamp nextLamp() { return RED; } }; //每种灯持续照亮的时间长度 private int durTime; public abstract TrafficLamp nextLamp(); private TrafficLamp(){} private TrafficLamp(int durTime){ this.durTime =durTime; }}
- 基础加强:JDK新特性
- Java基础加强-JDK 5.0 新特性
- <黑马程序员>java基础加强--JDK 5.0 新特性
- day02_java基础加强(jdk新特性 javaa设计模式 反射)
- java基础加强(jdk新特性 javaa设计模式 反射)
- jdk 1.5新特性--for 循环加强
- java基础加强--JDK1.5新特性
- 基础加强-1(1.5新特性)
- java基础加强_01_Java 1.5 新特性
- Java基础加强_JDK1.5新特性
- java基础--JDK 1.5 新特性
- Java基础加强和JDK1.5新特性1.0
- 基础加强,JDK1.5新特性,反射,内省
- 黑马程序员-基础加强-IDE&新特性&枚举-No.06
- <黑马程序员>枚举--(java基础加强1.5新特性)
- 黑马程序员_基础加强(1) JDK1.5新特性
- 黑马程序员__java 1.5新特性_基础加强学习
- 黑马程序员-JAVA基础加强-新特性简介
- asp.net调试JS脚本
- c编程技巧——获取可用的处理器(cpu)核数
- 将字符串转化为tm结构体的数据
- 发给谁
- 一道循环递归笔试题
- 基础加强:JDK新特性
- 从计算机的观点看对象
- 那些中国产品经理看不懂的美国Startup
- 【算法导论实验1】插入排序与归并排序
- 如何一次性改变Android应用进出动画
- VC6 下 libpng 库的编译与初步使用以及压缩与解压缩
- python调用windows下的com组件
- htop安装与使用
- 2013.3.26