1.JDK與JRE的區別
JDK,Java Development Kit 的簡稱,java的開發工具包,提供了java開發和運行環境;
JRE,Java Runtime Environment 的簡稱,java運行環境,為java的運行提供了所需環境,包含了java虛擬機,java基礎類別庫;
具體來說,JDK其實包含了JRE,同時還包含了編譯java原始碼的編譯器javac,還包含了很多java程式除錯和分析的工具,
簡單來說:如果你需要運行java程式,只需要安裝JRE就可以了,如果你需要撰寫java程式,需要安裝JDK,
2.==與equals的區別是什么
對于==,如果作用于基本資料型別的變數,則直接比較其存盤的值是否相等;
如果作用于參考型別的變數,則比較的是所指向的物件的地址
對于equals方法,注意:equals方法不能作用于基本資料型別的變數
如果沒有對equals方法進行重寫,則比較的是參考型別的變數所指向的物件的地址;
諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的物件的內容
3.兩個物件的hashCode()相同,則equals()也一定為true,對嗎?
不對,兩個物件的hashCode()相同,equals也不一定為true,
首先直接回答不一定,
在java中,equals和hashcode是有設計要求的,equals相等,則hashcode一定相等,反之則不然,
重寫equals()方法,必須重寫hashCode()方法,以保證equals方法相等時兩個物件 hashcode回傳相同的值,
如果重寫了hashCode方法就很可能出現hashCode相同equals為false的情況,
比較兩個物件是否相等就可以重寫hashCode和equals方法,使用equals就能判斷是否相等,
4.final在java中有什么作用?
final修飾的類叫最終類,該類不能被繼承
final修飾的方法不能被重寫
final修飾的變數叫常量,常量必須初始化,初始化之后不能被修改
5.Java中的Math.round(-1.5)等于多少?
等于-1;因為數軸上取值時,中間值(0.5)向右取整,所以正0.5是往上取整,負0.5直接舍棄
6.String屬于基礎的資料型別嗎?
不屬于,
基礎資料型別有八種:
整數型:byte、short、int、long
浮點數型:float、double(默認是double型別,若加后綴F為float型別)
布爾型別:boolean
字符型別:char
而String屬于物件
7.java中操作字串都有哪些類?它們之間有什么區別?
操作字串的類有3個:String、StringBuffer、StringBuilder
區別:
String與其他兩個的區別在于:String宣告的是不可變得物件,底層運用了一個不可變的字符陣列(final char[]),每次操作都會生成新的String物件,然后將指標指向新的String物件,而其他兩個可以在原有物件的基礎上進行操作,所以在經常改變字串內容的情況下最好不要使用String,
StringBuffer和StringBuilder最大的區別在于:StringBuffer是執行緒安全的,而StringBuilder是非執行緒安全的,但StringBuilder的性能卻高于StringBuffer,所以在單執行緒環境下推薦使用StringBuilder,多執行緒環境下推薦使用StringBuffer,
8.String str="i"與String str=new String("i")一樣嗎?
不一樣,因為記憶體的分配方式不一樣,
String str="i"的方式,java虛擬機會將其分配到常量池中
String str=new String("i")則會被分到堆記憶體中
9.如何將字串翻轉?
使用StringBuilder或StringBuffer的reverse()方法
10.String類的常用方法有哪些?
indexOf():回傳指定字符的索引 charAt():回傳指定索引處的字符
replac():字串替換 trim():去除字串兩段的空白
split():分割字串,回傳一個分割后的字串陣列
getBytes():回傳字串的byte型別陣列 length():回傳字串長度
toLowerCase():將字串轉成小寫字母 toUpperCase():將字串轉成大寫字符
substring():截取字串 equals():字串比較
11.抽象類必須要有抽象方法嗎?
不是必須的
12.普通類與抽象類有哪些區別?
普通類不能包含抽象方法,抽象類可以包含抽象方法
抽象類不能直接實體化,普通類可以直接實體化
13.抽象類能使用final修飾嗎?
不能
定義抽象類就是讓其他類繼承的,如果定義為final該類就不能不被繼承,這樣彼此就會產生矛盾
14.介面與抽象類有什么區別?
他們都不能實體化物件,都可以包含抽象方法,而且抽方法必須被繼承的類全部實作
區別:
1.抽象類的子類使用extends來繼承;介面必須使用implements來實作介面
2.抽象類要被子類繼承,介面要被類實作
3.介面只能做方法申明,抽象類中可以做方法申明,也可以做方法實作
4.介面定義的只能公共靜態常量(public static final ),抽象類中的變數是普通變數
5.抽象類里的抽象方法必須全部被子類所實作,如果子類不能全部實作父類抽象方法,那么該子類只能是抽象類,同樣,一個實作介面的時候,如不能全部實作介面方法,那么該類也只能為抽象類,
6.介面中的方法默認使用public修飾;抽象類中的方法可以是任意訪問修飾符
7.類可以實作多個介面,但只能繼承一個超類
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232272.html
標籤:Java
上一篇:原理實踐,全面講解Logstash+Kibana+kafka
下一篇:# 02 公共前綴問題
