Object类
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
简单来说就是,Object类是所有类的父类,包括我们所写的类,我们在使用类的时候就会利用Object类中的方法
hashCode()
public int hashCode();
返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算
不同对象的 hashCode() 的值一般是不相同。
但是,同一个对象的hashCode() 值肯定相同。(就好像身份证号一样,两个人的身份账号可能相同,但是一个人的身份证号肯定是不会变的~)
gerClass()
public final Class getClass()
返回此 Object 的运行时类
toString()
public String toString()
返回该对象的字符串表示
上图显示的toString()与我们平时写出来的有一些不一样,别着急哈,仔细看一下输出结果,JAVAlesson.Six.Homework.entity则是定义Student实体类的路径,之后是@+一系列字符(哈希码值)
下图是toString()方法的底层代码
在实际应用中并不会常用到底层的代码,因此大部分情况下我们都会在定义实体类的时候顺便将toString()方法重写。
便可以得到我们想要输出的结果啦
equals()
public boolean equals();
指示其他某个对象是否与此对象“相等”
==号和equals方法的区别
“==” 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals() 方法是一个方法,只能比较引用数据类型,所有的对象都会继承 Object 类中的方法,没有重写 Object 类中的 equals 方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
附上完整代码
package JavaL.T6;
import JAVAlesson.Six.Homework.entity.Student;
public class Demo {
public static void main(String[] args) {
Object object = new Object();
Object object2 = new Object();
// System.out.println(object.hashCode());
// System.out.println(object2.hashCode());
Class c = object.getClass();
// System.out.println(c);
Student student = new Student(53,"耳冉","男");
// System.out.println(student.toString());
Student student1 = new Student(54,"聃","男");
System.out.println(student.equals(student1));
}
}
Math类
package JavaL.T6;
public class MathDemo {
public static void main(String[] args) {
// Math类中的常量
System.out.println("E的值为:"+Math.E);
System.out.println("π的值为:"+Math.PI);
// Math.abs() 计算绝对值
System.out.println("-10086的绝对值为:"+Math.abs(-10086));
// Math类中包含三角函数与反三角函数
/* 余弦cos 正弦sin 正切tan
反余弦acos 反正弦asin 反正切atan
cosh双曲余弦 sinh双曲正弦 tanh双曲正切
*/
System.out.println("cos0余弦值为:"+Math.cos(0));
// Math.cbrt() 计算立方根
System.out.println("27的立方根为:"+Math.cbrt(27));
// Math.sqrt() 计算算术平方根
System.out.println("81的平方根为:"+Math.sqrt(81));
// Math.ceil() 向上取整
System.out.println("2.5向上取整"+Math.ceil(2.5));
System.out.println("2.1向上取整"+Math.ceil(2.1));
// Math.floor() 向下取整
System.out.println("2.9向下取整"+Math.floor(2.9));
// Math.exp() 返回e^x值
System.out.println("e^2值为:"+Math.exp(2));
// Math.min() Math.max() 计算最大最小值
System.out.println("1与999较小的是:"+Math.min(1,999));
System.out.println("1与999较大的是:"+Math.max(1,999));
// Math.Random()函数能够返回带正号的double值 取值范围是[0.0,1.0)
System.out.println("random随机数:"+Math.random());
// Math.round() “四舍五入”值
System.out.println("3.5四舍五入为:"+Math.round(3.5));
System.out.println("3.49四舍五入为:"+Math.round(3.49));
/*
Math.floorMod()
如果参数的符号相同,则floorMod和%运算符的结果是相同的
如果参数的符号不同,则结果与%运算符不同
*/
System.out.println(Math.floorMod(4,3)); // 4 % 3 = 1
System.out.println(Math.floorMod(4,-3)); // 4 % -3 = 1 floorMod(4,-3) = -2
System.out.println(Math.floorMod(-4,3)); // -4 % 3 = -1 floorMod(4,-3) = 2
System.out.println(Math.floorMod(-4,-3)); // -4 % -3 = -1
// Math.toIntExact(),long转int
System.out.println("53.995转化为int:"+Math.toIntExact((long) 53.995));
}
}
附上运行结果
包装类
Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。
数值型包装类都继承至Number,而字符型和布尔型继承至Object。
基本类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本数据和包装类之间的转换
装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型。
//1.自动装箱
int t1=1;
Integer t2=t1;
//2.手动装箱
Integer t3=new Integer(t1);
System.out.println("int类型t1="+t1);
System.out.println("自动装箱,Integer类型对象t2="+t2);
System.out.println("手动装箱,Integer类型t3="+t3);
//1.自动拆箱
int t4=t2;
//2.手动拆箱
//通过intValue()方法返回int值,还可以利用其他方法装换为其他类型
int t5=t2.intValue();
System.out.println("自动拆箱,int型t4="+t4);
System.out.println("手动拆箱,int型t5="+t5);
基本数据类型和包装类的转换
通过包装类Integer.toString()将整型转换为字符串;
通过Integer.parseInt()将字符串转换为int类型;
通过valueOf()方法把字符串转换为包装类然后通过自动拆箱。
//基本数据类型转换为字符串
int t1=12;
String t2=Integer.toString(t1);
System.out.println("int转换为String:"+t2);
//字符串转换为基本数据类型
//通过paerInt方法
int t3=Integer.parseInt(t2);
//通过valeOf,先把字符串转换为包装类然后通过自动拆箱
int t4=Integer.valueOf(t2);
System.out.println("t3:"+t3);
System.out.println("t4:"+t4);