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) 之装饰设计模式

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

java读取gxk文件,Java中常见的IO流及其使用

Java中IO流分成两大类,一种是输入流,所有的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源,我们可以通过输入流的read方法读取字节数据;另一种是输出流,所有的输出流都直接或间接继承自O…

matlab+voronoin函数,在Voronoi区域中生成随机点,并创建具有高维数据的Voronoi区域...

我正在使用k-means聚类算法,并且对于每个聚类质心,我试图为质心生成n维Voronoi区域 . 之后我需要从Voronoi区域生成随机点 .我已经尝试使用Matlab / Octave和scipy来获得n维Voronoi区域 . 但我有两个问题 .生成顶点和区域后,如何从区域生成随…

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 v-for=,Vue中v-for循环节点的实现代码

本篇文章给大家带来的内容是关于Vue中v-for循环节点的实现代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Title父循环第一次子循环第一次json数据的第几条数值{{index}}{{indo}}{{bp.index}}{{bp.childName}}let ernew …

matlab寻找向量最小值,matlab – 在排序向量中快速搜索大于x的最小值

由于输入已经排序,自定义二进制搜索应该有效(您可能需要对边缘情况进行一些更新,即请求的值小于数组的所有元素):function [result, res2] binarySearchExample(val)%// Generate example data and sort itN 100000000;a rand(N, 1);a sort(a);%// Run the algo…

搜matlab代码的网站,LTE小区搜索matlab仿真

【实例简介】LTE小区搜索过程的matlab仿真,比较详细,内容不错【实例截图】【核心代码】35738649matlab└── matlab├── Bc.m├── CellSearch.m├── PSS_detection_correction.m├── Tc.m├── absx2.m├── add_header_to_bin.m├── add_h…

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

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

live2d PHP,Live2dHistoire_setting.php

if(!defined(EMLOG_ROOT)) {exit(error!);}function plugin_setting_view(){$live2d_setunserialize(ltrim(file_get_contents(dirname(__FILE__)./live2d.com.php),<?php die; ?>));?>KEY&#xff1a;音乐1&#xff1a;音乐2&#xff1a;音乐3&#xff1a;音乐4&a…

mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常

我正在使用PyMySQL-0.5.0并在将数据从文件加载到远程MySQL实例时遇到了一个模糊的错误/异常。在执行“loaddatalocalinfile…”语句时&#xff0c;我看到一个异常&#xff0c;它说&#xff1a;The used command is not allowed with this MySQL version。在如果PyMySQL支持此操…

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变形弹窗效果示例

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

php 开发高德地图地理围栏,高德地图-地理围栏功能实现

最近需要实现一个地理围栏相关的功能。项目是和骑行相关的&#xff0c;主要是当游客或者骑友定位地址进入到对应的景点的地理围栏里面&#xff0c;则播报景点相关的报道语音。接到需求之后&#xff0c;我开始查看高德的相关API&#xff0c;由于围栏是多边形的&#xff0c;则需要…

java abstractrequest,Java AbstractJackson2HttpMessageConverter類代碼示例

import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter; //導入依賴的package包/類Testpublic void testDefaultConfig() throws Exception {loadBeanDefinitions("mvc-config.xml", 14);RequestMappingHandlerMapping mapping app…

golang调用matlab,Golang中Proto编写和生成

test.proto文件syntax "proto3";//指定proto文件版本package go; //指定文件缩放的package名//定义对象message Test {enum PhoneType //枚举消息类型{MOBILE 0; //proto3版本中&#xff0c;首成员必须为0&#xff0c;成员不应有相同的值HOME 1;WORK 2;}int32 fl…

php折半查找面试题,php 面试题(一)

最近转载一些面试题&#xff0c;希望能给找工作的朋友们带来一点帮助。1.写出5个以上你所知道的常用的Linux命令和它的功能cat&#xff0c;显示文件内容。cd&#xff0c;改变目录路径。cp&#xff0c;复制文件。find&#xff0c;查找文件。grep&#xff0c;搜索、过滤信息。ls&…

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

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

php变量使用,php变量的使用

来源:www.cncfan.com | 2006-1-11 | (有1856人读过)就像大部份的结构化程序&#xff0c;有所谓的全局变量与局部变量&#xff0c;PHP 在这方面也是有相似之处。在 PHP 的程序执行时&#xff0c;系统会在内存中保留一块全局变量的区域。实际运用时&#xff0c;可以透过 $GLOBALS…

php syncml 协议,基于改进的SyncML协议的图像安全同步技术研究

Image secure synchronization technology research based on improved SyncML protocolJIA Zhaolong1贾兆拢(1991-)&#xff0c;女&#xff0c;北京邮电大学硕士生&#xff0c;主要研究方向&#xff1a;网络安全技术与应用MA Zhaofeng2马兆丰(1974-)&#xff0c;男&#xff0c…