首页 > 其他分享 >常用类学习

常用类学习

时间:2025-01-16 22:33:41浏览次数:1  
标签:常用 对象 System 学习 Person Student new public

学习视频

object类

  • 超类、基类,所有类的直接或间接父类,位于继承树的最顶层。
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承object类否则为间接继承。
  • object类中所定义的方法,是所有对象都具备的方法。
  • object类型可以存储任何对象。
    • 作为参数,可接受任何对象。
    • 作为返回值,可返回任何对象。

getClass()方法

  • public final Class<?> getClass(){}
  • 返回引用中存储的实际对象类型
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致

实例

public class Test {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Student();
        Student student = new Student();
        Class class1 = person1.getClass();
        Class class2 = person2.getClass();
        Class class3 = student.getClass();

        if (class1 == class2) {
            System.out.println("class1 == class2");
        } else {
            System.out.println("class1 != class2");
        }
        if (class2 == class3) {
            System.out.println("class2 == class3");
        } else {
            System.out.println("class2 != class3");
        }
    }
}

image

hashCode()方法

  • public int hashCode() {}
  • 返回该对象的哈希码值。
  • 哈希值根据对象的地址字符串数字使用hash算法计算出来的int类型的数值。
  • 一般情况下相同对象返回相同哈希码,

实例

public class Test {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Student();
        System.out.println(person1.hashCode());
        System.out.println(person2.hashCode());
        person1 = person2;
        System.out.println(person1.hashCode());

    }
}

image

toString()方法

  • public String toString(){}

  • 返回该对象的字符串表示(表现形式)

  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值。

  • //测试类
    public class Test {
        public static void main(String[] args) {
            Person person1 = new Person();
            Person person2 = new Student();
            
            System.out.println(person1.toString());
            System.out.println(person2.toString());
        }
    }
    //重写Student类的toString方法
    public class Student extends Person{
        int name;
        public String toString() {
            return "Student'name:" + name;
        }
    }
    
    

image

@之后的值和hashCode()得到的地址相同,只是进制不同。

equals()方法

  • public boolean equals(Object obj) {}
  • 默认实现为(this==obj),比较两个对象地址是否相同。
  • 可进行覆盖,比较两个对象的内容是否相同,
public class Test {
    public static void main(String[] args) {
        Person person1 = new Student("张三", 18);
        Person person2 = new Student("张三", 18);
        //输出false,因为equals默认对比的是对象的地址,而不是内容(今天面试问了,-_-!)
        System.out.println(person1.equals(person2));
    }
}

equals()方法覆盖的步骤

  • 比较两个引用是否指向同一个对象。
  • 判断obj是否为null。
  • 判断两个引用指向的实际对象类型是否一致。
  • 强制类型转换。
  • 依次比较各个属性值是否相同。

实例

public class Student{
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public boolean equals(Object obj) {
        //比较两个引用是否指向同一个对象。
        if (this == obj) return true;
        //obj是否为空
        if (obj == null) return false;
        //判断两个引用指向的实际对象类型是否一致。
//        if (this.getClass() == obj.getClass()) {
//
//        }
        if (obj instanceof Student) {
            //强制类型转换
            Student student = (Student) obj;
            //判断内容是否一致
            return this.name == student.name && this.age == student.age;
        }
        return false;
    }
}
//调用类
public class Test {
    public static void main(String[] args) {
        Student student1 = new Student("张三", 18);
        Student student2 = new Student("张三", 18);
        //重写后返回true
        System.out.println(student1.equals(student2));
    }
}

finalize()方法

  • 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象进入回收队列。
  • 垃圾对象:没有有效引用指向此对象时,为垃圾对象
  • 垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
  • 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
  • 手动回收机制:使用System.gc(); 通知JVM执行垃圾回收,也只是通知,回收与否还要看JVM的决定
//实例
Student a = new Student();//不回收
new Student();//会回收

包装类

什么是包装类

  • 基本数据类型所对应的引用数据类型。
  • Object可统一所有数据,包装类的默认值是null。

image

标签:常用,对象,System,学习,Person,Student,new,public
From: https://www.cnblogs.com/arioya/p/18675864

相关文章

  • Stacking集成学习算法的多变量时序预测 Matlab代码
    Stacking集成学习算法的多变量时序预测Matlab代码Matlab2023目录Stacking集成学习算法的多变量时序预测Matlab代码Matlab2023预测结果评价指标基本介绍程序设计参考资料预测结果评价指标训练集数据的R2为:0.99805测试集数据的R2为:0.98351训练集数据的MAE为......
  • 【机器学习:十七、多分类问题和Softmax函数】
    1.多分类问题1.1多分类问题定义多分类问题是指一个模型需要从多个类别中选择一个类别作为输出的任务。与二分类问题不同,多分类任务中类别的数量n>2......
  • juju的MarkDown学习笔记
    juju的MarkDown学习笔记Part1:标题一个井号+空格为一级标题两个井号+空格为二级标题n个井号+空格为n级标题(最多6级)Part2:字体加粗:前后各有两个星号斜体:前后各有一个星号斜体又加粗:前后各有三个星号删除:前后各有两个波浪号Part3:引用一个向右的箭头,就可以表示引用了......
  • 学习进度笔记⑩
    Tensorflow线性回归源代码:importtensorflowastfimportnumpyasnpimportmatplotlib.pyplotaspltimportosos.environ["CUDA_VISIBLE_DEVICES"]="0"#设置训练参数,learning_rate=0.01,training_epochs=1000,display_step=50learning_rate=0.01training_epo......
  • 学习进度笔记⑨
    tensorflow基本操作(类似numpy)源代码importtensorflowastfimportosos.environ["CUDA_VISIBLE_DEVICES"]="0"#构造计算图,创建两个常量节点a,b,值分别为2,3a=tf.constant(2)b=tf.constant(3)#创建一个Session会话对象,调用run方法,运行计算图。withtf.Session()assess:......
  • 深度学习-猫狗识别:警惕kaggle中有问题的数据集
    大家注意了,深度学习的书有讲到进行猫狗二元识别的。在kaggle上有一个支持率很高的数据集,无法用于学习。因为在Cat目录中的第666张图片,大小是0,这导致了加载函数的崩溃。考虑到这个图片名字很巧合,我有的理由怀疑这是故意的。 此数据集无法用于《Python深度学习·第2版》望周......
  • 【ArcGIS】基于ChatGPT、GIS与Python机器学习的地质灾害风险评估、易发性分析、信息化
    目录第一章、ChatGPT大语言模型提示词与地质灾害基础及平台介绍第二章、空间信息数据库建设第三章、ChatGPT支持下地质灾害风险评价模型与方法第四章、ChatGPT支持下地质灾害风险性、易损性、易发性评价第五章、基于ChatGPT、Python数据预处理与分析【进阶篇】第六章、Ch......
  • Linux运维学习记录14
    1.Docker的网络模式Docker的网络支持5种网络模式nonebridgecontainerhostnetwork-namebridge:描述:默认网络模式。如果未显式指定网络模式,Docker会将容器连接到一个默认的桥接网络docker0。每个容器都有自己的虚拟网卡,并通过docker0与其他容器通信。特点:容器之间......
  • 前端基础学习问题
    前端学习笔记前端学习的目录a标签和iframe的使用css类选择器及优先级css选择器细节点前端学习的目录前端基础是由html、css、js三部分构成,后又扩展到vue和react等框架。1.html(超文本标记语言)负责页面整个框架的搭建,分为:用于显示信息的标签和用于收集信息的标签。......
  • Pytorch框架与经典卷积神经网络学习Day4|VGG原理与实战
    目录跟学视频1.原理1.1VGG网络诞生背景 1.2VGG网络结构 1.3VGG总结2.实战2.1model.py2.2model_train.py2.3model_test.py跟学视频炮哥带你学_Pytorch框架与经典卷积神经网络与实战1.原理VGG(VisualGeometryGroup)是一个深度卷积神经网络架构,广泛应用于计算机......