Object
类Object
是类层次结构的根。每个类都将Object
作为超类。 所有对象(包括数组)都实现此类的方法。
1、构造方法:
public Object()
2、成员方法:
/*
判断调用方法的对象和参数对象是否相等,如果相等返回true
默认比较引用(地址值)是否相等,即是否是同一个对象;
子类一般会重写该方法,用于比较具体的属性值
*/
public boolean equals(Object obj)
/*
返回对象的哈希码值。
该哈希值默认根据对象的地址值计算。其特点为:
如果两个对象使用equals方法比较,返回为true,则他们的hashCode一定相同;
反之,如果两个对象使用equals方法比较,返回为false,则不会要求他们的hashCode一定不同;
但为不同的对象,生成不同的hashCode值,会提高哈希表的性能。
*/
public int hashCode()
/*
返回对象的字符串表示形式。
默认格式为:全限定类名(包名+类名) + “@” + hashCode的十六进制表示形式
子类一般会重写该方法,返回该对象的具体属性值。
这个方法也决定了在输出语句中打印一个对象时的结果,因为在输出语句中打印一个对象,其实就是打印该对象的字符串表示形式,也就是说默认调用了该对象的 toString()方法
*/
public String toString()
String
String类代表字符串,这是Java语言中最常使用的一个类,没有之一。
Java程序中的所有字符串文字(例如"abc"
)都被实现为此类的实例。
字符串不可变,它们的值在创建后不能被更改。因为String对象是不可变的,它们可以被共享。
字符串缓冲区(StringBuffer, StringBuilder)支持可变字符串。
1、构造方法
public String()
新建字符串对象,使其表示空字符序列。
public String(String original)
新建字符串对象,使其表示与参数相同的字符序列。
// 由于字符串不可变,上述两个构造是不必要的,不建议使用
public String(byte[] bytes)
使用平台的默认字符集解码指定的字节数组来构造新的字符串对象。
public String(byte[] bytes, int offset, int length)
使用平台的默认字符集解码指定的字节数组的一部分来构造新的字符串对象。
bytes - 要解码为字符的字节
offset - 要解码的第一个字节的索引
length - 要解码的字节数
public String(byte[] bytes, String charsetName) throws UnsupportedEncodingException
使用指定的字符集解码指定的字节数组来构造新的字符串对象。
bytes - 要解码为字符的字节
charsetName - 字符集的名称(例如"GBK"、"UTF-8"),当字符集名称不支持时,抛出异常
public String(byte[] bytes, int offset, int length, String charsetName) throws UnsupportedEncodingException
使用指定的字符集解码指定的字节数组的一部分来构造新的字符串对象。
bytes - 要解码为字符的字节
offset - 要解码的第一个字节的索引
length - 要解码的字节数
charsetName - 字符集的名称(例如"GBK"、"UTF-8"),当字符集名称不支持时,抛出异常
public String(char[] value)
使用指定字符数组中的全部字符,构建新的字符串对象
public String(char[] value, int offset, int count)
使用指定字符数组中的部分字符,构建新的字符串对象
value - 作为字符源的数组
offset - 起始索引
count - 长度
public String(StringBuilder builder)
使用字符串缓冲区中的所有字符,构建一个新的字符串对象。缓冲区后续修改不会影响新创建的字符串。
public String(StringBuffer buffer)
使用字符串缓冲区中的所有字符,构建一个新的字符串对象。缓冲区后续修改不会影响新创建的字符串。
// 通过字符串缓冲区类的toString方法获取字符串速度更快,通常是首选。所以上述两个构造方法不推荐。
2、成员方法
字符串类的成员方法较多,以下分类整理:
① 基本操作
public int length()
获取字符串的长度
public char charAt(int index)
获取指定索引处的字符,索引范围从0到length() - 1 。
public String concat(String str)
将调用方法的字符与参数字符串合并,其结果相当于this + str
② 字符串比较
public boolean equals(Object anObject)
将调用方法的字符串与另一个对象比较,当参数与该字符串相同时,返回true
注:由于是重写Object类中的方法,所以参数为Object类型,但只有参数为字符串且相同时,才会返回true
public boolean equalsIgnoreCase(String anotherString)
将调用方法的字符串与指定的字符串比较,忽略大小写。相同则返回true
public int compareTo(String anotherString)
按字典顺序比较两个字符串。
按照两个字符串相同索引上第一个不同的字符的char值进行比较,返回this.charAt(k)-anotherString.charAt(k)
如果相同索引上的字符全部相同,则较短的字符串按字典顺序位于较长的字符串之前,即返回this.length()-anotherString.length()
如果两个字符串完全相等,返回0
public int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,但是忽略大小写。
③ 字符串判断
public boolean contains(CharSequence s)
判断调用方法的字符串中是否包含指定的子串,如果包含,返回true。
public boolean startsWith(String prefix)
判断调用方法的字符串是否以指定的前缀开头,如果是,返回true
public boolean endsWith(String suffix)
判断调用方法的字符串是否以指定的后缀结尾,如果是,返回true
public boolean isEmpty()
判断调用方法的字符串是否为空(长度为0),如果是,返回true
注意:判断对象是否为null,应使用(对象 == null)
④ 字符串查找
public int indexOf(int ch)
获取指定的字符在字符串中第一次出现的索引。如果没有,返回-1
public int indexOf(int ch, int fromIndex)
获取指定的字符在字符串中第一次出现的索引,以指定的索引开始搜索。如果没有,返回-1
public int indexOf(String str)
返回指定的子字符串在调用方法的字符串中第一次出现的索引。如果没有,返回-1
public int indexOf(String str, int fromIndex)
返回指定的子字符串在调用方法的字符串中第一次出现的索引,以指定的索引开始搜索。如果没有,返回-1
public int lastIndexOf(int ch)
获取指定的字符在字符串中最后一次出现的索引。如果没有,返回-1
public int lastIndexOf(int ch, int fromIndex)
获取指定的字符在字符串中最后一次出现的索引,以指定的索引开始反向搜索。如果没有,返回-1
public int lastIndexOf(String str)
返回指定的子字符串在调用方法的字符串中最后一次出现的索引。如果没有,返回-1
public int lastIndexOf(String str, int fromIndex)
返回指定的子字符串在调用方法的字符串中最后一次出现的索引,以指定的索引开始方向搜索。如果没有,返回-1
⑤ 截取与拆分
public String substring(int beginIndex)
将调用方法的字符串从索引beginIndex处开始截取,一直到字符串结尾。返回一个新的字符串。
public String substring(int beginIndex, int endIndex)
将调用方法的字符串从索引beginIndex处开始截取,一直到索引endIndex - 1处。返回一个新的字符串,长度为endIndex - beginIndex。
public String[] split(String regex)
将调用方法的字符串按照指定的regex的匹配进行拆分,返回拆分后的字符串数组。
// 注意:拆分后,开始和中间部位的空字符串会保留,但结尾的空字符串不会保留在数组中。
⑥ 字符串转换
public byte[] getBytes()
使用平台的默认字符集将字符串编码为一系列字节,将结果存储到新的字节数组中。
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
使用指定的字符集将字符串编码为一系列字节,将结果存储到新的字节数组中。
public char[] toCharArray()
将字符串转换为新的字符数组,数组长度为该字符串的长度。
public String replace(CharSequence target, CharSequence replacement)
将调用方法的字符串中所有的target子串,替换为replacement字符串。替换顺序为从字符串开始到结束。返回一个新的字符串。
public String replaceAll(String regex, String replacement)
将调用方法的字符串中所有匹配regex(正则表达式)规则的子串,替换为replacement字符串。返回一个新的字符串。
public String replaceFirst(String regex, String replacement)
将调用方法的字符串中第一个匹配regex(正则表达式)规则的子串,替换为replacement字符串。返回一个新的字符串。
public String toUpperCase()
使用默认语言环境的规则将此字符串所有字符转换为大写。
public String toLowerCase()
使用默认语言环境的规则将此字符串所有字符转换为小写。
public String trim()
去除字符串的前后端空格
public static String valueOf(Object obj)
返回Object参数的字符串表示形式。
// valueOf方法有多个,形成重载,可以接收任意类型参数。如果是引用数据类型,其返回的字符串为该对象的toString()方法的返回值。
StringBuilder
可变的字符序列。该类提供了一个与StringBuffer
兼容的API,但不能保证线程同步。
1、构造方法
// 构造一个没有字符的字符串构建器,初始容量为16个字符。
public StringBuffer()
// 构造一个没有字符的字符串构建器,由capacity参数指定的初始容量。
public StringBuilder(int capacity)
// 构造一个初始化为指定字符串内容的字符串构建器。 字符串构建器的初始容量为16加上字符串参数的长度。
public StringBuilder(String str)
2、成员方法
// 追加Object参数的字符串表示形式。
public StringBuilder append(Object obj)
// 将Object参数的字符串形式插入到此字符序列中。
public StringBuilder insert(int offset, Object obj)
// 导致该字符序列被序列的相反代替。 -- 反转
public StringBuilder reverse()
// 将StringBuilder转为String
public String toString()
自动装箱自动拆箱
在任何情况下,都不能将对象强制转换成基本数据类型,或将基本数据类型强制转换为对象。
Java中,基本类型和对象是完全不同的东西,不能自动在两者之间强制转换或互换。
但Java为所有的基本数据类型都提供了对应的类(即包装类型):
基本类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
自动装箱:自动地将基本数据类型转换为对象
以Integer为例:
// 构造方法
public Integer(int value)
// 成员方法
public static Integer valueOf(int i)
上述两个方法,用于实现自动装箱。
代码示例:
public static void main(String[] args) {
// 直接将基本数据类型赋值给引用
Integer num1 = 10;
// 等效代码为
Integer num2 = new Integer(10); // 该构造方法从JDK9版本过期
// 替换为
// Integer num2 = Integer.valueOf(10);
}
自动拆箱:自动地将对象转换为基本数据类型
// 成员方法
public int intValue() // 返回 Integer的值作为 int
该方法用于实现自动拆箱。
代码示例:
public static void main(String[] args) {
Integer num = 10;
// 可以使用num与基本数据类型10进行计算
num = num + 10;
// 其等效代码为:
num = Integer.valueOf(num.intValue() + 10);
}
Integer类中常用API
成员变量:
// 表示int的最大值
public static final int MIN_VALUE
// 表示int的最小值
public static final int MAX_VALUE
成员方法:
// 静态方法parseInt,用于将参数字符串解析为整数值
// 注意:字符串中的字符,除了第一个可以是+—表示正负,其它都必须是十进制数字
public static int parseInt(String s)
// 返回整数参数的2进制字符串表示形式
public static String toBinaryString(int i)
// 返回整数参数的8进制字符串表示形式
public static String toOctalString(int i)
// 返回整数参数的16进制字符串表示形式
public static String toHexString(int i)
// 将字符串转换为Integer对象
public static Integer valueOf(String s)
Math
Math类包含用于执行基本数字运算的方法。
// 返回a的绝对值。
public static double abs(int a)
// 返回大于或等于参数且等于数学整数的最小double值。
// 向上取整;例如 1.1,1.5,1.8 都返回2.0
public static double ceil(double a)
// 返回小于或等于参数且等于数学整数的最大double值。
// 向下取整;例如 1.1,1.5,1.8 都返回1.0
public static double floor(double a)
// 将参数的值四舍五入到最接近的long值。
public static long round(double a)
// 获取0.0(包含)到1.0(不包含)之间的随机数
public static double random()
// 获取a的b次幂
public static double pow(double a, double b)
// 获取a的正平方根
public static double sqrt(double a)
BigInteger
不可变的任意精度整数。
构造方法:
// 将BigInteger的十进制字符串表示形式转换为BigInteger。
public BigInteger(String val)
成员方法:
// this + val
public BigInteger add(BigInteger val)
// this - val
public BigInteger subtract(BigInteger val)
// this * val
public BigInteger multiply(BigInteger val)
// this / val
public BigInteger divide(BigInteger val)
// 返回(this / val) 和 (this % val)
public BigInteger[] divideAndRemainder(BigInteger val)
BigDecimal
不可变的,任意精度的带符号十进制数。
构造方法:
// 将BigDecimal的十进制字符串表示形式转换为BigDecimal对象
// 字符串的第一位可以是+、-表示正负号或者数字,其他位必须为数字
public BigDecimal(String val)
成员方法:
// this + augend
public BigDecimal add(BigDecimal augend)
// this - subtrahend
public BigDecimal subtract(BigDecimal subtrahend)
// this * multiplicand
public BigDecimal multiply(BigDecimal multiplicand)
/*
this / divisor
this 被除数
divisor 除数
scale 当除不尽时,保留的小数位数(精确到小数点后面多少位)
RoundingMode 精确位的后面一位的舍入模式,常用的模式有
RoundingMode.UP 正数向右边靠,负数向左边靠
RoundingMode.DOWN 正数向左边靠,负数向右边靠
RoundingMode.CEILING 全向右靠,向大靠拢
RoundingMode.FLOOR 全向左靠,向小靠拢
RoundingMode.HALF_UP 四舍五入
RoundingMode.HALF_UP 五舍六入
*/
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
System
成员变量:
// 标准输入流
public final static InputStream in;
// 标准输出流
public final static PrintStream out;
// 标准错误流
public final static PrintStream err;
成员方法:
// 获取当前系统时间的毫秒值(该毫秒值是从1970-01-01 00:00:00 至当前系统时间所经过的毫秒值)
public static native long currentTimeMillis();
/*
数组拷贝
src 源数组
srcPos 源数组的起始索引
dest 目标数组
destPos 目标数组的起始索引
length 拷贝长度
*/
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
// 退出JVM 状态码为0表示正常退出
public static void exit(int status)
Date
Date类表示特定的时刻,精度为毫秒。