1、基本类型对应的包装类
1.1 包装类概述
基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是 final 的,所以不能创建其子类,包装类都是不可变对象。
基本类型 | 包装类 |
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
1.2 类层次结构
除了 boolean 和 Character 外,其它的包装类都有 valueOf()和 parseXXX 方法,并且还具有 byteVaue(),shortVaue(),intValue(),longValue(),floatValue()和 doubleValue()方法,这些方法是最常用的方法。
public class IntegerTest01 {
public static void main(String[] args) {
int i1 = 100;
Integer i2 = new Integer(i1);
double i3 = i2.doubleValue();
String s = "123";
int i4 = Integer.parseInt(s);
Integer i5 = new Integer(s);
Integer i6 = Integer.valueOf(s);
}
}
2、日期类
常用日期类:
java.util.Date
java.text.SimpleDateFormat
java.util.Calendar
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class DateTest01 {
public static void main(String[] args) throws Exception{
//取得今天的日期
Date today = new Date();
System.out.println(today);
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(today));
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DAY_OF_MONTH));
//取得 2000-10-01 为星期几
Date d = new SimpleDateFormat("yyyy-MM-dd").parse("2000-10-01");
c.setTime(d);
System.out.println(c.get(Calendar.DAY_OF_WEEK));
}
}
3、数字类
java.text.DecimalFormat 和 java.math.BigDecimal
DecimalFormat
import java.text.DecimalFormat;
public class DecimalTest01 {
public static void main(String[] args) throws Exception{
//加入千分位,保留两位小数
DecimalFormat df = new DecimalFormat("###,###.##");
System.out.println(df.format(1234.23452));
//加入千分位保留 4 位小数,不够补零
System.out.println(new DecimalFormat("###,###.0000").format(12345.12));
}
}
BigDecimal 可以精确计算,特别是财务数据
import java.math.BigDecimal;
public class BigDecimalTest01 {
public static void main(String[] args) throws Exception{
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(20);
//相加运算
BigDecimal v3 = v1.add(v2);
System.out.println(v3);
}
}
4、Random
Random 位于 java.util 包下,可以产生随机数
生成 5 个 0~100 之间的整数随机数
import java.util.Random;
public class RandomTest01 {
public static void main(String[] args) throws Exception{
Random r = new Random();
for (int i=0; i<5; i++) {
System.out.println(r.nextInt(100));
}
}
}
5、Enum
为什么使用枚举
//以下返回 1 或 0 存在问题
//在编译器就容易把程序错了,如:1 和 111 没有什么区别,编译器认为两者是 一样的
//不会报错,错误发现的越早越好,最好在编译器把所有的错误都消除掉
public class EnumTest01 {
public static void main(String[] args) throws Exception{
int ret = method1(10, 2);
if (ret == 1) {
System.out.println("成功!");
}
if (ret == 0) {
System.out.println("失败!");
}
}
//正确返回 1,失败返回:0
private static int method1(int value1, int value2) {
try {
int v = value1/value2;
return 1;
}catch(Exception e) {
return 0;
}
}
}
采用枚举改进
//使用枚举类型,能够限定取值的范围
//使程序在编译时就会及早的返现错误
//这样程序会更加健壮
public class EnumTest03 {
public static void main(String[] args) throws Exception{
Result r = method1(10, 2);
if (r == Result.SUCCESS) {
System.out.println("成功!");
}
if (r == Result.FAILURE) {
System.out.println("失败!");
}
}
//正确返回 SUCCESS,失败返回:FAILURE
private static Result method1(int value1, int value2) {
try {
int v = value1/value2;
return Result.SUCCESS;
}catch(Exception e) {
return Result.FAILURE;
}
}
}
enum Result {
SUCCESS,FAILURE
}