博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java泛型中的对象
阅读量:6291 次
发布时间:2019-06-22

本文共 1206 字,大约阅读时间需要 4 分钟。

import java.util.HashMap;class Key {	String s;	Key(String s) {		this.s = new String(s);	}	@Override	public boolean equals(Object obj) {		if (obj instanceof Key) {			if (s.equals(((Key) obj).s)) {				return true;			}		}		return false;	}	@Override	public int hashCode() {		return s.hashCode();	}	@Override	public String toString() {		return s;	}}class Value {	String s;	Value(String s) {		this.s = new String(s);	}	@Override	public String toString() {		return s;	}}public class Main {	public static void main(String[] args) {		HashMap
a = new HashMap<>(); String usr = "weidiao", password = "20124003"; a.put(usr, password); usr = "haha"; System.out.println(a.get(usr)); password = "haha"; System.out.println(a.get("weidiao")); HashMap
b = new HashMap<>(); Key k = new Key("weidiao"); Value v = new Value("20124003"); b.put(k, v); k.s = "haha"; for (Key i : b.keySet()) { System.out.println(i + " : " + b.get(i)); } }}输出为:null20124003haha : null

 

在这个问题中,改变了Key的值,就再也找不到“20124003”了,因为没有“weidiao”这个key了已经。而根据新key “haha”定位到的value为null。

如果为String类型,那就是深复制,就相当于复制了完完全全的一份,就相当于C++中的结构体复制。

如果为其他引用类型的数据,那就会浅复制,只复制了指针。

如果为基本数据类型,那就是深复制,String也是深复制。

如果为自定义类型,那就是浅复制。

转载地址:http://takta.baihongyu.com/

你可能感兴趣的文章