java面试没有全部答对_十道java基础面试题,你能保证全答对吗?
java初級開發面試中經常被問到的問題有好多,下面總結一下常見的問題,先給問題,大家思考一下再看答案。
1.JDK 和 JRE 有什么區別?2.== 和 equals 有什么區別?3.說說final在java中的作用。4.String類的常用方法有哪些?5.Java中操作字符串的類有哪些?它們有什么區別。6.如何將字符串翻轉?7.普通類和抽象類有什么區別?8.接口和抽象類有什么區別?9.java中的io流分幾種?10.list set 和map之間有什么區別?
下面只做簡短的重點回答。
答案:
1.JDK 和 JRE 有什么區別?
答:
JRE(JavaRuntimeEnviroment)是java的運行環境。面向的是Java程序的使用者。JRE是運行Java程序所必須環境的集合,包含JVM標準實現及Java核心類庫。它包括Java虛擬機、Java平臺核心類和支持文件
JDK(JavaDevelopmentKit)是Java開發工具包。面向的是Java程序的開發者。它提供了Java的開發環境(提供了編譯器javac等工具,用于將Java文件編譯為class文件)和運行環境(提供了JVM和Runtime輔助包,用于解析class文件使其得到運行,也就是JRE)。JDK是整個Java的核心,包括了Java運行環境(JRE),一堆Java工具tools.jar和Java標準類庫(rt.jar)。
關系圖如下:
2.== 和 equals 有什么區別?答:== :如果比較的是基本數據類型,則直接比較其存儲的 “值”是否相等;如果比較的是引用類型的變量,則比較的是所指向的對象的地址equals:兩個對象的內容是否相等,最多的是用來比較字符串
引申一個小題,答案在文章最下面找:
Integer a=1;int b=1;Integer c=new Integer(1);Integer d=128;Integer e=128;System.out.println(a==b);System.out.println(a==c);System.out.println(b==c);System.out.println(d==e);
3.說說final在java中的作用。答:分三種情況:用來修飾引用:如果引用為基本數據類型,則該引用為常量,該值無法修改;如果引用為引用數據類型,比如對象、數組,則該對象、數組本身可以修改,但指向該對象或數組的地址的引用不能修改; 如果引用時類的成員變量,則必須當場賦值,否則編譯會報錯。
用來修飾一個方法:當使用 final 修飾方法時,這個方法將成為最終方法,無法被子類重寫。但是,該方法仍然可以被繼承。
用來修飾類時:該類成為最終類,無法被繼承。
4.String類的常用方法有哪些答:
indexOf() 返回指定字符的索引charAt() 返回指定索引處的字符repalce() 字符串替換trim() 去除字符串兩端的空白split() 分割字符串 返回分割后的字符串數組getBytes() 返回字符串的byte類型數組length() 返回字符串的長度toLowerCase() 字符串轉小寫toUpperCase() 字符串轉大寫substring() 截取字符串equals() 字符串比較
5.Java中操作字符串的類有哪些?它們有什么區別。答:Java中操作字符串的類有String、StringBuffer、StringBuilder。
String : final 修飾,String 類的方法都是返回 new String。即對 String 對象的任何改變都不影響到原對象,對字符串的修改操作都會生成新的對象。
StringBuffer : 對字符串的操作的方法都加了 synchronized,保證線程安全。
StringBuilder : 不保證線程安全,在方法體內需要進行字符串的修改操作,可以 new StringBuilder 對象,調用 StringBuilder 對象的 append、replace、delete 等方法修改字符串。
6.如何將字符串翻轉?答:
利用 StringBuffer 或 StringBuilder 的 reverse 成員方法:// StringBufferpublic static String reverse1(String str) {return new StringBuilder(str).reverse().toString();}
利用 String 的 toCharArray 方法先將字符串轉化為 char 類型數組,然后將各個字符進行重新拼接:// toCharArraypublic staticString reverse2(Stringstr) {char[] chars = str.toCharArray();String reverse = "";for (int i = chars.length - 1; i >= 0; i--) {reverse += chars[i];return reverse;
利用 String 的 CharAt 方法取出字符串中的各個字符:// charAtpublicstatic String reverse3(String str) {String reverse = "";int length = str.length();for (int i = 0; i < length; i++) {reverse = str.charAt(i) + reverse;
7.普通類和抽象類有什么區別?答:
抽象類不能被實例化抽象類可以有抽象方法,抽象方法只需申明,無需實現含有抽象方法的類必須申明為抽象類抽象類的子類必須實現抽象類中所有抽象方法,否則這個子類也是抽象類抽象方法不能被聲明為靜態抽象方法不能用 private 修飾抽象方法不能用 final 修飾
8.接口和抽象類有什么區別?答:
抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向實現所有抽象方法的子類對象,接口變量必須指向實現所有接口方法的類對象。抽象類要被子類繼承,接口要被類實現。接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現接口里定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。抽象類里的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那么該子類只能是抽象類。同樣,一個實現接口的時候,如不能全部實現接口方法,那么該類也只能為抽象類。抽象方法只能申明,不能實現,接口是設計的結果 ,抽象類是重構的結果抽象類里可以沒有抽象方法如果一個類里有抽象方法,那么這個類只能是抽象類抽象方法要被實現,所以不能是靜態的,也不能是私有的。接口可繼承接口,并可多繼承接口,但類只能單根繼承。9.java中的io流分幾種?答:
按照流的流向分,可以分為輸入流和輸出流;按照操作單元劃分,可以劃分為字節流和字符流;按照流的角色劃分為節點流和處理流。所有流的基類InputStream/Reader: 所有的輸入流的基類,前者是字節輸入流,后者是字符輸入流。OutputStream/Writer: 所有輸出流的基類,前者是字節輸出流,后者是字符輸出流。
10.list set 和map之間有什么區別?答:List 接口和 Set 接口屬于 Collection 接口,Map 接口和 Collection 接口并列存在(同級)。List:元素可重復,有序性Set:元素不可重復。
LinkedHashSet 按照插入排序SortedSet 可排序HashSet 無序Map:采用鍵值對 存儲元素,key 鍵唯一。
hashmap:底層結構是數組 + 鏈表,無序,線程不安全,效率高,允許有 null(key 和 value 都允許),父類是 AbstractMaptreemap:底層結構是紅黑樹,有序,將數據按照 key 排序,默認是升序排序。hashtable:底層結構是哈希表,無序,線程安全,效率低,不允許有 null 值,父類是 Dictionary//第二題運行結果truefalsetruefalse
總結
以上是生活随笔為你收集整理的java面试没有全部答对_十道java基础面试题,你能保证全答对吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq音乐 android,QQ音乐安卓版
- 下一篇: 2017年,软件开发全过程,描述得不能再