常用类

简介: 常用类

六、常用类

1、Object类

  • 所有类的父类
  • 因为所有类都继承了Object类,因此省略了extends Object关键字
  • Object中的属性和方法就具有通用性
  • Object只声明了一个空参构造器

主要方法

  • toString()
  • getClass()
  • equals()
  • clone()
  • finalize()
  • 注意:Object类中的getClass(),notify(),notifyAll(),wait()等方法被定义为final类型,因此不能重写

clone()

  • 复制对象
  • 先分配一个和源对象同样大小的空间,在这个空间中创建一个新对象

Java语言中创建对象的方法

  • 使用New操作符创建一个对象
  • 使用clone方法复制一个对象

Clone和new创建对象的区别

  • new:本意是分配内存。首先根据new操作符后面的类型分配对应大小的内存空间,在调用构造函数,填充对象的各个域(即初始化)调用完构造方法后,一个对象创建完毕。将其引用(地址)发布到外部,即可在外部使用。如 Student stu = new Student(); new Student()即创建对象,Student stu代表用一个Student类型的对象接收创建好的新对象返回的地址
  • clone():
  • 第一步和new类似,都是分配内存。
  • 调用clone()方法时,分配的内存和源对象(即调用clone方法的对象)相同
  • 然后再使用源对象中对应的各个域,填充新对象的域。填充完成后,clone方法返回,一个新的相同的对象被创建。
  • 简单来说,就是通过clone方法创建一个和源对象类型相同的对象,按照源对象的规范要求新对象
  • 注意:调用clone()方法的对象必须实现Cloneable接口,重写clone()方法
  • Clone()方法是被protected的,保证只有类里面才能克隆该类对象

Clone与copy的区别

  • copy只是简单的指向了同一片内存地址,修改其中的属性时两个对象都会受到影响

Studentstu=newStudent();

Studentxiaoming=stu; //  指向同一片地址

xiaoming.setAge(18); // stu的age受到影响也变成了18

  • clone:完全拷贝出一个地址不同的对象,修改时不会受到影响

Studentstu=newStudent();

//需要先实现接口

Studentxiaoming= (stu).clone(); //  生成一个和stu一样的方法,且指向不同地址

xiaoming.setAge(18); // stu的age不受影响

Shallow Clone浅克隆和Deep Clone深克隆

  • 浅克隆:直接复制(让新对象的 属性/对象 指向源对象 属性/对象 的地址)
  • 深克隆:再创建一个新的、相同的属性/对象给新对象(地址不同)
  • clone方法执行的是浅拷贝(整体),如果有需要深拷贝的地方就要这个被引用的对象(部分)实现Cloneable接口并重写clone方法

类名 对象名 = (类名)super().clone()使用Cloneable接口的clone()方法深拷贝

2、toString()方法

  • 返回一个字符串,由类名、“@”和此对象哈希码的无符号16进制组成

publicStringtoString() {

returngetClass().getName() +"@"+Integer.toHexString(hashCode());

}

  • 当我们输出一个对象的引用时,实际上调用的是当前对象的toString()

System.out.println(cust.toString);

System.out.println(cust);

  • 此方法用的比较多,一般子类(String、Date、File等)都有覆盖(用于输出字符串值)
  • 推荐在学习阶段,所有属性的类都加上toString()方法
相关文章
|
6月前
|
存储 Java 数据库
java包装类的作用、基本类型和包装类型的区别
java包装类的作用、基本类型和包装类型的区别
92 0
java包装类的作用、基本类型和包装类型的区别
|
6月前
|
安全 算法 Java
常用类以及接口
常用类以及接口
|
4月前
|
Java 索引
JavaSE—常用类 (全)(一)
JavaSE—常用类 (全)(一)
|
4月前
|
安全 Java 测试技术
JavaSE—常用类 (全)(二)
JavaSE—常用类 (全)(二)
|
安全 Java API
Java的第十篇文章——常用类下(String、大数类、日期类和包装类)
Java的第十篇文章——常用类下(String、大数类、日期类和包装类)
|
Java
Java面向对象中 包装类(封装类)的详解
Java面向对象中 包装类(封装类)的详解
59 0
Java面向对象中 包装类(封装类)的详解
|
安全 Java
包装类与泛型,到底区别在哪?
包装类与泛型,到底区别在哪?
100 0
|
存储 Java 索引
Java_常用类之包装类和其他类
Java_常用类之包装类和其他类
101 0
Java并发包下常用类介绍
Java并发包下常用类介绍
148 0
|
存储 安全 算法
3. 常用类
看类的描述 Random类是用于生成随机数的类
62 0
3. 常用类