JDK 和 JRE 有什么區(qū)別?
JDK(Java Development Kit):Java 語(yǔ)言的軟件開(kāi)發(fā)工具包。
SE(JavaSE),standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個(gè)版本,從JDK 5.0開(kāi)始,改名為Java SE。
EE(JavaEE),enterprise edition,企業(yè)版,使用這種JDK開(kāi)發(fā)J2EE應(yīng)用程序,從JDK 5.0開(kāi)始,改名為Java EE。從2018年2月26日開(kāi)始,J2EE改名為Jakarta EE [1] 。
ME(J2ME),micro edition,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序,從JDK 5.0開(kāi)始,改名為Java ME。
是面向開(kāi)發(fā)人員的開(kāi)發(fā)工具包,沒(méi)有JDK的話,無(wú)法編譯Java程序(指java源碼.java文件)
百度百科地址:https://baike.baidu.com/item/JDK/1011
JRE是Java Runtime Enviroment是指Java的運(yùn)行環(huán)境,是面向Java程序的使用者,擁有JRE環(huán)境才可運(yùn)行class文件或者jar包
== 和 equals 的區(qū)別是什么?
對(duì)于基本類(lèi)型和引用類(lèi)型 == 的作用效果是不同的,如下所示:
- 基本類(lèi)型:比較的是值是否相同;
- 引用類(lèi)型:比較的是引用是否相同;
equals 本質(zhì)上就是 ==,只不過(guò) String 和 Integer 等重寫(xiě)了 equals 方法,把它變成了值比較??聪旅娴拇a就明白了。
總結(jié) :== 對(duì)于基本類(lèi)型來(lái)說(shuō)是值比較,對(duì)于引用類(lèi)型來(lái)說(shuō)是比較的是引用;而 equals 默認(rèn)情況下是引用比較,只是很多類(lèi)重新了 equals 方法,比如 String、Integer 等把它變成了值比較,所以一般情況下 equals 比較的是值是否相等。
兩個(gè)對(duì)象的 hashCode() 相同, 那么 equals() 也一定為 true嗎?
不對(duì),兩個(gè)對(duì)象的 hashCode() 相同,equals() 不一定 true。
但是equals()相等,hashCode()一定相等
final 在 Java 中有什么作用?
final作為Java中的關(guān)鍵字可以用于三個(gè)地方。用于修飾類(lèi)、類(lèi)屬性和類(lèi)方法。
特征:凡是引用final關(guān)鍵字的地方皆不可修改!
(1)修飾類(lèi):表示該類(lèi)不能被繼承;
(2)修飾方法:表示方法不能被重寫(xiě);
(3)修飾變量:表示變量只能一次賦值以后值不能被修改(常量)。
Java 中的 Math. round(-1. 5) 等于多少?
Math.round(-1.5)的返回值是-1。四舍五入的原理是在參數(shù)上加0.5然后做向下取整。
String 屬于基礎(chǔ)的數(shù)據(jù)類(lèi)型嗎?
String是final修飾的java類(lèi),java中的基本類(lèi)型一共有8個(gè),它們分別為:
字符類(lèi)型:byte,char
基本整型:short,int,long
浮點(diǎn)型:float,double
布爾類(lèi)型:boolean
此外需要說(shuō)明 有的文章中吧void也算是一種基本的數(shù)據(jù)類(lèi)型
Java 中操作字符串都有哪些類(lèi)?它們之間有什么區(qū)別?
操作字符串的類(lèi)有:String、StringBuffer、StringBuilder。
String 和 StringBuffer、StringBuilder 的區(qū)別在于 String 聲明的是不可變的對(duì)象,每次操作都會(huì)生成新的 String 對(duì)象,然后將指針指向新的 String 對(duì)象,而 StringBuffer、StringBuilder 可以在原有對(duì)象的基礎(chǔ)上進(jìn)行操作,所以在經(jīng)常改變字符串內(nèi)容的情況下最好不要使用 String。
StringBuffer 和 StringBuilder 最大的區(qū)別在于,StringBuffer 是線程安全的,而 StringBuilder 是非線程安全的,但 StringBuilder 的性能卻高于 StringBuffer,所以在單線程環(huán)境下推薦使用 StringBuilder,多線程環(huán)境下推薦使用 StringBuffer。
String str="i"與 String str=new String("i")一樣嗎?
不一樣,因?yàn)閮?nèi)存的分配方式不一樣。String str="i"的方式,Java 虛擬機(jī)會(huì)將其分配到常量池中;而 String str=new String("i") 則會(huì)被分到堆內(nèi)存中。這一點(diǎn)在equals()方法和==方法的時(shí)候要注意。