java的一些新特性
2015-05-16 01:25
363 查看
------------- android培训、java培训、java博客、java学习型技术博客、期待与您交流! --------------
Eclipse中,通过首选项设置的很多东西的有效范围都是本工作空间。比如:快捷键和代码模版的配置。
透视图:就是指由若干个视图(小窗口)组成的集合。
Eclipse中的调试:先设置断点,然后在本编辑窗口中右击一下,然后选择debug就会切换到debug透视图,选中变量右击选择watch,就可以一步一步的观察运行效果了。
在开发中要注意编译源程序时的javac版本与运行时java版本要一致。否则容易发生错误。
注释选中的代码可以用快捷键:ctrl+shift+/
静态导入:导入一个类中的静态成员。然后在程序中使用该静态变量或者静态方法的时候就可以不用类名来调用了,可以直接使用。
如:
import static java.lang.Math.*;
import static java.lang.Math.max;
可变参数方法:methodA(int i, int ... args) {...}
可变参数的声明必须位于参数列表的最后一个参数,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组。在方法体中以数组的形式访问可变参数。
for循环加强形式(foreach循环):for(type 变量名 : 集合或数组变量名)
迭代变量必须在()中定义,集合变量可以是数组或者是实现了Iterable接口的集合类。
另外:在定义变量的时候还可以加上修饰符,比如:for
b421
(final int arg : args) ...
基本数据类型的自动装箱和拆箱:基本数据类型和它所对应的包装类可以自动转换,如:Integer i = 5; int j = i + 3; 在jdk1.5以后都是合法的。
如果一个数值在一个字节之内(-128~127之间的数值),那么在自动装箱的时候系统会把这个包装类对象缓存起来,如果下一次同样的数值需要自动装箱,
那么就直接引用之前缓存起来的那个数值相同的对象。比如:Integer i = 23; Integer j = 23; 那么 i==j;如果Integer i = 128; Integer j = 128; 那么 i!=j;
享元模式(flyweight): 有很多个小的对象,他们有很多属性相同,就把他们变成一个对象,那些不同的属性就设为方法的参数传进来,叫外部属性或外部状态。
享元模式会大幅度的降低内存中对象的数量。
枚举类:枚举类里面的每一个元素都是一个类的实际对象。
枚举类里面的元素列表必须位于类里面的所有成分之前。
如果枚举类里面要定义构造方法,那么必须声明为private(私有的)
见如下例子程序:
package com.heima.exam;
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyWeekDay mwd = MyWeekDay.MON;
System.out.println(mwd.nextDay().nextDay());
WeekDay wd = WeekDay.FRI;
System.out.println(wd);
System.out.println(wd.name());
System.out.println(wd.ordinal());
System.out.println(wd.getDeclaringClass());
System.out.println(WeekDay.valueOf("SAT"));
System.out.println(WeekDay.values().length);
System.out.println(TrafficLamp.RED.nextLamp());
System.out.println(TrafficLamp.RED.nextLamp().time);
System.out.println(TrafficLamp.YELLOW.time);
}
}
enum TrafficLamp {
RED(30) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},
GREEN(50) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public int time;
private TrafficLamp(){
}
private TrafficLamp(int time) {
this.time = time;
}
public abstract TrafficLamp nextLamp();
}
enum WeekDay {
SUN(0), MON(), TUE(), WED, THI, FRI, SAT;
private WeekDay() {
System.out.println("first");
}
private WeekDay(int day) {
System.out.println("second");
}
}
abstract class MyWeekDay {
public final static MyWeekDay SUN = new MyWeekDay() {
@Override
public MyWeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public final static MyWeekDay MON = new MyWeekDay() {
@Override
public MyWeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
private MyWeekDay() {
}
/*public MyWeekday nextDay() {
if(this == SUN) {
return MON;
} else {
return SUN;
}
}*/
public abstract MyWeekDay nextDay();
public String toString() {
if(this == SUN) {
return "SUN";
} else {
return "MON";
}
}
}
Eclipse中,通过首选项设置的很多东西的有效范围都是本工作空间。比如:快捷键和代码模版的配置。
透视图:就是指由若干个视图(小窗口)组成的集合。
Eclipse中的调试:先设置断点,然后在本编辑窗口中右击一下,然后选择debug就会切换到debug透视图,选中变量右击选择watch,就可以一步一步的观察运行效果了。
在开发中要注意编译源程序时的javac版本与运行时java版本要一致。否则容易发生错误。
注释选中的代码可以用快捷键:ctrl+shift+/
静态导入:导入一个类中的静态成员。然后在程序中使用该静态变量或者静态方法的时候就可以不用类名来调用了,可以直接使用。
如:
import static java.lang.Math.*;
import static java.lang.Math.max;
可变参数方法:methodA(int i, int ... args) {...}
可变参数的声明必须位于参数列表的最后一个参数,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组。在方法体中以数组的形式访问可变参数。
for循环加强形式(foreach循环):for(type 变量名 : 集合或数组变量名)
迭代变量必须在()中定义,集合变量可以是数组或者是实现了Iterable接口的集合类。
另外:在定义变量的时候还可以加上修饰符,比如:for
b421
(final int arg : args) ...
基本数据类型的自动装箱和拆箱:基本数据类型和它所对应的包装类可以自动转换,如:Integer i = 5; int j = i + 3; 在jdk1.5以后都是合法的。
如果一个数值在一个字节之内(-128~127之间的数值),那么在自动装箱的时候系统会把这个包装类对象缓存起来,如果下一次同样的数值需要自动装箱,
那么就直接引用之前缓存起来的那个数值相同的对象。比如:Integer i = 23; Integer j = 23; 那么 i==j;如果Integer i = 128; Integer j = 128; 那么 i!=j;
享元模式(flyweight): 有很多个小的对象,他们有很多属性相同,就把他们变成一个对象,那些不同的属性就设为方法的参数传进来,叫外部属性或外部状态。
享元模式会大幅度的降低内存中对象的数量。
枚举类:枚举类里面的每一个元素都是一个类的实际对象。
枚举类里面的元素列表必须位于类里面的所有成分之前。
如果枚举类里面要定义构造方法,那么必须声明为private(私有的)
见如下例子程序:
package com.heima.exam;
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyWeekDay mwd = MyWeekDay.MON;
System.out.println(mwd.nextDay().nextDay());
WeekDay wd = WeekDay.FRI;
System.out.println(wd);
System.out.println(wd.name());
System.out.println(wd.ordinal());
System.out.println(wd.getDeclaringClass());
System.out.println(WeekDay.valueOf("SAT"));
System.out.println(WeekDay.values().length);
System.out.println(TrafficLamp.RED.nextLamp());
System.out.println(TrafficLamp.RED.nextLamp().time);
System.out.println(TrafficLamp.YELLOW.time);
}
}
enum TrafficLamp {
RED(30) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},
GREEN(50) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public int time;
private TrafficLamp(){
}
private TrafficLamp(int time) {
this.time = time;
}
public abstract TrafficLamp nextLamp();
}
enum WeekDay {
SUN(0), MON(), TUE(), WED, THI, FRI, SAT;
private WeekDay() {
System.out.println("first");
}
private WeekDay(int day) {
System.out.println("second");
}
}
abstract class MyWeekDay {
public final static MyWeekDay SUN = new MyWeekDay() {
@Override
public MyWeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public final static MyWeekDay MON = new MyWeekDay() {
@Override
public MyWeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
private MyWeekDay() {
}
/*public MyWeekday nextDay() {
if(this == SUN) {
return MON;
} else {
return SUN;
}
}*/
public abstract MyWeekDay nextDay();
public String toString() {
if(this == SUN) {
return "SUN";
} else {
return "MON";
}
}
}
相关文章推荐
- JAVA 求不惑 之续《 Java中一些常被忽视的特性 》
- Java1.5新特性。Executors的一些用法
- Java中一些常被忽视的特性
- java中遇到过的String的一些特性
- Java的一些基本特性
- 关于java线程的一些特性 启动 中断 及如何退出
- Java的一些关键特性
- java新特性的一些整理
- Java的一些高级特性(一)——Java 7新特性
- Java的一些高级特性(二)——初始化和赋值部分
- Groovy 在Java 8下的一些兼容性特性
- ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
- java的一些高级特性总结
- JAVA基础(二)·类的一些基础特性概念
- Java多线程 12 剩下的一些特性
- Java的一些高级特性(七)——Java7中的I/O
- Java一些特性
- Java的一些高级特性(三)——关于反射
- Java的一些高级特性(五)——测试和异常处理
- kotlin的一些特性介绍和与java C#的简单对比