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.pswp.cn/news/382986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382986.shtml
英文地址,請注明出處:http://en.pswp.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…