Cloneable

简介: Cloneable

支持拷贝:实现Cloneable接口,重写clone方法、方法内容默认调用父类的clone方法。

2.1、浅拷贝

       基础类型的变量拷贝之后是独立的,不会随着源变量变动而变

       String类型拷贝之后也是独立的

       引用类型拷贝的是引用地址,拷贝前后的变量引用同一个堆中的对象

public Object clone() throws CloneNotSupportedException {
    Study s = (Study) super.clone();    
    return s;
}

基本类型、引用类型。

浅拷贝 基本类型(int类型)是独立的(改了值会生效),引用类型不独立的(同一份数据,string也是同样的)

2.2、深拷贝

变量的所有引用类型变量(除了String)都需要实现Cloneable(数组可以直接调用clone方法),clone方法中,引用类型需要各

      自调用clone,重新赋值

public Object clone() throws CloneNotSupportedException {
    Study s = (Study) super.clone();
    s.setScore(this.score.clone());
    return s;
}

java的传参,基本类型和引用类型传参

java在方法传递参数时,是将变量复制一份,然后传入方法体去执行。复制的是栈中的内容

所以基本类型是复制的变量名和值,值变了不影响源变量

引用类型复制的是变量名和值(引用地址),对象变了,会影响源变量(引用地址是一样的)

String:是不可变对象,重新赋值时,会在常量表新生成字符串(如果已有,直接取他的引用地址),将新字符串的引用地址赋值给栈中的新变量,因此源变量不会受影响


目录
相关文章
|
1月前
|
存储 算法 Java
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
36 2
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
|
20天前
|
存储 Java
|
存储 Java
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
|
Java
【Java】深拷贝和浅拷贝,Cloneable接口
【Java】深拷贝和浅拷贝,Cloneable接口
178 0
【Java】深拷贝和浅拷贝,Cloneable接口
|
Java 开发者
HashSet 子类|学习笔记
快速学习 HashSet 子类
122 0
HashSet 子类|学习笔记
|
存储 缓存 安全
Java之实现Serializable接口的类,transient关键字
Java之实现Serializable接口的类,transient关键字
122 0
Java之实现Serializable接口的类,transient关键字
|
存储 Java 开发者
ArrayList 子类| 学习笔记
快速学习 ArrayList 子类
123 0
ArrayList 子类| 学习笔记
|
存储 Java 开发者
HashMap 子类|学习笔记
快速学习 HashMap 子类
149 0
HashMap 子类|学习笔记
|
存储 Java 开发者
LinkedHashMap 子类|学习笔记
快速学习 LinkedHashMap 子类
118 0
LinkedHashMap 子类|学习笔记
|
JSON Java 数据格式
Java - 关于 Cloneable 接口 clone 方法(二)
Java - 关于 Cloneable 接口 clone 方法(二)
101 0
Java - 关于 Cloneable 接口 clone 方法(二)