java == hashcode,java中==和equals和hashCode的区别

java中==和equals和hashCode的区别

== 的作用:

基本类型:比较的就是值是否相同

引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址)

equals 的作用:

引用类型:默认情况下,比较的是地址值。

public boolean equals(Object anObject) {

2 if (this == anObject) {

3 return true;

4 }

5 if (anObject instanceof String) {

6 String anotherString = (String)anObject;

7 int n = value.length;

8 if (n == anotherString.value.length) {

9 char v1[] = value;

10 char v2[] = anotherString.value;

11 int i = 0;

12 while (n-- != 0) {

13 if (v1[i] != v2[i])

14 return false;

15 i++;

16 }

17 return true;

18 }

19 }

20 return false;

21 }

String类中被复写的equals()方法其实是比较两个字符串的内容

hashCode:

在Java中任何一个对象都具备equals(Object obj)和hashcode()这两个方法,因为他们是在Object类中定义的。

hashcode()方法返回一个int数,在Object类中的默认实现是“将该对象的内部地址转换成一个整数返回”。

hashcode是系统用来快速检索对象而使用

如果 x 和 y 的 hashCode() 不相等,那么 x.equals(y) 一定返回 “false” ;

int、char、long各占多少字节数

整型:

byte:1个字节 8位 -128~127

short :2个字节 16位

int :4个字节 32位

long:8个字节 64位

浮点型:

float:4个字节 32 位

double :8个字节 64位

char:2个字节。

Java多态性理解

用一句话概括就是:事物在运行过程中存在不同的状态

多态的存在有三个前提:

1.要有继承关系

2.子类要重写父类的方法

3.父类引用指向子类对,

String、StringBuffer、StringBuilder区别

StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer吧!

先说一下集合的故事,HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也是如此,他们的原理和操作基本相同,区别在于StringBufferd支持并发操作,线性安全的,适 合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

抽象类和接口的区别,使用场景

1、相同点

A. 两者都是抽象类,都不能实例化。

B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。

2.、不同点

A. interface需要实现,要用implements,而abstract class需要继承,要用extends。

B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。

C. interface强调特定功能的实现,而abstract class强调所属关系。

D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

3、interface的应用场合

A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。

B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。

C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。

D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。

4、abstract class的应用场合

一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:

A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。

B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。

C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能

final,finally,finalize的区别

final 用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。

finally 是异常处理语句结构中,表示总是执行的部分。

finallize 表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。允许回收此前未回收的内存垃圾。所有object都继承了 finalize()方法

成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:

匿名内部类也就是没有名字的内部类

匿名内部类

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

java-string转换成integer的方式及原理

https://www.jianshu.com/p/9eebb4f2ccb1

String的特性

这说明了String的一个重要特性,String 是value不可改变的

然而String类还使用了final来修饰,表明String的第二个重要特性,,它的所有成员变量也都是final的。** String是不可被继承的**

Hashtable 与 HashMap 的简单比较

HashTable 基于 Dictionary 类,而 HashMap 是基于 AbstractMap。Dictionary 是任何可将键映射到相应值的类的抽象父类,而 AbstractMap 是基于 Map 接口的实现,它以最大限度地减少实现此接口所需的工作。

HashMap 的 key 和 value 都允许为 null,而 Hashtable 的 key 和 value 都不允许为 null。HashMap 遇到 key 为 null 的时候,调用 putForNullKey 方法进行处理,而对 value 没有处理;Hashtable遇到 null,直接返回 NullPointerException。

Hashtable 方法是同步,而HashMap则不是。我们可以看一下源码,Hashtable 中的几乎所有的 public 的方法都是 synchronized 的,而有些方法也是在内部通过 synchronized 代码块来实现。所以有人一般都建议如果是涉及到多线程同步时采用 HashTable,没有涉及就采用 HashMap,但是在 Collections 类中存在一个静态方法:synchronizedMap(),该方法创建了一个线程安全的 Map 对象,并把它作为一个封装的对象来返回。

List、Set、Map的区别

List:

1.可以允许重复的对象。

2.可以插入多个null元素。

3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。

4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。

Set:

1 不允许重复对象

2 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。

3 只允许一个 null 元素

Map:

Map不是collection的子接口或者实现类。Map是一个接口。

Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。

TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。

Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。

HashSet 的源码是挺简单的,内部都是用 HashMap 来实现的。利用了 HashMap 的 key 不能重复这个原理来实现 HashSet 。

SparseArray两个数组mKeys、mValues分别存放int与Object,其默认长度为10,mKeys为有序列表,通过二分查找,找到要插入的key对应的index (这里相对于查找hash表应该算是费时间吧,但节省了内存,所以是 时间换取了空间)

通过二分查找到的index,将Value插入到mValues数组的对应位置

d9c664484c39c8fe740748a3eed7d46b.png

markdown

ArrayMap和SparseArray有点类似;其中含有两个数组,一个是mHashes(key的hash值数组,为一个有序数组),另一个数组存储的是key和value,其中key和value是成对出现的,key存储在数组的偶数位上,value存储在数组的奇数位上。

集合Set实现Hash怎么防止碰撞

重写hashcode()和equles()方法

WebSocket与socket的区别

Socket 是操作系统内置的一套操作 TCP/IP 协议的网络(套接字)的方法;

Websocket 是跟 HTTP 对应的,基于 TCP 协议之上的「长连接」协议。

对安卓签名的理解

应用可以被不同的签名文件签名(如果有源代码或者反编译后重新编译)

同一个应用如果签名不同则不能覆盖安装

Serializable原理

Serializable是Java为我们提供的一个标准化的序

Java原生序列化方式是通过实现Serializable接口实现的. 不实现该接口会导致无法序列化, 抛出异常

将对象转换为字节流, 用于网络传输, 例如用于RPC远程调用。

将对象保存到磁盘, 例如tomcat的钝化和活化.

transient关键字:这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作

https://juejin.im/entry/5bf622436fb9a04a0b21cbe7

原文

作者:快感的感知

链接:https://www.jianshu.com/p/5ed769dde6cc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java经典设计模式4,JAVA设计模式(4) 之装饰设计模式

在现实生活中我们的汽车都具备跑的功能,我们可以不改变汽车原有功能的前提下,把它放入一个装修厂,开进去让里面给咱们的车子做一些装饰,开出来之后呢,就具备了上天的功能了(技术可达是可以的哈),这就给原来…

matlab双纵轴刻度覆盖问题,求助: matlab双纵轴换图问题

非常感谢!不过,y2的范围是-1*(10^6),7*(10^6),但是不等分:(把y1的范围调成0.4:0.2:5.8也有28个元素,然后y2也有28个元素,但是不等分,是个曲线,而且,这个曲线的值与y1是有关的。数据见附件syms d…

php最新图片漏洞,2018最新PHP漏洞利用技巧

本文学习了几种新式的php exploit方法,在此做一笔记文件删除漏洞, unlink()Phar 反序列化, file*()PHP对象实例化, ReflectionClass()0x01 WordPress Design Flaw Leads to WooCommerce RCEWooCommerce 3.4.6本版本之前存在任意删除漏洞,因为WordPress的…

php过气了吗,留几手 留几手过气原因

1、很多时候,人们做事情只是为了自己,没有任何理由,没有任何结果,只是为了满足一些内心的期望。2、太理智的人,往往爱到一半,本能地退却。唯一突出的是他的JB。3、怎样才能自由地睡去女文艺青年&#xff1f…

matlab频率阻抗,有分析阻抗的matlab脚本吗?

以上来自于谷歌翻译以下为原文Interesting...- You cross-posted to two forums. I have deleted the other post.- You dont indicate what scope you are using or what you have tried.Most Keysight (and Agilent) scopes have an FFT or Spectrum function available. Hav…

php中修改弹窗的样式,CSS变形弹窗效果示例

大家都知道,弹出窗体已经是现在网页常用的一种交互设计,在这个注重交互动画体验的时代,网页弹窗也是可以来点新鲜点子的,比如今天分享的CSS 变形Modal Window。当用户点击按钮时,按钮将会变成一个全屏的屏幕&#xff0…

次梯度法matlab代码,实例:连续化次梯度法解 LASSO 问题

实例:连续化次梯度法解 LASSO 问题我们将在此页面中构造一个 LASSO 问题并且展示连续化次梯度方法在其中的应用。目录构造LASSO优化问题设定随机种子。clear;seed 97006855;ss RandStream(mt19937ar,Seed,seed);RandStream.setGlobalStream(ss);构造 LASSO 优化问…

qq ip探测仪 php,巧用Win7资源监视器,查看QQ好友IP

用QQ时间比较长、喜欢DIY的朋友都知道,有一些第三方版本的QQ或者插件可以显示好友IP地址,但其实在Windows7中根本用不着第三方软件,在系统自带的资源监视器中,就能很方便的看到QQ好友的IP地址。首先,打开“任务管理器”…

oracle安装显示注册表,windows下oracle 11g r2 安装过程与卸载详细图解

Oracle 11g安装1.解压下载的包,然后进入包内,点击setup.exe开始安装 。2.出现如下:一般把那个小对勾取消,点击下一步进行,弹出下图这个后点‘是3.下图后,选择创建和配置数据库,点击下一步。4.下…

php一行多个商品,【后端开发】php一行展示多个商品怎么实现

php一行展示多个商品怎么实现php可以用来连接数据库查询商品,并输出展示给用户,但想要实现一行展示多个商品需要用到css技术,具体实现如下:1、首先php代码$sql "select * from user";$result $conn->query($sql);i…

linux双网卡端口聚合,Linux双网卡聚合改造

Linux双网卡聚合改造一、环境和需求Linux主机只有一块网卡接到交换机上,为了消除交换机的单点,新增一台交换机,Linux主机端新接一块网卡到新交换机上,对这两块网卡做聚合达到目的。二、物理连线使用网线连接新增交换机和新网卡三、…

linux服务器无法识别xml文件,linux上重启服务器提示找不到smartbi-config.xml文件

(本文档仅供参考)问题服务器上重启服务时,报了如下错误信息:(备注:因安全考虑,新版本的config登录界面已经不展示config文件的加载路径了。)解决方案原因一:这是一个关于在哪个路径下启动smartbi服务的问题。首先&…

linux堆上的内存可执行吗,pwn的艺术浅谈(二):linux堆相关

这是linux pwn系列的第二篇文章,前面一篇文章我们已经介绍了栈的基本结构和栈溢出的利用方式,堆漏洞的成因和利用方法与栈比起来更加复杂,为此,我们这篇文章以shellphish的how2heap为例,主要介绍linux堆的相关数据结构…

manjaro linux下载软件,manjaro linux

manjaro linux下载。manjaro linux是基于Arch Linux开发的Linux操作系统!对于裸服务器、虚拟机、IaaS 和 PaaS 方面都得到了加强,而且内置了强大的数据中心满足商业的各种要求,是强大的混合云平台和物理系统!manjaro linux介绍man…

linux 安装qt 4.6软件,QT学习之一:Linux下安装QT之版本qt-4.6.3

在Linux中分别安装应用于不同平台的QT:PC;嵌入式X86;ARM。这三者PC版、嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:PC平台:在linux中全安装qt&#xff0c…

linux kill命令使用方法,Linux初学者的killall命令(8个例子)

Linux初学者的killall命令(8个例子)我们已经讨论了kill命令 ,如果你想在Linux中终止进程,你可以使用kill命令 。 但是,还有一个命令行实用程序可以用于相同的目的: killall 。 在本教程中,我们将使用一些易于理解的示例…

c语言 字符串 url,如何对URL字符串进行百分号编码

在和web服务进行交互时,我们经常需要对URL中的特定字符和传输的表单数据进行百分号编码。例如,’&’在百分号编码时会变成’%26’。搞清楚 URL中哪部分的哪些字符应该进行百分号编码了并不是件易事。最好的资料好像是RFC 3986和W3C HTML5。出于兴趣和…

击鼓传花击鼓次数相同c语言,JavaScript 实现击鼓传花游戏

大家小时候应该都玩过击鼓传花(Hot Potato)的游戏吧!一群小孩围成一个圆圈,把花尽快的传给旁边的人。某一时刻传花停止,这时花在谁手里,谁就退出圆圈结束游戏。重复此过程,直到剩下最后一个孩子,即为胜者。…

前端的c语言面试题,前端工程师面试题汇总(选择题)

前端工程师面试题汇总(选择题)时间:2017-12-05 来源:前端工程师面试题推荐作为一名前端工程师,我们必不可少的就是参加面试,面试过程中会遇到各类奇葩的问题,今天小编为大家汇总了一些相关的问题,希望可…

android 磁场传感器 罗盘,Android开发获取重力加速度和磁场强度的方法

本文实例讲述了Android开发获取重力加速度和磁场强度的方法。分享给大家供大家参考,具体如下:Android获取重力加速度和磁场强度主要依靠:Sensor.getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic)输入数据&am…