2021-07-17

一 Object 类

IDEA 自动调整代码合适 : 全选然后 CTRL+ALT+L

1.1 clone()

关于clone的使用

1.1.1使用步骤:

  1. 在需要调用clone方法的类上实现 Cloneable 的接口
  2. 重写clone()方法,在自己的clone方法中调用父类的clone方法,将返回值类型强转成本类的类型
  3. 调用对象的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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值