Java核心技术卷一 Object,反射,泛型,拷贝

1.equals

2.hashcode

3.clone中的深拷贝,浅拷贝。如何实现重写子类中的clone。

4.获得class类型的类型实例(注意和实例对象分开)的方法

5.反射

6.泛型




1.equals

  这是Object类中提供的一种方法。这个方法作为比较的是两个对象是否引用指向同一个对象地址,实际用处不大(引用地址相同那不就是在用同一个对象了么。。能有不同么-。-)我们在子类中,为了实现其他相等测试时(例如两个对象的某个成员变量是否相等/两个对象是否为同一个类。。等等)时重写这个方法,最好首先时候父类中的equals方法,然后再根据自己需要的功能进行实现。同时还应遵守下一五个特性

2.hashcode

 原先hashcod(哈希值,散列值,散列码)是由一种特殊算法输出的值,输入的对象不同,输出的值基本不可能相同。在这里Java中一般每个对象都有一个默认的hashcode,这个值时对象的存储地址。

散列表Hash table,也叫哈希表),是根据(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表

如果重写了equals方法就必须重写hashcode方法,他们两个定义必须一致(??这是什么,不太懂)。然而字符串类型的hashcode是不一样的,他们如果字符串内容相同,则hashcode相同。算是上面的例子吗


3.clone中的深拷贝,浅拷贝。如何实现重写子类中的clone。

  clone是Object类中提供的另一种方法,由protected修饰,不能直接运用(里面也没写为什么不能直接运用,我理解是Object类这个方法不若是被使用时不能理解你所传的对象中的成员变量是否都为基本数值类型,如成员变量含有其他对象则拷贝方法不同)。

  我们一般只是将对象引用赋予给另一个变量,例如

Student A = new Student();

Student B = A;//这里A和B都是指向同一个对象,因为只是将引用地址传给了另一个变量,这里A或者B对他们所指的对象进行修改时,另外一个变量所指的对象其实也在改变。

 完全复制一个对象到一个新的空间,使得原对象和复制完的对象相互独立,互不影响时,就要使用到clone()方法,不过需要我们自己实现。

clone 希望实现的效果

  如何才能在子类或者其他类中使用clone方法呢?(object提供的clone是浅拷贝,经下列处理不重写也能用)

就算不重写,只是用原来的clone也需要这么做,不过只需要在实现中写成return super.clone(Object obj);

  在这里Cloneable接口其实只是一个标志接口,里面并不需要我们实现任何方法,只是提醒我们这个类已经知道要进行克隆处理。

  什么是深拷贝,浅拷贝呢?

  假设有我们需要进行克隆的对象是A,按照A克隆出来的对象为B。在我们需要克隆的对象中,如果全部都是基本数值类型(int,double。。等等)。那么就没有问题,A或B其中一个对象发生改变,并不会影响另一个对象B或A。

  若是A中的成员变量不是基本类型,而是对象类型。以为这有一个成员变量指向另一个对象。那么前拷贝并不会重新分配一个空间去进行这个成员变量的拷贝。而只是将引用地址传给了B中的成员变量。若是A或者B更改了这个引用类型的成员变量,那么另外一个都是受到影响,意味着其实他们在共用一个成员变量。(如是不可变的对象则没有关系,例如String的一旦构造完就不会改变。若类中方法对对象中的成员变量不作改变的,那么这个类实例化出来的就是不可变对象)

   所以若需要深拷贝则需要我们自己重写,并理清其中的关系。


4.获得class类对象(注意和实例对象分开)的方法

  一。class myclass = obj.getClass();//使用getClass()

  二。


5.反射

意味着我们可以使用一些特殊的函数(方法)来查看一个类的成员变量类型,方法的返回类型,构造器甚至是参数类型等,这些都是利用反射机制来分析类的结构。


6.泛型

  当使用 Collection 时,我们经常要做的一件事情就是要进行类型转换,当转换成所需的类型以后,再对它们进行处理。很明显,这种设计给编程人员带来了极大的不便,同时也容易引入错误。 

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

意味着它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358

推荐阅读更多精彩内容

  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 1,990评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,654评论 18 399
  • 第一章:Java程序设计概述 Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能...
    loneyzhou阅读 1,258评论 1 7
  • 你有你的城我有我的城你进不了我的城我进不去你的城唯有同开城门的那一刻我们可以在自己的城中对视只是对视很快又关了城门...
    冰糖柠檬阅读 268评论 0 2
  • 第一次去老君山,是在27岁生日当天,大雪过后,漫山银装素裹。山峰吹着落在枝头上的雪,迷了眼睛,白了头发,湿了衣服。...
    西瓜猫猫阅读 276评论 0 1