Java核心类

Object 类

equals() 方法

  • equals()方法是用来判断其他的对象是否和该对象相等.
  • String 、Math、Integer、Double等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n– != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
  • 很明显,这是进行的内容比较,而已经不再是地址的比较。依次类推Math、Integer、Double等这些类都是重写了equals()方法的,从而进行的是内容的比较。
  • 性质
    • 自反性(reflexive)。对于任意不为null的引用值x,x.equals(x)一定是true。
    • 对称性(symmetric)。对于任意不为null的引用值x和y,当且仅当x.equals(y)是true时,y.equals(x)也是true。
    • 传递性(transitive)。对于任意不为null的引用值x、y和z,如果x.equals(y)是true,同时y.equals(z)是true,那么x.equals(z)一定是true。
    • 一致性(consistent)。对于任意不为null的引用值x和y,如果用于equals比较的对象信息没有被修改的话,多次调用时x.equals(y)要么一致地返回true要么一致地返回false。
    • 需要注意的是当equals()方法被override时,hashCode()也要被override。按照一般hashCode()方法的实现来说,相等的对象,它们的hash code一定相等。

hashCode() 方法

  • hashCode()方法给对象返回一个hash code值。这个方法被用于hash tables,例如HashMap。
  • Java对象的eqauls方法和hashCode方法是这样规定的:
    1. 相等(相同)的对象必须具有相等的哈希码(或者散列码)。
    2. 如果两个对象的hashCode相同,它们并不一定相同。

String 类

  • 构造方法
序号 方法名 描述
1. String() 创建一个空字符串对象
2. String(byte[] bytes) 使用一个字节数组来创建一个字符串的对象。
3. String(byte[] bytes,int offset, int length) 解码字节数组中指定部分
4. String(char[] value) 使用一个字符数组创建一个字符串对象。
5. String(char[] value,int offset, int length) 解码字符数组中指定部分
6. String(int[] codePoints,int offset,int length) 解码整数数组中指定部分
  • 示例
1
2
3
4
5
6
byte [] bytes ={97,98,99};
String hh = new String(bytes);
//从数组第一位解码,长度为2
String dd= new String(bytes,1,2);
System.out.println(hh);
System.out.println(dd);

StringBuffer类

  • 定义:由于String的内容是不可变的,一旦修改马上会创建一个对象,所以为了避免导致String对象泛滥,在频繁改变字符串对象的应用中,需要使用可变的字符串缓冲区类。
  • 实质:StringBuffer底层是一个字符串数组,默认缓冲区的容量是16。如果字符串的长度不够,内存将自动 增长一倍,线程安全的所有的缓冲区操作方法都是同步的。效率很低。

System类

  • 作用:获取系统属性

  • 类中所有成员都是静态的,当要引用这些变量和方法的时候,System.属性 System.方法()

  • 常用的方法:
序号 方法名 描述
1. arraycopy(Object src,int srcPro,Object dest,int destPro,int length) (源数组,源数组中的起始位置,目标数组,目标数组的起始位置,要复制数组的长度)
2. currentTimesMillis() 获取系统时间
3. exit(int status) 0:正常退出jvm 1:异常退出
4. gc() 建议jvm启动垃圾回收器回收垃圾
5. getenv(String name) 根据环境变量名获取环境变量
6. String getProperty(String name) 获取某个系统属性

Runtime类

  • 作用:该类描述当前应用程序的运行环境,一个应用程序只有一个运行环境
  • 常用的方法:
序号 方法名 描述
1 getRuntime() 返回当前应用程序的运行环境对象。
2 exec(String command) 根据指定的路径执行对应的执行文件。
3 freeMemory() 返回jvm中的空闲内存。(以字节为单位)
4 maxMemory() 返回jvm中试图管理的最大内存
5 totalMemory() 返回jvm中内存总量
  • 示例代码

    1
    2
    3
    4
    5
    6
    7
    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("C:\\Windows\\notepad.exe");
    //Thread.sleep(3000);
    process.destroy();
    System.out.println(runtime.freeMemory());
    System.out.println(runtime.maxMemory());
    System.out.println(runtime.totalMemory());

Math类

  • 常用的方法:
序号 方法名 描述
1 abs(double num) 取绝对值
2 ceil(double num) 向上取整
3 floor(double num) 向下取整
4 round(double num) 四舍五入
5 random() 产生大于等于0.0 小于1.0的随机数Random 类可产生各种随机数