实用类
1. 枚举
switch:支持数据类型,int(byte、short、char)、String、枚举类型。
引用数据类型:
- 类(自定义类、系统类String)
- 数组
- 接口
- 枚举
- …
枚举:一个一个列举。
JDK 1.5 出现的。
// 枚举
public enum 枚举名 {
枚举值1, 枚举值2, .......[;]
[普通属性]
[普通方法]
}
public enum Gender {
男, 女
}
// 定义类继承了 Enum 类型(枚举类型的顶级父类)
// final 修饰类代表这个类不能被继承
public final class Gender extends Enum {
// 私有带参构造方法
// 枚举值,枚举值的序号/索引
private Gender(String s, int i){
super(s, i);
}
// 三个静态常量
// Gender类型对象
public static final Gender gender1;
public static final Gender gender2;
// Gender类型对象数组
private static final Gender[] genderArr;
// 静态代码块在进行初始化
static {
// 给两个Gender类型对象进行对象创建及赋值
gender1 = new Gender("男", 0);
gender2 = new Gender("女", 1);
// 给Gender类型对象数组进行了赋值初始化
genderArr = new Gender[] {
gender1, gender2
};
}
// .... 略 ....
public static Gender[] values()
{
Gender agender[];
int i;
Gender agender1[];
System.arraycopy(agender = ENUM$VALUES, 0, agender1 = new Gender[i = agender.length], 0, i);
return agender1;
}
public static Gender valueOf(String s)
{
return (Gender)Enum.valueOf(demo3/Gender, s);
}
}
枚举从本质上就是一个普通类型,只不过通过 Java 语法帮助我们优化了常量问题。
-
为什么枚举类型中的枚举值是:蓝色加粗倾斜?
因为它是静态常量! static final,所以 类名.枚举值 也是正常。
-
为什么对应枚举类型的属性,可以赋值上枚举值?
因为枚举值本质上就是一个枚举类型的对象。
2. 包装类
Byte、Short、Integer、Long、Float、Double、Boolean、Character
集合的泛型中使用过的,它们基本数据类型对应的引用数据类型。
这种类型也被称为包装类。
它的出现不是为了取代基本数据类型的,而是为了弥补基本数据类型的缺陷。
- 基本数据类型没有方法
- 基本数据类型不能接受 null 值
- 因为有些时候,有些需求要求属性默认没有赋值,但是基本数据类型作为属性时,它所有默认值。
- int:0
- double:0.0
- String:null …
Object:
- Number
- Byte
- Short
- Integer
- Long
- Float
- Double
- Character
- Boolean
包装类型它们的大多构造方法,在 JDK 10 被作废了。因为这些构造还有一些和基本数据类型转换的方法,都没有意义存在了(自动拆箱和装箱)。
// 装箱:将基本数据类型转换为包装类型
// Integer integer = new Integer(10);
// 自动装箱
Integer num = 10;
Character alpha = 'A';
// 拆箱:将包装类型转换为基本数据类型
// int intValue = num.intValue();
// char charValue = alpha.charValue();
// 自动拆箱
int intValue = num;
char charValue = alpha;
还有价值的方法:
- toString() : String 将基本数据类型转换为字符串类型
- valueOf(String) : 包装类型 将字符串转换为包装类型
- parseXXX(String):基本类型 将字符串转换为基本类型
3. Math工具类
java.util包下的一个工具类,用于数学运算。
常用静态方法:
- random() : double 随机获取 [0.0, 1.0) 之间的小数
- abs(数值) : 数值类型 获取绝对值
- max(数值1, 数值2) : 数值类型 获取最大值
- min(数值1, 数值2) : 数值类型 获取最小值
- pow(double, double) : double 幂运算
- sqrt(double) : double 开平方
- round(double) : long 四舍五入
- floor(double) : double 向下取整
- ceil(double) : double 向上取整
- …
4. Random工具类
Random:java.util下的一个随机数工具类。
- nextInt(int) : int 生成[0, 参数值)随机整数
- nextDouble() : double 生成[0.0, 1.0)随机小数
5. String类
System.out.println(“Hello World!”);
在 Java 中使用""
包裹起来的内容,就属于字符串内容。
String 是一个 java.lang 包下的一个类,意味着它是一个引用数据类型。
String str = new String();
String str = “xxxx”;
// final 修饰的类,不能被继承
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char[] value;
}
常用方法:
- length() : int 获取字符串的长度/获取字符串内的字符数量
- isEmpty() : boolean 判断是否是一个空字符串 “”
- charAt(int) : char 获取指定索引的字符
- indexOf(String) : int 获取指定字符的索引(从左向右查找,只找到第一个)
- lastIndexOf(String) : int 从右向左找,只找到第一个
- equals(Object) : boolean 判断字符串内容是否相同
- equalsIgnoreCase(String) : boolean 判断字符串内容是否相同(不区分大小写)
- startsWith(String) : boolean 判断是否以指定字符串开始
- endsWith(String) : boolean 判断是否以指定字符串结尾
- substring(int) : String 从指定索引开始截取字符串
- substring(int,int) : String 从指定索引开始到指定索引结束截取字符串
- concat(String) : String 拼接字符串
- +号拼接
- replace(CharSequence, CharSequence) : String 替换指定字符
- split(String) : String[] 按照指定正则切割字符串为字符串数组
- toLowerCase() : String 转换为小写字母
- toUpperCase() : String 转换为大写字母
- trim() : String 去除字符串两侧的空格
- toCharArray() : char[] 将字符串转换为字符数组
- format(String format, Object… args) : String 格式化字符串
- …
按理说,为了使用熟练,应该背一下。
但是,实际上背了也忘了。
- 用的多了就记住了
- 需要用到的时候就百度/API 查一下
- 买个鼠标垫,API 长鼠标垫
6. StringBuffer
String:字符串
Buffer:缓冲区
使用 StringBuffer 可以解决字符串在频繁拼接或修改时的效率耗损。
构造方法:
- 无参构造 StringBuffer()
- 带参构造 StringBuffer(String)
普通方法:
- appen(几乎所有类型): StringBuffer 拼接/追加内容
7. 日期时间类
Date