4.6 常用类 String、Math、基本数据封装类、Arrays、Enum
String
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例
1.String() 初始化新创建的 String对象,使其表示空字符序列
2.String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组构造新的 String
3.String(byte[] bytes, String charsetName) 构造一个新的String由指定用指定的字节的数组解码charset
4.String(char[] value) 分配新的 String ,使其表示当前包含在字符数组参数中的字符序列
String中的常用方法
1.char charAt(int index) 返回指定索引处的 char值
2.int codePointAt(int index) 返回指定索引处的字符(Unicode代码点)
3.int codePointBefore(int index) 返回指定索引之前的字符(Unicode代码点)
4.int compareTo(String anotherString) 按字典顺序比较两个字符串
5.int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,忽略大小写差异
6.String concat(String str) 将指定的字符串连接到此字符串的末尾
7.boolean contains(CharSequence s) 当且仅当此字符串包含指定的char值序列时,才返回true
8.int indexOf(String str) 返回指定子字符串第一次出现的字符串中的索引
9.int indexOf(String str, int fromIndex) 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引
StringBuider StringBuffer
区别:
String : 不可变的字符序列
StringBuilder 可变的字符序列
类提供与StringBuffer兼容的API,但不保证同步->线程不安全。效率相对较高
StringBuffer 可变的字符序列
同步的->线程安全->效率相对较低
执行效率:
StringBuilder>StringBuffer>String
StringBuider StringBuffer 的构造器
1.StringBuilder() 构造一个字符串构建器,其中不包含任何字符,初始容量为16个字符。
2.StringBuilder(int capacity) 构造一个字符串构建器,其中没有字符,并且具有 capacity参数指定的初始容量
3.StringBuilder(CharSequence seq) 构造一个字符串构建器,其中包含与指定的 CharSequence相同的字符
StringBuider StringBuffer 的常用方法
1.StringBuilder append(boolean b) 将 boolean参数的字符串表示形式追加到序列中
2.StringBuilder delete(int start, int end) 删除此序列的子字符串中的字符。 结束索引不包含
3.StringBuilder deleteCharAt(int index) 按此顺序删除指定位置的 char
4.StringBuilder insert(int offset, Object obj) 将 Object参数的字符串表示形式插入此字符序列中
5.StringBuilder reverse() 导致此字符序列被序列的反向替换
注意:1.每次缓冲池扩容都是原容量的2倍+2
2.编译时常量会直接运算
Math的常用方法
1.static double abs(double a) 返回 double值的绝对值
2.static double ceil(double a) 返回大于或等于参数且等于数学整数的最小值(最接近负无穷大) double
3.static double floor(double a) 返回小于或等于参数且等于数学整数的最大值(最接近正无穷大) double
4.static long max(long a, long b) 返回两个 long值中较大的 long
5.static double min(double a, double b) 返回两个 double值中较小的 double
6.static long round(double a) 返回与参数最接近的 long ,并将关系四舍五入为正无穷大。 小数点后一位
7.static double sqrt(double a) 返回 double值的正确舍入正平方根
基本数据封装类
用处:1.集和内部只能存储引用数据类型的数据,可以通过包装类型显示
2.包装类提供了很多方法,可以灵活操作数据
3.解决数据默认值的问题,null和0的含义不同
基本类为小写,包装类为基本类第一个字母大写(int 和 char不同)
int -> Integer , char -> Character
自动拆装箱:装箱是由基本数据类型转化为引用数据类型,拆箱则相反
包装类型只要与其相对应的基本数据类型比较时,包装类型会自动拆箱
注意: Integer在[-128,127]时返回的是缓冲区中的对象,若Integer不在[-128,127]时,则返回 new Integer
Arrays的常用方法
1.static int[] copyOf(int[] original, int newLength) 截取 拷贝 填充,默认从索引为0的位置开始
2.static int[] copyOfRange(int[] original, int from, int to) 将指定数组的指定范围复制到新数组中。 结束索引不包含
3.static boolean deepEquals(Object[] a1, Object[] a2) 深层比较是否相等,针对于多维数组
4.static int mismatch(boolean[] a, boolean[] b) 查找两个数组中第一个不相等的数据的索引
5.static void sort(int[] a, int fromIndex, int toIndex) 按升序对数组的指定范围进行排序。
6.static int binarySearch(int[] a, int key) 使用二进制搜索算法在指定的int数组中搜索指定的值。 要求前提升序排序
Enum
enum:枚举,表示一种事物的所有可能
注意:1.枚举类型不能自定义实例化,实例由程序员自己提供
2.枚举类型通过枚举字段提供当前类型的实例
3.枚举类型的构造器只能是private
4.一般通过枚举类型来表示某种标识,而不会定义太多的功能和方法
5.通过enum定义的枚举类型,都默认继承自java.lang.enum