1. 程式人生 > >java基礎知識點整理大全

java基礎知識點整理大全

資料型別

1)==用於基本資料型別的比較,在引用資料型別上面使用的時候比較的是地址值
例:
下面程式的執行結果是()
String str1 = “hello”;
String str2 = “he” + new String(“llo”);
System.err.println(str1 == str2);

A hello B he C true D false

答案:false 解析:因為str2中的llo是新申請的記憶體塊,而==判斷的是物件的地址而非值,所以不一樣。如果是String str2 = str1,那麼就是true了。

方法

1)普通類的方法名字其實是可以與類名一致的,和建構函式唯一的區別就是建構函式沒有返回值型別,而普通方法有返回值型別
例:
下列說法正確的有()
A. class中的constructor不可省略
B. constructor必須與class同名,但方法不能與class同名
C. constructor在一個物件被new時執行
D.一個class只能定義一個constructor

答案:C 解析:這裡可能會有誤區,其實普通的類方法是可以和類名同名的,
和構造方法唯一的區分就是,構造方法沒有返回值

2)引數傳遞與修改
不管是物件、基本型別還是物件陣列、基本型別陣列,在函式中都不能改變其實際地址但能改變其中的內容

例:
下列程式的執行結果是:

public class Example {
  String str = new String("good");
  char[] ch = { 'a', 'b', 'c' };
  public static void main(String args[]) {
             Example ex = new Example();
             ex.change(ex.str, ex.ch);
             System.out.print(ex.str + " and ");
             System.out
.print(ex.ch); } public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } }

A、 good and abc
B、 good and gbc
C、 test ok and abc
D、 test ok and gbc

switch語句

1)關於switch語句:
case語句後面如果沒有break,那麼就會一直往下執行。
例:
下面的方法,當輸入為2的時候返回值 public static igetValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A 0 B 2 C 4 D 10

答案:D 解析:注意這裡case後面沒有加break,所以從case 2開始一直往下執行。

執行緒

Thread類中start()方法和run()方法的使用區別:
start()是用來啟動一個執行緒,當呼叫了start方法之後,系統才會開啟一個新的執行緒,進而呼叫run()方法來執行任務,而單獨的呼叫run()方法其實就和普通方法一樣,按照順序執行,不會單獨開闢一個執行緒,從而失去了執行緒的特性了。因此在啟動一個執行緒的時候一定要使用start()而不是run()。
例:
下面程式的執行結果:()

  public static void main(String args[]) {
             Thread t = new Thread() {
                 public void run() {
                     pong();
                 }
             };
             t.run();
             System.out.print("ping");
  }

  static void pong() {
             System.out.print("pong");
  }

A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出

答案:B 解析:這裡考的是Thread類中start()和run()方法的區別了。start()用來啟動一個執行緒,當呼叫start方法後,系統才會開啟一個新的執行緒,進而呼叫run()方法來執行任務,而單獨的呼叫run()就跟呼叫普通方法是一樣的,已經失去執行緒的特性了。

介面

1)關於介面和介面中的修飾符

  1. 介面中的成員常量和方法都必須是public型別的。因為介面用於描述系統對外提供的所有服務,要確保外部使用者能夠訪問它們。
  2. 介面中的方法都是抽象型別abstract的。因為介面僅僅描述系統能夠做什麼,但是不指明如何去做,為此介面中的方法都是抽象型別的。
  3. 介面中的變數型別只有final,static型別。因為介面中的變數是所有實現類所共有的,既然共有,就是不變的東西,所以變數是不可變的final型別,也就是常量了;介面不涉及和任何具體例項相關的細節,通俗的話講就是介面不能夠被new,因此介面沒有構造方法,不能夠被例項化,沒有例項變數,只有靜態static變數。
  4. 介面中不能夠出現變數,如果有變量出現,就和介面提供的統一抽象的這種思想相抵觸了。所以介面中的屬性必然是一個常量,只能夠讀不能夠被修改,這樣才能為實現介面的物件提供一個統一的屬性。通俗的講,如果有認為是要變化的東西,就放到實現介面的類中去實現,而不應該放到介面中去,介面只是對一類事物的屬性和行為更高層次的抽象。
  5. 綜上:介面的方法預設是public abstract,介面的屬性預設是public static final常量,且必須賦值。

例:
Java介面的修飾符可以為()

A private B protected C final D abstract

答案:cd

集合

1)ArrayList擴充問題
ArrayList預設的長度為10個,但是如果在宣告的時候指定了長度的話,就會一次性建立指定長度,而不需要擴充。
例:
ArrayList list = new ArrayList(20);中的list擴充幾次()

A 0 B 1 C 2 D 3

答案:A 解析:這裡有點迷惑人,大家都知道預設ArrayList的長度是10個,所以如果你要往list裡新增20個元素肯定要擴充一次(擴充為原來的1.5倍),但是這裡顯示指明瞭需要多少空間,所以就一次性為你分配這麼多空間,也就是不需要擴充了

異常

1)異常try……catch語句塊的執行順序
當有多個catch語句的時候,從最前面的catch語句塊依次進行異常型別的匹配,僅僅匹配一個,當按順序來從上到下匹配到一個之後,後續的匹配都不會再執行了;如果父類異常在子類異常的前面的時候,首先匹配的就是父類異常,子類異常是不會得到匹配並執行的。所以在寫程式碼的時候,父類異常Exception一般都放在catch語句塊的最後一個。
例:
getCustomerInfo()方法如下,try中可以捕獲三種類型的異常,如果在該方法執行中產生了一個IOException,將會輸出什麼結果()

public void getCustomerInfo() {
             try {
               // do something that may cause an Exception
             } catch (java.io.FileNotFoundException ex) {
                    System.out.print("FileNotFoundException!");
             } catch (java.io.IOException ex) {
                    System.out.print("IOException!");
             } catch (java.lang.Exception ex) {
                    System.out.print("Exception!");
             }
  }

A IOException!
B IOException!Exception!
C FileNotFoundException!IOException!
D FileNotFoundException!IOException!Exception!

答案:A 解析:考察多個catch語句塊的執行順序。當用多個catch語句時,catch語句塊在次序上有先後之分。從最前面的catch語句塊依次先後進行異常型別匹配,這樣如果父異常在子異常類之前,那麼首先匹配的將是父異常類,子異常類將不會獲得匹配的機會,也即子異常型別所在的catch語句塊將是不可到達的語句。所以,一般將父類異常類即Exception老大放在catch語句塊的最後一個。

2)編譯時異常:變數沒有初始化的時候不能夠輸出。
Java中所有定義的基本型別或物件都必須初始化才能輸出值,否則會發生編譯時異常。
例:
下面程式碼的執行結果為:()

import java.io.*;
import java.util.*;

public class foo{
  public static void main (String[] args){
             String s;
             System.out.println("s=" + s);
  }
}

A 程式碼得到編譯,並輸出“s=”
B 程式碼得到編譯,並輸出“s=null”
C 由於String s沒有初始化,程式碼不能編譯通過
D 程式碼得到編譯,但捕獲到 NullPointException異常

答案:C

相關推薦

java基礎知識點整理大全

資料型別 1)==用於基本資料型別的比較,在引用資料型別上面使用的時候比較的是地址值 例: 下面程式的執行結果是() String str1 = “hello”; String str2 = “he” + new String(“llo”); Sys

java基礎知識點整理

1.&和&&的區別? &:邏輯與(and),運算子兩邊的表示式均為true時,整個結果才為true。 &&:短路與,如果第一個表示式為false時,第二個表示式就不會計算了。 2.在java中如何跳出當前的多重迴圈? 在迴圈語句外前面定義一個標號,然後在裡層迴圈

java基礎知識點、面試選擇題歸納整理

前言 之前刷了一些題,為了方便自己日後可以快速的查缺補漏以及方便有需要的人,這裡整理了一些個人感覺比較有意義的選擇題,題目均來自牛客網的java相關選擇題。 如各位看官發現哪裡寫的不對的,請幫忙指出,謝謝。 題目基本就更新完了(2018.01.30) p

Java語言基礎知識點整理

1、JVM是執行Java程式的虛擬機器。簡單說JRE包含JVM,JVM是執行Java程式的核心虛擬機器,而執行Java程式不僅需要核心虛擬機器。還需要其他的類載入器、位元組碼校驗器以及大量的基礎類庫。JRE除了包含JVM之外,還包含執行Java程式的其他環境支援2、Javac

Java基礎知識整理(一)

顯式 sys 轉換 強制 print pri 字符 parse ger Java開發環境JDK(Java編輯器、Java運行工具(JRE作用)、Java文檔生成工具、Java打包工具) 1.Java是嚴格區分大小寫的。2.Java程序中一句連續的字符串不能分開在兩行書寫,

java基礎知識點回顧

rup override text 使用 public fault 進程同步 訪問 都是 java基礎數據類型 bollean 1 char 2 byte 1, short 2 , int 4, long 8 float 4, double 8 --------------

JAVA基礎知識點

表達式2 分開 strong ole 出現 bool tro last 位置 聲明常量:final 數據類型 常量名稱[=值] 例如 : final double PI = 3.1415926; 三元運算符 : 條件式?值1:值2 例如 : boolean b=

java基礎知識整理

最後一行 post 使用 數字 關鍵字void ssp oid 布爾 .exe 1.JVM、JRE和JDK的區別。   (1)JVM(Java Virtual Machine):java虛擬機,用於保證java跨平臺的特性,java語言是跨平臺的,jvm不是跨平臺的。   

一些必須掌握的Java基礎知識點

搜索 home 構建 kit 列表 classpath cto lean pri 我們先來了解一下Java基礎知識,以便於我們對Java的體系有個全面掌握和認知。 一、基礎知識 1.Java的三種技術架構 JAVAEE:Java Platform Enterprise Ed

Java基礎整理

完成 col 代碼塊 如同 classpath 對象的引用 書寫 style integer java基礎: 1、==和equals的區別: 基本類型和引用類型 ==用來比較值,equals是比較對象的引用,即是否指向同一個對象? String str1 = new Str

Java 基礎知識整理 (待整理)

ioc容器 invoke string spa 額外 器) cas 描述符 如果 JVM之類加載器(ClassLoader)基本介紹 類加載器用於將class文件加載到JVM中去執行。下面介紹類加載器涉及到的基本概念和加載基本過程。 一、Java虛擬機與程序的生命

javascript基礎知識點整理

作為後端程式設計師,由於現在很多開發都是前後端分離,對與js程式碼的接觸現在並不是很多,但還是需要理解一些js的基礎知識,現在將平常接觸到的js基礎知識整理下。 1.頁面載入時自動執行js的幾種方法。 1)js方法,寫在html的body標籤裡面呼叫 <html> &l

【資料結構】基礎知識點整理(4)

1.順序表提供隨機讀取功能,不需要經過指標的頻繁跳轉,儲存效率很高。 2.線性表的順序儲存結構是一種隨機存取的儲存結構,鏈式儲存結構是一種順序存取的儲存結構,順序儲存指記憶體地址是一塊的,隨機存取是指訪問時可以按下標隨機訪問。 3.在棧中,棧頂指標的動態變化決定棧中元素的個數;在鏈式儲存結構

Java基礎知識點學習筆記

Java基本語法: 1、識別符號 Java出現的名稱 如原始檔名 類名 變數名 方法名 命名規範(見名知意): 1、類名 :所有單詞首字母大寫的 其他字母要小寫 一般使用名詞命名 如 Person如 TestPerson 2、變數名:第一個單詞首字母小寫 其他單詞首

Java相關知識點整理《一》

1、JVM記憶體模型。 1.1.程式計數器。 當前執行緒所執行的位元組碼的行號指示器。 ​​​​​​​1.2.Java虛擬機器棧。 執行緒私有,生命週期與執行緒相同,描述的是Java方法執行的記憶體模型。 ​​​​​​​1.3.本地方法棧。 虛擬機器棧為虛擬機器執

Java相關知識點整理《二》

10、AtomicInteger類。 AtomicInteger是一個提供原子操作的Integer類,通過執行緒安全的方式操作加減,十分適合高併發情況下的使用,AtomicInteger是在使用非阻塞演算法實現併發控制。 11、Java常用集合。 Collection和

Java相關知識點整理《三》

19、6種常見的負載均衡演算法。 19.1..輪詢法。 請求按順序輪流分配到後端伺服器,而不關心伺服器連線數和負載能力。 19.2.隨機演算法。 19.3.源地址雜湊演算法。 獲取客戶端IP,雜湊計算後得到一個數值,用該數值對伺服器列表的大小進行取模運算,得到的結果

javascript基礎知識點整理2

這幾天花時間觀看了以前找同學要的一些java教學方面的視訊資料,重新回顧了下里面講到的知識點,現在對這些知識點做一個總結。 課程裡面關於javascript的一共分為四塊,js基本語法,js的內建物件,js自定義構造器,js宿主物件這幾部分。 1.js基本語法 js是一種弱型別的語言,定

Java基礎連結整理

Java基礎整理 Java基礎知識整理:https://www.cnblogs.com/chenhao0302/p/7125874.html 一、物件 1、物件的三大特性:封裝、多型、繼承 2、物件的建立一般分為三步: 宣告:宣告一個物件,包括物件名稱和物件型別 例項化:使用