java重要基礎知識點_java基礎知識點整理

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

java基礎知識點整理1.&和&&的區別?

&:邏輯與(and),運算符兩邊的表達式均為true時,整個結果才為true。

&&:短路與,如果第一個表達式為false時,第二個表達式就不會計算了。

2.在java中如何跳出當前的多重循環?

在循環語句外前面定義一個標號,然后在里層循環體的代碼中使用帶有標號的break語句,即可跳出循環。

比如:

ok:for (int i = 0; i < 10; i++) {{for (int j = 0; j < 10; j++) {break ok;}}}

3.最有效率的方法算出2X8等于幾?

使用位運算,效率最高:2<<3,表示2向右移動了3位,就相當于2乘以2的3次方,結果:16。

4.”==”和equals方法究竟有什么區別?

==:表示兩個變量的值是否相等,比較兩個基本數據類型的數據或者引用變量,用==。

equals:用于比較兩個獨立對象的內容是否相同。字符串的比較也用equals。

5. Int和integer的區別?

Int是Java的8中基本數據類型之一,integer是int的封裝類。Int類型的默認值為0,integer默認值為null,所以區別在于,integer能區分出null值和0的區別。

6.三個與取整有關的方法:

Math.ceil():表示向上取整;Math.ceil(11.3)=12;Math.ceil(-11.3)=-12。

Math.floor():表示向下取整;Math.floor(11.6)=12;Math.floor(-11.6)=-12。

Math.round():表示四舍五入;Math.round(11.5)=12;Math.round(-11.5)=-11;

Marh.round(11.3)=11;Math.round(-11.3)=--11;

7.重載和重寫的區別?

重載(Overload):函數名相同,參數不同。可以改變返回值類型,參數的個數和類型。

重寫(Override):和父類的的方法名稱、參數完全相同。

8.面向對象的特征?

封裝:將對象屬性和方法的代碼封裝到一個模塊中,也就是一個類中,保證軟件內部具有優良的模塊性的基礎,實現“高內聚,低耦合”。

抽象:找出一些事物的相似和共性之處,然后歸為一個類,該類只考慮事物的相似和共性之處。抽象包括行為抽象和狀態抽象。

繼承:在已經存在的類的基礎上進行,將其定義的內容作為自己的內容,并可以加入新的內容或者修改原來的方法適合特殊的需要。

多態:同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果,就是多態,簡單點說:就是用父類的引用指向子類的對象。目的:提高代碼復用性,解決項目中緊耦合問題,提高可擴展性。

多態的機制:靠的是父類的或者接口的引用變量可以指向子類或者具體實現類的實例對象。

9.String和StringBuffuer、StringBuilder的區別?

String:字符串數值不可變;

StringBuffer:字符串可修改,可以動態構造字符數據。StringBuffer類是可以通過Append()來修改值。線程安全。

StringBuilder:線程不安全。

三者在執行速度方面的比較:StringBuilder > StringBuffer > String

對于三者使用的總結:

1.如果要操作少量的數據用 = String

2.單線程操作字符串緩沖區下操作大量數據 = StringBuilder

3.多線程操作字符串緩沖區下操作大量數據 = StringBuffer

10.java中有幾種方法實現一個線程?用什么關鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?

第一種:繼承Thread類。New Thread(){}.start():表示調用子類對象的run方法。

第二種:實現Runable接口。

第三種:線程池創建多線程。

第四種:實現Callable接口,重寫call函數(

繼承Thread類實現多線程,重寫run方法時沒有返回值也不能拋出異常,使用Callable接口就可以解決這個問題。

Callable接口和Runnable接口的不同之處:

1.Callable規定的方法是call,而Runnable是run

2.call方法可以拋出異常,但是run方法不行

3.Callable對象執行后可以有返回值,運行Callable任務可以得到一個Future對象,通過Future對象可以了解任務執行情況,可以取消任務的執行,而Runnable不可有返回值

)

用synchronized 關鍵字修飾同步方法。

反對使用stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態,那么其他線程能在那種狀態下檢查和修改它們,結果很難檢查出真正的問題所在。

suspend() 方法容易發生死鎖。調用 suspend() 的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被" 掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用 suspend() ,而應在自己的 Thread 類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該掛起,便用 wait() 命其進入等待狀態。若標志指出線程應當恢復,則用一個 notify()重新啟動線程。

11.sleep()和wait()有什么區別?

sleep是線程被調用時,占著cpu休眠,其他線程不能占用cpu,os認為該線程正在工作,不會讓出系統資源,wait是進入等待池等待,讓出系統資源,其他線程可以占用cpu。

sleep()和wait()方法的區別可從兩個角度闡述:

1.cpu的搶占權;2.鎖旗標是否釋放

兩者都會釋放cpu的搶占權;

wait()方法執行完即可釋放鎖旗標,進入線程的等待隊列;

sleep()執行完,不會釋放,進入等待隊列;

12. 同步和異步的區別?同步的實現方法?

同步:發送一個請求,等待返回,然后再發送下一個請求。實現:1. Synchronized修飾;2.wait和notify。

異步:發送一個請求,不等待返回,隨時可以再發送下一個請求。

同步可以避免出現死鎖,讀臟數據的發生,一般共享某一資源的時候用,如果每個人都有修改權限,同時修改一個文件,有可能使一個人讀取另一個人已經刪除的內容,就會出錯,同步就會按順序來修改。

同步和異步最大的區別就在于,一個需要等待,一個不需要等待。

比如廣播,就是一個異步例子。發起者不關心接收者的狀態。不需要等待接收者的返回信息。

電話,就是一個同步例子。發起者需要等待接收者,接通電話后,通信才開始。需要等待接收者的返回信息。

13. 請對比synchronized與java.util.concurrent.locks.Lock的異同?

主要相同點:Lock能完成synchronized所實現的所有功能

主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395743.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網易云音樂的算法有什么特點_當算法設計音樂廳時會發生什么?

網易云音樂的算法有什么特點Here are three links worth your time:這是三個值得您花費時間的鏈接&#xff1a; What happens when algorithms design a concert hall? (3 minute read) 當算法設計音樂廳時會發生什么&#xff1f; ( 閱讀3分鐘 ) How to land a top-notch tec…

開機發現超級管理員賬戶不見了

今天出現了一個怪現象&#xff0c;連接打印機的電腦上沒有超級管理員賬戶&#xff0c;只有一個剛建立的新賬戶&#xff0c;這是怎們回事來&#xff1f;噯&#xff0c;原來啊&#xff0c;安裝Windows XP時&#xff0c;如果又設置了一個管理員賬戶&#xff0c;那么系統內置沒有密…

vs自帶iis局域網調試

http://www.cnblogs.com/liluping860122/p/4685564.html轉載于:https://www.cnblogs.com/wcLT/p/5594252.html

java.util.set cannot be assigned from null_Java中有關Null的9件事

對于Java程序員來說&#xff0c;null是令人頭痛的東西。時常會受到空指針異常(NPE)的騷擾。連Java的發明者都承認這是他的一項巨大失誤。Java為什么要保留null呢&#xff1f;null出現有一段時間了&#xff0c;并且我認為Java發明者知道null與它解決的問題相比帶來了更多的麻煩&…

node.js事件驅動_了解Node.js事件驅動架構

node.js事件驅動by Samer Buna通過Samer Buna 了解Node.js事件驅動架構 (Understanding Node.js Event-Driven Architecture) Update: This article is now part of my book “Node.js Beyond The Basics”.更新&#xff1a;這篇文章現在是我的書《超越基礎的Node.js》的一部分…

如何基于 Notadd 構建 API (Laravel 寫 API)

如何基于 Notadd 構建 API Notadd 底層實現了 passport 機制&#xff0c;有統一的授權管理&#xff0c;主要支持兩種方式進行 API 授權&#xff0c;一個是 client&#xff0c;領一個是 passport&#xff0c;這個在其他文檔中有做詳細的說明。 這里主要說的是&#xff0c;如何基…

mysql 基于集_一種基于記錄集查找特定行的方法_MySQL

問&#xff1a;我的一個表中包含了名為IdValue的單列主鍵。對于給定的IdValue值&#xff0c;我希望找到緊鄰目標值之前和之后的表行(假定結果按IdValue排序)。怎樣才能不使用游標而通過一個基于集合的方法得到需要的結果&#xff1f;答&#xff1a;Transact-SQL是一個基于集合的…

react 交互_如何在React中建立動畫微交互

react 交互Microinteractions guide a user through your application. They reinforce your user experience and provide delight.微交互引導用戶完成您的應用程序。 它們可以增強您的用戶體驗并帶來愉悅感。 You may have seen some of the slick examples of microinterac…

HTTPS與MITM

HTTPS:基于SSL/TSL的HTTP協議 MITM:Man-In-The-Middle中間人攻擊 Https下中間人攻擊的思路&#xff1a; 1 去https化 2 向CA申請相似域名的證書 防范&#xff1a; 睜大雙眼轉載于:https://www.cnblogs.com/the-owl/p/5596254.html

PCB genesis自制孔點 Font字體實現方法

一.先看genesis原有Font字體 在PCB工程CAM加孔點字體要求時,通常我們直接用Geneis軟件給我們提供了2種孔點字體canned_57與canned_67,但此字體可能不能滿足各個工廠個性化需求&#xff0c;比如&#xff1a;孔密度&#xff0c;孔間距&#xff0c;孔形狀分布&#xff0c;如果有一…

Google 最新的 Fuchsia OS【科技訊息摘要】

轉自&#xff1a;http://www.cnblogs.com/pied/p/5771782.html 就是看到篇報道&#xff0c;有點好奇&#xff0c;就去FQ挖了點東西回來。 我似乎已開始就抓到了重點&#xff0c;沒錯&#xff0c;就是 LK 。 LK 是 Travis Geiselbrecht 寫的一個針對 ARM 的嵌入式操作系統&#…

java 03_Java基礎03—流程控制

流程控制參考資料&#xff1a;《Java從入門到精通》/明日科技編著. 4版. 北京&#xff1a;清華大學出版社&#xff0c;2016一、復合語句Java的復合語句由“{”開始&#xff0c;“}”結束&#xff0c;又稱為塊語句。復合語句都是由上至下被執行&#xff1b;復合語句中可以嵌套復…

這三種策略可以幫助女性在科技領域蓬勃發展

by Shubhi Asthana通過Shubhi Asthana 這三種策略可以幫助女性在科技領域蓬勃發展 (These 3 strategies can help women thrive in tech) As someone early on in her career, I’ve attended a few tech talks, conferences, and meetups. One thing I noticed is not many w…

手機衛士09_應用程序四種查看_ListView小標題_進程管理

手機衛士09_應用程序四種查看_ListView小標題_進程管理 1.懸浮窗體的功能實現: 1.1.應用程序的卸載: 包安裝器 packageInstall,包卸載packageruninstall intent.setData(Uri.pare(“package:” 應用程序包名)) 卸載完之后記得更新list集合,更新適配器. 但是不確定用戶是否點了…

pandas:根據行間差值進行數據合并

1. 問題描述 在處理用戶上網數據時&#xff0c;用戶的上網行為數據之間存在時間間隔&#xff0c;按照實際情況&#xff0c;若時間間隔小于閾值&#xff08;next_access_time_app&#xff09;&#xff0c;則可把這幾條上網行為合并為一條行為數據&#xff1b;若時間間隔大于閾值…

Flask學習 一 基本結構

-from flask import Flaskfrom flask import Flask,render_template-from flask import request-from flask import make_response-from flask import abort-from flask import redirect-# __name__參數決定程序的根目錄app Flask (__name__)-# app.route (/)-# def hello_wor…

java8的路徑_什么是路徑?

# 什么是路徑&#xff1f;文件系統以某種形式的媒體(通常為一個或多個硬盤驅動器)存儲和組織文件&#xff0c;使得它們可以容易地被檢索。目前使用的大多數文件系統將文件存儲在樹形(或分層)結構中。在樹的頂部是一個(或多個)根節點。在根節點下&#xff0c;有文件和目錄(Micro…

為什么toString方法可以用來區分數組和對象?

首先大家都應該知道在javascript中只有是對象都存在toString方法&#xff0c;將調用該方法的值轉換為字符串返回&#xff0c;如下&#xff1a; var arr [1, 2, 3];console.log(arr.toString()); //1,2,3 但對象的toString方法和其他優點不同&#xff0c;其返回的是類似 [objec…

平安 開源 數據庫 實踐_刻意的實踐-成為開源

平安 開源 數據庫 實踐by Anthony Ng由Anthony Ng 刻意的實踐-成為開源 (Deliberate Practice — Becoming an Open Sourcerer) I recently finished reading Cal Newport’s book, So Good They Can’t Ignore You. It’s a quick read, and it introduced me to the concept…

更新Composer依賴報錯處理Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe...

更新Composer依賴報錯處理 Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::search() must be compatible with Composer\Repository\RepositoryInterface::search($query, $mode 0, $type NULL) in C:\Users\Arthur\AppData\Ro…