1. Math类 (基本数学运算类)
封装了关于基本数学运算的方法,所有类都是静态的,可以用类名直接调用
- static int abs(int a) 取绝对值
int a = -122; Math.abs(a);
- static double ceil(double a) 向上取整 返回double类型
double d = 123.1; Math.ceil(d);
- static double floor(double a) 向下取整 返回double类型
double d = 123.2;; Math.floor(d);
- static int max(int a,int b) 获取两个之间的最大值 min() 最小值
int a = 123; int b = 124; Math.max(a,b);
- static double pow(double a,double b) 计算a的b次方
double d = 2; double f = 0.5; Math.pow(d,f);
- static double random() 随机获取一个0.0~1.0 之间的小数,不包括1
double d = Math.random();
- static int round(float a) 四舍五入
float f = 123.5; Math.round(f);
- static double sqrt(double a) 平方根
double d = 123.5; Math.sqrt(d);
2. String类
2.1 java.long.String
类定义的对象都是字符串
字符串不能发生改变
创建方法
- 直接创建 (如果紧接着创建一个名字不同数据相同的,两个字符串共用一个地址值(new创建时在堆内存;直接创建在串池中)
String s1 = "abc";
- new方式
String s2 = new String();
- 利用一个char数组
char[] ch = {'a','s','d'}; String s3 = new String(ch);//"asd"
- 传递一个字节数组,再转为String, 规则为Ascii码表转换
byte bytes = {97,98,99}; String s4 = new String(bytes);//"abc"
String类下的方法:
1. 获取字符串长度 int length() 2. 获取特定字符位置 char cahrAt(int intdex) 3. 获取特定字符的下标 int indexOf(String str) 4. 获取特定字符的最后的一个位置 int lastIndexOf(int ch) 5. 将字符串咋转为字符数组 char[] toCharArray()
2.2 字符串的比较
- == 在基本数据类型比较时,比较的是数据值;在引用数据类型比较时,比较的是地址值 (同一种创建方式,用的地址值相同)
- equals 比较字符串,区分大小写,先比较地址值,地址值不同再比较内容 equalslgnoreCase 比较字符串内容,忽略大小写
(比较内容,用这两个比较)
3. Object类
定义: Object 是所有类的父类,其他类可以使用Object类的所有的方法
3.1, 继承:
public class Round extends Object{ }
public class Round { }
3.2, 构造函数
- Object()
Object ob = new Object();
3.3, 方法
protected Object clone(); 创建并返回一个对象的拷贝
boolean equals(Object obj); 比较两个对象是否相等
Class<?>getClass(); 获取对象运行时的类
int hashCode(); 获取对象的hash值
void notify(); 唤醒该对象上的等待的某个线程
void notify(); 唤醒该对象上的所有等待线程
String toString(); 以字符串形式返回该对象
void wait(); 让线程进入等待状态
boolean equals(Object obj) 比较
1. 指示一些其他对象是否等于此对象。判断两个对象是否相等 public boolean equals(Object obj) { return (this == obj); } 2. 比较两个对象的内容是否一样【重点】 class Employee { int id; String name; public Employee(int id, String name) { this.id = id; this.name = name; } //employee1.equals(employee2) @Override public boolean equals(Object obj) {//employee2 赋值 obj 这叫象上转型 //this ===>employee1 //obj =====>employee2 if (this == obj) {//比较内存地址 return true; } //如果内存地址不一样的话 接下来判断内容 if (obj instanceof Employee) {//为强转做准备 Employee emp = (Employee) obj; return this.id == emp.id && this.name.equals(emp.name); } return false; } } public class Demo4 { public static void main(String[] args) { Employee employee1 = new Employee(1, "老邢"); Employee employee2 = new Employee(1, "老邢"); System.out.println(employee1.equals(employee2)); } }
public int hashCode()
返回对象的哈希码值。 支持这种方法是为了散列表,如
HashMap
提供的那样 。在Object类中,将十六进制的内存地址转为十进制的值,就叫hash值
如果内存地址不一样,那么哈希也是不一样的
hashCode
的总合同是: 如果根据
equals(Object)
方法两个对象相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果请注意,无论何时覆盖equlas方法,通常需要覆盖hashCode方法,以便维护hashCode方法的通用合同,该方法规定相等的对象必须具有相等的哈希码