1.BigInteger类和BigDecimal类 如果我们使用的整数范围超过了long
型怎么办?这个时候,就只能用软件来模拟一个大整数。
java.math.BigInteger
就是用来表示任意大小的整数。BigInteger
内部用一个int[]
数组来模拟一个非常大的整数:
2.枚举类的使用 JDK1.5之前自定义枚举类了解就行。
看看就行。
使用enum
定义的枚举类是一种引用类型。前面我们讲到,引用类型比较,要使用equals()
方法,如果使用==
比较,它比较的是两个引用类型的变量是否是同一个对象。因此,引用类型比较,要始终使用equals()
方法,但enum
类型可以例外。
这是因为enum
类型的每个常量在JVM中只有一个唯一实例,所以可以直接用==
比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public class SeasonTest { public static void main (String[] args) { Season summer = Season.SUMMER; System.out.println(summer); } } enum Season { SPRING("春天" ), SUMMER("夏天" ), AUTUMN("秋天" ), WINTER("冬天" ); private final String name; private Season (String name) { this .name = name; } public String getName () { return name; } }
枚举类可以应用在switch
语句中。因为枚举类天生具有类型信息和有限个枚举常量,所以比int
、String
类型更适合用在switch
语句中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 public class Main { public static void main (String[] args) { Weekday day = Weekday.SUN; switch (day) { case MON: case TUE: case WED: case THU: case FRI: System.out.println("Today is " + day + ". Work at office!" ); break ; case SAT: case SUN: System.out.println("Today is " + day + ". Work at home!" ); break ; default : throw new RuntimeException("cannot process " + day); } } } enum Weekday { SUN, MON, TUE, WED, THU, FRI, SAT; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static void main (String[] args) { Season[] values = Season.values(); for (int i = 0 ;i < values.length;i++){ System.out.println(values[i].toString()); } System.out.println("____________________________" ); Season winter = Season.valueOf("WINTER" ); System.out.println(winter); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 public class SeasonTest { public static void main (String[] args) { Season season1 = Season.SUMMER; Season season2 = Season.SPRING; Season season3 = Season.AUTUMN; season1.show(); season2.show(); season3.show(); } } interface Info { void show () ; } enum Season implements Info { SPRING("春天" ){ public void show () { System.out.println("spring" ); } }, SUMMER("夏天" ){ public void show () { System.out.println("summer" ); } }, AUTUMN("秋天" ){ public void show () { System.out.println("autumn" ); } }, WINTER("冬天" ){ public void show () { System.out.println("winter" ); } }; private final String name; private Season (String name) { this .name = name; } public String getName () { return name; } }
3.注解 (Annotation)
一定程度上可以说: 框架 = 注解 + 反射 + 设计模式 。
自定义Annotation :
没有成员定义的 Annotation 称为 标记 ,包含成员变量的 Annotation 称为元数据 Annotation
1 2 3 4 5 6 7 8 public @interface MyAnnotation { String value () default "string" ; }
元注解:注解其他注解的注解
默认为CLASS。
自定义注解一般会指明以上两个元注解:Retention、Target。
下面两个用到频率较低。
Java 8对注解处理提供了两点改进: 可重复的注解 及 可用于类型的注解 。此外,反射也得到了加强,在
Java8 中能够得到方法参数的名称。这会简化标注在方法参数上的注解。