写代码的时候对类的用法很不熟悉,犯了很多错心态都炸了,需把常用类好好熟悉起来。
常用类
包装类
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
下面是Number & Math 类常用的一些方法:
xxxValue()
将 Number 对象转换为xxx数据类型的值并返回。
x.byteValue() //返回x的byte类型的数据,不接受参数
compareTo()
将number对象与参数比较。返回值-1,0,1
x.compareTo(y) //x与y比较后返回值,x>y返回1
equals()
1. equals() 与 == 的区别
- 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
- 对于引用类型,== 判断两个实例是否引用同一个对象,而 equals() 判断引用的对象是否等价。
Integer x = new Integer(1);
Integer y = new Integer(1);
System.out.println(x.equals(y)); // true
System.out.println(x == y); // false
2. 等价关系
(一)自反性
x.equals(x); // true
(二)对称性
x.equals(y) == y.equals(x) // true
(三)传递性
if(x.equals(y) && y.equals(z)) {
x.equals(z); // true;
}
(四)一致性
多次调用 equals() 方法结果不变
x.equals(y) == x.equals(y); // true
(五)与 null 的比较
对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
x.euqals(null); // false;
3. 实现
- 检查是否为同一个对象的引用,如果是直接返回 true;
- 检查是否是同一个类型,如果不是,直接返回 false;
- 将 Object 实例进行转型;
- 判断每个关键域是否相等。
public class EqualExample {
private int x;
private int y;
private int z;
public EqualExample(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EqualExample that = (EqualExample) o;
if (x != that.x) return false;
if (y != that.y) return false;
return z == that.z;
}
}
valueOf()
返回一个 Number 对象指定的内置数据类型
Integer b = Integer.valueOf("444",16); // 使用 16 进制,这里是说16进制是444为16进制,返回10进制
toString()
以字符串形式返回值。
x.toString() //以字符串返回x
parseInt()
将字符串解析为int类型。
int b = Integer.parseInt("444",16);
abs()
返回参数的绝对值。
Math.abs(a)
random()
返回一个随机数。随机数范围为 0.0 =< Math.random < 1.0。
Math.random()
round()
它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。
min()
返回两个参数中的最小值。
max()
返回两个参数中的最大值。
log()
返回参数的自然数底数的对数值。
pow()
返回第一个参数的第二个参数次方。
sqrt()
求参数的算术平方根。
String类
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
concat
连接,与+作用相同
string1.concat(string2);
string1 += string2;
String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement)
改变第一个匹配的子字符串
StringBuffer类
注意string虽然和stringbuffer感觉很像,但有很多区别
public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
public StringBuffer reverse()
将此字符序列用其反转形式取代。
public delete(int start, int end)
移除此序列的子字符串中的字符。
public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。
replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
char charAt(int index)
返回此序列中指定索引处的 char 值。
int length()
返回长度(字符数)。
void setCharAt(int index, char ch)
将给定索引处的字符设置为 ch。
void setLength(int newLength)
设置字符序列的长度。
str.setLength(newlength);//使str的长度扩大到转换成新的长度,防止下标越界
Character类
在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。
// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a';
// 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');
isLetter()
是否是一个字母
isDigit()
是否是一个数字字符
isWhitespace()
是否是一个空白字符
isUpperCase()
是否是大写字母
isLowerCase()
是否是小写字母
toUpperCase()
指定字母的大写形式
toLowerCase()
指定字母的小写形式
toString()
返回字符的字符串形式,字符串的长度仅为1