文章目录
一 Object 类
IDEA 自动调整代码合适 : 全选然后 CTRL+ALT+L
1.1 clone()
1.1.1使用步骤:
- 在需要调用clone方法的类上实现 Cloneable 的接口
- 重写clone()方法,在自己的clone方法中调用父类的clone方法,将返回值类型强转成本类的类型
- 调用对象的clone方法
1.1.2 测试克隆对象和原对象之间成员变量的联系
原对象与克隆出的对象哈希值虽然不一致,但是他们两个各自的成员变量的哈希值一致,说明成员变量并没有克隆出新的空间.
这种复制方式,我们称为 : 浅拷贝(浅表复制)
1.2.3 深拷贝
深拷贝出的对象与原对象的成员变量不是同一个
步骤:与浅拷贝类似,只是将成员变量也进行一次克隆.
1.2 getClass()
- 返回引用中存储的实际对象的类型,该方法的返回值类型为Class类型
- 应用:通常用于判断两个引用中实际存储对象类型是否一致
1.3 hashCode()
- public int hashCode(){ }
- 返回该对象的哈希码值
- 哈希值 : 根据对象的地址或者字符串或数字使用hash算法计算出来的 int 类型的数值
- 一般情况下相同对象返回相同哈希码
1.4 toString()
- public String toString(){ }
- 返回该对象的字符串表现(表现形式),一般是返回对象的类型加哈希值,如 : 地址@1b6d3586(十六进制)
- 可以根据程序需求覆盖该方法,如展示对象的各个属性
hex : 十六进制
1.5 equals()
-
public boolean equals (Object obj){ }
-
默认比较为(this=obj),比较两个地址是否相同
-
可进行覆盖,比较两个对象的内容是否相同
== 的作用:
基本类型:比较值是否相等
引用类型:比较内存地址值是否相等equals 的作用:
引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。[以上引用自CSDN]((3条消息) == 和 equals 的区别_ConstXiong-CSDN博客_equals)
1.6 finalize()方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0sMLV5l-1626535769663)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210717103301731.png)]
GC : Garage Collector 垃圾回收者
重写finalize()方法:
package oop;
public class Son {
public int age;
public String name;
public Son(String name,int age){
this.name=name;
this.age=age;
}
protected void finalize() throws Throwable {//重写方法,对象回收后自动调用这个方法
System.out.println(this.name+"这个对象被回收了");
}
}
主函数收垃圾对象
package oop;
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
Son s1 = new Son("小帅", 18);
new Son("小帅", 18);//垃圾对象
System.gc();//手动回收垃圾对象,之后自动调用finalize方法
}
二 Math 类
-
public static double sqrt(double a)
返回double值正确舍入的正平方根。
-
public static double pow(double a,double b)
返回 a 的 b次方
-
public static int round(float a)
返回参数最接近的int ,其中int四舍五入为正无穷大
-
public static long round(double a)
返回参数中最接近的long ,其中long四舍五入为正无穷大。
-
public static double random()
返回一个double值为正号,大于等于0.0 ,小于1.0 。 返回的值是从该范围(大约)均匀分布而伪随机选择的。
-
Math.random()
返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。
三 Random 类
使用Random可以生成一个随机数:
Random rand = new randm();//生成一个随机数生成器
random.setSeed(10);//设置随机种子
int s = rand.nextint(1000);
//其中,nextInt(1000)表示生成一个0-1000的随机数
[Random类的使用发方法]([JAVA的Random类(转) - Fskjb - 博客园 (cnblogs.com)](https://www.cnblogs.com/Fskjb/archive/2009/08/29/1556417.html#:~:text=Random类(java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机。. 在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。.,相同种子数的Random对象,相同次数生成的随机数字是完全相同的。. 也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也 ))
计算机中的随机数是伪随机数,如果不确定种子,那么计算机会根据算法找到一个种子,再根据这个种子通过某一种复杂的算法生成一个数.由于每次找到的种子不同,所以生成的数也不同.
四 包装类
- 基本数据类型所对应的引用数据类型
- Object可统一使用所以数据,包装类的默认值是null
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5umndRBH-1626535769665)(C:\Users\77647\AppData\Roaming\Typora\typora-user-images\image-20210717152108050.png)]
- 基本数据类型存放在栈里,引用数据类型存放在堆里
- 将基本数据类型抓换成对象叫装箱,反之叫拆箱
package oop;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int num1 = 10;
Integer integer = new Integer(num1);//第一种装箱方式
Integer integer1=integer.valueOf(num1);//第二种装箱方式
System.out.println(integer1);
int i =integer1.intValue();//拆箱
//JDK1.5 之后,提供自动装箱拆箱
int age=18;
Integer age1=age;//装箱
int age2=age1;//拆箱
}
}
基本数据类型转换为字符串类型
package oop;
import java.util.Random;
public class Main {
public static void main(String[] args) {
//将基本数据类型转换成字符串
int n1=100;
Integer n=n1;
String n2=n1+" ";//方法一,使用+号
String nm=n2.toString();//使用Integer中的toString方法
System.out.println(n2);
System.out.println(nm);
}
}
字符串转换为基本数据类型
package oop;
import java.util.Random;
public class Main {
public static void main(String[] args) {
//字符串转换为基本数据类型
String str="1500";
//String本身就是引用数据类型
//使用Inter.parsexxx()方法
int n6=Integer.parseInt(str);//得到int类型数字
System.out.println(n6);
}
}
parsse : 解析
boolean字符串形式转成基本数据类型
package oop;
import java.util.Random;
public class Main {
public static void main(String[] args) {
//boolean 字符串形式转换成基本数据类型 , "true"--->true,非"true"---->false
String s1="小帅";
String s2 ="true";
Boolean b1=Boolean.parseBoolean(s1);
Boolean b2=Boolean.parseBoolean(s2);
System.out.println(b1);//false
System.out.println(b2);//true
}
}
false
true