【黑马程序员】黑马入学准备篇:Java高新技术之 静态导入、可变参数、增强for循环、自动装箱、枚举
2014-09-17 12:45
996 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、静态导入
普通的import导入语句可以导入一个类或者某个包中的所有类
静态导入import
static语句导入一个类中的摸个静态方法,或所有静态方法
Ps:个人觉得静态导入不要多用,可能会和自己写的方法分不清,或不知道到底是那个类的方法
2、可变参数
可以接受的参数不固定,如:
System.out.println(add(2,3,5));
System.out.println(add(2,3,5,7));
可变参数的特点
只能出现在参数列表的最后
“...”位于变量类型和变量名之间,前后有误分隔符都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中艺术组的形式访问可变参数
3、增强for循环
语法:
for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或实现了Iterable接口的集合类
4、基本数据类型的自动装箱与拆箱
自动装箱
Integer num1=12;
自动拆箱
System.out.println(num1 + 2);
基本数据类型的对象缓存:
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);
输出结果为true;
Integer num3 = 137;
Integer num4 = 137;
System.out.println(num3 == num4);
输出结果位false;
Integer将-127~127这些较小的常用的整数对象缓存起来,要使用的时候就直接用这些对象,而不是重新创建一个。
这种设计模式叫享元模式 (flyweight )
有很多属性相同的小对象,把他们变成一个对象,不同的属性变成方法的参数 称之为外部状态,相同的称为内部状态
将一个基本类型的整数变成转换成一个包装类型的类型的对象,看是否也符合Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12);
System.out.println(num5 == num6);
输出结果为 true;
Integer num7 = Integer.valueOf(137);
Integer num8 = Integer.valueOf(137);
System.out.println(num7 == num8);
输出结果为 false;
5、枚举
为什么要有枚举
level 2
用普通类来模拟枚举功能
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干够有方法或抽象方法,
枚举的基本应用
枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、静态导入
普通的import导入语句可以导入一个类或者某个包中的所有类
静态导入import
static语句导入一个类中的摸个静态方法,或所有静态方法
Ps:个人觉得静态导入不要多用,可能会和自己写的方法分不清,或不知道到底是那个类的方法
package com.itheima.part_2; import static java.lang.Math.*;//静态导入Math类中的所有静态方法 public class StaticImport_9_1 { /** * @param args */ public static void main(String[] args) { System.out.println(max(3, 5)); System.out.println(abs(-29)); } }
2、可变参数
可以接受的参数不固定,如:
System.out.println(add(2,3,5));
System.out.println(add(2,3,5,7));
可变参数的特点
只能出现在参数列表的最后
“...”位于变量类型和变量名之间,前后有误分隔符都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中艺术组的形式访问可变参数
package com.itheima.part_2; public class VariableParameter_9_2 { /** * @param args */ public static void main(String[] args) { System.out.println(add(2, 3)); System.out.println(add(2, 3, 5)); } public static int add(int x, int... args) { int sum = 0; for (int i = 0; i < args.length; i++) { sum += args[i]; } return sum; } }
3、增强for循环
语法:
for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或实现了Iterable接口的集合类
package com.itheima.part_2; public class VariableParameter_9_2 { /** * @param args */ public static void main(String[] args) { System.out.println(add(2, 3)); System.out.println(add(2, 3, 5)); } public static int add(int x, int... args) { int sum = 0; for (int arg:args) { sum += arg; } return sum; } }
4、基本数据类型的自动装箱与拆箱
自动装箱
Integer num1=12;
自动拆箱
System.out.println(num1 + 2);
基本数据类型的对象缓存:
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);
输出结果为true;
Integer num3 = 137;
Integer num4 = 137;
System.out.println(num3 == num4);
输出结果位false;
Integer将-127~127这些较小的常用的整数对象缓存起来,要使用的时候就直接用这些对象,而不是重新创建一个。
这种设计模式叫享元模式 (flyweight )
有很多属性相同的小对象,把他们变成一个对象,不同的属性变成方法的参数 称之为外部状态,相同的称为内部状态
将一个基本类型的整数变成转换成一个包装类型的类型的对象,看是否也符合Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12);
System.out.println(num5 == num6);
输出结果为 true;
Integer num7 = Integer.valueOf(137);
Integer num8 = Integer.valueOf(137);
System.out.println(num7 == num8);
输出结果为 false;
package com.itheima.part_2; /* 自动装箱与拆箱 */ public class AutoBox_9_3 { public static void main(String[] args) { Integer i = 3; System.out.println(i + 12); /* * 享元模式 flyweight 有很多属性相同的小对象,把他们变成一个对象, * 不同的属性变成方法的参数 称之为外部状态,相同的称为内部状态 */ Integer i1 = 23; Integer i2 = 23; System.out.println(i1 == i2); Integer i3 = 137; Integer i4 = 137; System.out.println(i3 == i4); Integer i5 = Integer.valueOf(137); Integer i6 = Integer.valueOf(137); System.out.println(i5 == i6); Integer i7 = Integer.valueOf(23); Integer i8 = Integer.valueOf(23); System.out.println(i7 == i8); } }
5、枚举
为什么要有枚举
level 2
用普通类来模拟枚举功能
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干够有方法或抽象方法,
枚举的基本应用
枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
package com.itheima.part_2; /* JDK 1.5新特性 枚举 */ public class EnumTest_9_4 { public static void main(String[] args) { WeekDayByClass wdc = WeekDayByClass.SUN; System.out.println(wdc.nextDay().toString()); System.out.println(wdc.nextDay2()); WeekDayByEnum wde = WeekDayByEnum.FRI; System.out.println(wde.toString()); System.out.println(wde.name()); System.out.println(wde.ordinal()); System.out.println(wde.getClass()); // valueOf(String str) 把一个字符串变成枚举对象的实例 System.out.println(WeekDayByEnum.valueOf("SUN").getClass()); System.out.println(WeekDayByEnum.values().length); } } /** * 用普通类来模拟枚举功能 * * @author StephenHu * */ abstract class WeekDayByClass { private WeekDayByClass() { } public final static WeekDayByClass SUN = new WeekDayByClass() { @Override public WeekDayByClass nextDay2() { return MON; } }; public final static WeekDayByClass MON = new WeekDayByClass() { @Override public WeekDayByClass nextDay2() { return SUN; } }; // .... public abstract WeekDayByClass nextDay2(); public WeekDayByClass nextDay() { if (this == SUN) return MON; else return SUN; } public String toString() { return this == SUN ? "SUN" : "MON"; } } enum WeekDayByEnum { // 在枚举值后面加上一堆小括弧来调用构造方法 SUN(1), MON(), TUE, WED, THI, FRI, SAT; // 深入一:为枚举添加不同的构造方法()枚举实际就是一个类 // 注意:必须为private,必须写在枚举类型后面 private WeekDayByEnum() { System.out.println("first"); } private WeekDayByEnum(int day) { System.out.println("second"); } } enum TrafficLamp { // RED,GREEN,YELLOW三种类型 RED(30) { @Override public TrafficLamp nextLamp() { return GREEN; } }, GREEN(20) { @Override public TrafficLamp nextLamp() { return YELLOW; } }, YELLOW(3) { @Override public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); private int time; private TrafficLamp(int time) { this.time = time; } }
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
相关文章推荐
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员_Java高新技术(静态导入、可变参数、增强for循环、自动拆装箱、枚举、反射)
- 黑马程序员<Java 1.5新特性>静态导入、增强for、可变参数、自动装箱拆箱、枚举
- 黑马程序员------java中的泛型、增强for循环、可变参数、静态导入、自动拆装箱、枚举
- 黑马程序员--枚举,增强for循环,可变参数,静态导入,自动拆箱和自动装箱
- 黑马程序员------java5的一些简单新特性(静态导入、可变参数、增强for循环、自动拆箱装箱及享元)
- 黑马程序员——Java1.5新特性之享元模式、增强for循环、可变参数、静态导入、自动装箱和拆箱
- 黑马程序员_温习 高新技术一 (个人笔记)摘要(静态导入---可变参数----高级FOR循环---自动装箱(拆箱)----枚举----反射)
- 黑马程序员——高新技术---eclipse使用技巧、静态导入、可变参数、增强for循环、 自动拆装箱、枚举
- java新特性之静态导入、自动装箱和拆箱、增强for循环、可变参数、枚举
- 20、java jdk 5.0新特性(静态导入&自动装箱和拆箱&增强for循环 &可变参数)
- 静态导入 可变参数 增强for循环 自动装箱 枚举
- 黑马程序员: 基础加强之静态导入,可变参数,增强for,自动装箱,享元模式,枚举
- Java高新技术【1】 (静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱)
- 黑马程序员-------(高新技术)静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(一)【静态导入、可变参数、增强for循环】
- JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)
- 黑马程序员——Java高新技术——JDK4.5版本新特性枚举、高级for循环、静态导入、可变参数、基本数据类型的自动装箱与拆箱
- Java基础加强:静态导入及可变参数和增强for循环 ,基本数据类型的自动拆箱和装箱
- 黑马程序员_学习笔记:11) Jdk5.0新特性:增强for循环、可变参数(...)、静态导入、枚举:关键字 enum、自动拆装箱、泛型