java面试题(java基础)
1.JDK和JRE有什么區別?
JRE: Java Runtime Environment ?(java運行時環境)
JDK:Java Development Kit(java開發工具包)
簡單的說就是如果你只是想要運行一個java程序,JRE就夠了。但如果你要編寫java程序并運行程序,那么你就需要JDK,并且JDK中囊括了JRE。
JRE:
JRE是Java Runtime Environment的縮寫,顧名思義是java運行時環境,包含了java虛擬機,java基礎類庫。是使用java語言編寫的程序運行所需要的軟件環境,是提供給想運行java程序的用戶使用的,還有所有的Java類庫的class文件,都在lib目錄下,并且都打包成了jar。
JDK:
Jdk是Java Development Kit的縮寫,顧名思義是java開發工具包,是程序員使用java語言編寫java程序所需的開發工具包,是提供給程序員使用的。JDK包含了JRE,同時還包含了編譯java源碼的編譯器javac,還包含了很多java程序調試和分析的工具:jconsole,jvisualvm等工具軟件,還包含了java程序編寫所需的文檔和demo例子程序。
2.==和equals()的區別是什么?
基本數據類型(也稱原始數據類型) :byte,short,char,int,long,float,double,boolean。他們之間的比較,應用雙等號(==),比較的是他們的值。但是當==遇到引用數據類型時,就會出問題,它只會比較他們在內存中存放的地址,而不是選取地址里面的值來進行比較。用C/C++的術語來說,操作符 == 比較的是指針的值,方法equals比較的是被指針指向的值。
而String、Integer、Date中的equals()方法再被重寫后,比較的則是引用地址里的值。
3.兩個對象的hashCode()相同,則equals()也一定為true,對嗎?
如果兩個對象hashCode()相等,它們并不一定相等。?因為在散列表中,hashCode()相等,即兩個鍵值對的哈希值相等。然而哈希值相等,并不一定能得出鍵值對相等。補充說一句:“兩個不同的鍵值對,哈希值相等”,這就是哈希沖突。?
反過來其實也不一定相同。正常情況下,因為equals()方法比較的就是對象在內存中的值,如果值相同,那么Hashcode值也應該相同。但是如果不重寫hashcode方法,就會出現不相等的情況。換句話說:重寫equals方法時請必須重寫hashcode,以保證equals方法相等時兩個對象hashcode返回相同的值。如果你不按照規范來,就不一定相同了。
4.final在java中有什么作用?
1.修飾變量?????
? ? ? ? 修飾變量是final用得最多的地方,也是本文接下來要重點闡述的內容。?final成員變量表示常量,只能被賦值一次,賦值后值不再改變。
當final修飾一個基本數據類型時,表示該基本數據類型的值一旦在初始化后便不能發生變化;如果final修飾一個引用類型時,則在對其初始化之后便不能再讓其指向其他對象了,但該引用所指向的對象的內容是可以發生變化的。本質上是一回事,因為引用的值是一個地址,final要求值,即地址的值不發生變化。
final修飾一個成員變量(屬性),必須要顯示初始化。這里有兩種初始化方式,一種是在變量聲明的時候初始化;第二種方法是在聲明變量的時候不賦初值,但是要在這個變量所在的類的所有的構造函數中對這個變量賦初值。
當函數的參數類型聲明為final時,說明該參數是只讀型的。即你可以讀取使用該參數,但是無法改變該參數的值。
2、final修飾類中的方法
?????????????作用:可以被繼承,但繼承后不能被重寫。
3、final修飾類
?????????????作用:類不可以被繼承。
5.java中Math.round(-1.5)等于多少?
? ? Math.round(1.5)的返回值是2,Math.round(-1.5)的返回值是-1。四舍五入的原理是在參數上加0.5然后做向下取整。
總結
以上是生活随笔為你收集整理的java面试题(java基础)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019天梯赛(总结-无题解)
- 下一篇: java面试题2(java基础)