亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) Java Java面試題 java經(jīng)典面試題集錦(一)

java經(jīng)典面試題集錦(一)

Jul 02, 2020 pm 04:30 PM
java 面試題

java經(jīng)典面試題集錦(一)

一、&與&&的差異

(推薦學(xué)習(xí):java面試題

&運(yùn)算子有兩種用法:

(1)位元與;

(2)邏輯與。

&&運(yùn)算子是短路與(或簡(jiǎn)潔與)運(yùn)算。邏輯與跟短路與的差異是非常巨大的,雖然二者都要求運(yùn)算子左右兩端的布林值都是true,整個(gè)表達(dá)式的值才是 true。

&&之所以稱(chēng)為短路運(yùn)算是因?yàn)?,如?&左邊的表達(dá)式的值是 false,右邊的表達(dá)式會(huì)被直接短路掉,不會(huì)進(jìn)行運(yùn)算。很多時(shí)候我們可能都需要用&&而不是&。

例如在驗(yàn)證使用者登入時(shí)判定使用者名稱(chēng)不是null 而且不是空字串,應(yīng)當(dāng)寫(xiě)為username != null &&!username.equals(""),二者的順序不能交換,更不能用&運(yùn)算符,因?yàn)榈谝粋€(gè)條件如果不成立,根本不能進(jìn)行字串的equals 比較,否則會(huì)產(chǎn)生NullPointerException 例外。

二、用 final 關(guān)鍵字修飾一個(gè)變數(shù)時(shí),是引用不能改變,還是引用的物件不能變?

使用final關(guān)鍵字修飾一個(gè)變數(shù)時(shí),是指引用變數(shù)不能變,引用變數(shù)所指向的物件中的內(nèi)容還是可以改變的。

範(fàn)例:

public class Test10 {
// final修飾基本類(lèi)型的變量
public static final char CHAR = '中';
// final修飾引用類(lèi)型的變量
public static final StringBuffer a = new StringBuffer("StringBuffer");
public static void main(String[] args) {
// 編譯報(bào)錯(cuò),引用不能變
// a = new StringBuffer("hehe");
// 引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的
a.append("xxx");
}
public static int method1(final int i) {
// i = i + 1;// 編譯報(bào)錯(cuò),因?yàn)閒inal修飾的是基本類(lèi)型的變量
return i;
}
// 有人在定義方法的參數(shù)(引用變量)時(shí),可能想采用如下的形式來(lái)阻止方法內(nèi)部修改傳進(jìn)來(lái)的參數(shù)對(duì)象,
// 實(shí)際上,這是辦不到的,在該方法內(nèi)部任然可以增加如下代碼來(lái)修改參數(shù)對(duì)象
public static void method2(final StringBuffer buffer) {
buffer.append("buffer");// 編譯通過(guò),因?yàn)閒inal修飾的是引用類(lèi)型的變量
}
}

三、靜態(tài)變數(shù)和實(shí)例變數(shù)的差別?

語(yǔ)法差異:靜態(tài)變數(shù)需要static關(guān)鍵字修飾,實(shí)例變數(shù)不需要。

程式運(yùn)行時(shí)的區(qū)別:靜態(tài)變數(shù)從屬於類(lèi),實(shí)例變數(shù)從屬於物件。

實(shí)例變數(shù)必須建立了實(shí)例對(duì)象,其中的實(shí)例變數(shù)才會(huì)被分配空間,才能使用這個(gè)實(shí)例變數(shù);

靜態(tài)變數(shù)即類(lèi)別量,只要程式載入了類(lèi)別的位元組碼,靜態(tài)變數(shù)就會(huì)被分配空間,即可使用。

綜上,實(shí)例變數(shù)必須在建立物件後透過(guò)這個(gè)物件來(lái)使用,靜態(tài)變數(shù)可以直接使用類(lèi)別名稱(chēng)來(lái)引用。

注意:(static)靜態(tài)變數(shù)的使用也是有限制的,一個(gè)靜態(tài)方法中不能呼叫類(lèi)別中的非靜態(tài)的方法和變量,static修飾的變數(shù)在類(lèi)別載入後在記憶體中只有一份記憶體空間,可以被一個(gè)類(lèi)別的所有實(shí)例物件所共享。

四、是否可以從一個(gè) static 方法內(nèi)部發(fā)出對(duì)非 static 方法的呼叫?

不可以。

因?yàn)榉莝tatic方法是要與物件關(guān)聯(lián)在一起的,必須建立一個(gè)物件後,才可以在該物件上進(jìn)行方法調(diào)用,而static方法調(diào)用時(shí)不需要建立對(duì)象,可以直接調(diào)用。

也就是說(shuō),當(dāng)一個(gè)static方法被調(diào)用時(shí),可能還沒(méi)有創(chuàng)建任何實(shí)例對(duì)象,如果從一個(gè)static方法中發(fā)出對(duì)非static方法的調(diào)用,那個(gè)非static方法是關(guān)聯(lián)到哪個(gè)對(duì)像上的呢?這個(gè)邏輯無(wú)法成立,所以,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的呼叫。

五、"=="和 equals 方法究竟有什麼差別?

==運(yùn)算子專(zhuān)門(mén)用來(lái)比較兩個(gè)變數(shù)的值是否相同,也就是用來(lái)比較變數(shù)所對(duì)應(yīng)的記憶體中所儲(chǔ)存的數(shù)值是否相同。如果要比較兩個(gè)基本型別的資料或兩個(gè)參考變數(shù)是否相等,只能用==運(yùn)算子。

equals方法用來(lái)比較兩個(gè)獨(dú)立物件的內(nèi)容是否相同,就好比去比較兩本書(shū)是否相同,它比較的兩個(gè)物件是獨(dú)立的。

程式碼範(fàn)例:

String a = new String("AA");
String b = new String("AA");
System.out.println(a==b);
System.out.println(a.equals(b));

兩個(gè)new語(yǔ)句創(chuàng)建了兩個(gè)對(duì)象,然後用a,b兩個(gè)變數(shù)分別指向其中的一個(gè)對(duì)象,這是兩個(gè)不同的對(duì)象,它們的首位址是不同的,即a,b中儲(chǔ)存的數(shù)值是不同的,所以表達(dá)式a==b將傳回false。而兩個(gè)物件中的內(nèi)容是相同的,所以a,equals(b)回傳了true。

注意:字串的比較基本上都是使用equals方法。

如果一個(gè)類(lèi)別沒(méi)有自己定義的equals方法,那麼ta將繼承Object類(lèi)別的equals方法,Object類(lèi)別的實(shí)作碼如下:

boolean equals(Object o)
{
return this==o;
}

這說(shuō)明如果一個(gè)類(lèi)別沒(méi)有自己定義的equals方法,它預(yù)設(shè)的equals方法,等同於使用==運(yùn)算符,也就是比較兩個(gè)變數(shù)所指向的物件是同一個(gè)物件。這時(shí)候使用equals和==會(huì)得到相同的結(jié)果。如果希望寫(xiě)的類(lèi)別能夠比較兩個(gè)實(shí)例物件的內(nèi)容是否相同,則需要覆寫(xiě)equals方法。

以上是java經(jīng)典面試題集錦(一)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶(hù)級(jí)或工作區(qū)級(jí)路徑,用於自定義VSCode設(shè)置。 1.用戶(hù)級(jí)路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級(jí)路徑:項(xiàng)目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開(kāi)始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

在Java的掌握依賴(lài)注入春季和Guice 在Java的掌握依賴(lài)注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴(lài)性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

Python Itertools組合示例 Python Itertools組合示例 Jul 31, 2025 am 09:53 AM

itertools.combinations用於生成從可迭代對(duì)像中選取指定數(shù)量元素的所有不重複組合(順序無(wú)關(guān)),其用法包括:1.從列表中選2個(gè)元素組合,如('A','B')、('A','C')等,避免重複順序;2.對(duì)字符串取3個(gè)字符組合,如"abc"、"abd",適用於子序列生成;3.求兩數(shù)之和等於目標(biāo)值的組合,如1 5=6,簡(jiǎn)化雙重循環(huán)邏輯;組合與排列的區(qū)別在於順序是否重要,combinations視AB與BA為相同,而permutations視為不同;

Python Pytest夾具示例 Python Pytest夾具示例 Jul 31, 2025 am 09:35 AM

fixture是用於為測(cè)試提供預(yù)設(shè)環(huán)境或數(shù)據(jù)的函數(shù),1.使用@pytest.fixture裝飾器定義fixture;2.在測(cè)試函數(shù)中以參數(shù)形式註入fixture;3.yield之前執(zhí)行setup,之後執(zhí)行teardown;4.通過(guò)scope參數(shù)控製作用域,如function、module等;5.將共用fixture放在conftest.py中實(shí)現(xiàn)跨文件共享,從而提升測(cè)試的可維護(hù)性和復(fù)用性。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類(lèi)替代舊的Date和Calendar類(lèi);2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類(lèi)型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線(xiàn)

Google Chrome無(wú)法打開(kāi)本地文件 Google Chrome無(wú)法打開(kāi)本地文件 Aug 01, 2025 am 05:24 AM

ChromecanopenlocalfileslikeHTMLandPDFsbyusing"Openfile"ordraggingthemintothebrowser;ensuretheaddressstartswithfile:///;2.SecurityrestrictionsblockAJAX,localStorage,andcross-folderaccessonfile://;usealocalserverlikepython-mhttp.server8000tor

See all articles