JAVA入門筆記1 - 基礎概念和基礎語法

  • 參考書:《Java語言程序設計與數據結構(基礎篇)》—— 樑勇

一、基礎概念

(1)Java語言規範、JDK、JRE、JVM、IDE

  1. Java語言規範:是對Java語言語法和語義的技術定義

  2. Java的三個版本

    • J2SE/JavaSE【Java的標準版本】

      • 基礎,無論是以後走EE還是ME,SE是必須要精通的。
      • J2SE是SUN公司爲java程序員準備的一套“基礎類庫”,這套基礎類庫學習之後,可以完成最基本的操作
      • 例如,文件的讀寫、線程的控制…
    • J2EE/JavaEE【Java的企業版本】

      • 這是SUN公司爲程序員專門準備的一套“類庫”,這套類庫可以協助程序員完成企業級軟件的開發
      • 企業級軟件:OA辦公系統、進銷存系統、超市系統…
    • J2ME/JavaME【Java的微型版本】

      • 這是SUN公司爲java程序員專門準備的另一套“類庫”,這套類庫可以協助程序員完成微型設備的嵌入式開發,
      • Java最初就是做微型設備嵌入式開發的。
  3. JDK(Java開發工具包):JDK由一組程序組成,由Oracle配合每個Java版本提供,包括編譯器、調試器和其它工具。每個程序都是從命令行調用的,用於編譯、運行和測試Java程序

  4. JRE(Java的運行時環境):運行Java程序的程序。它包括Java虛擬機JVM、Java核心類庫和支持文件。

  5. JVM(Java虛擬機):JVM是一個解釋Java字節碼的程序。.java後綴的java源文件經過編譯成爲.class後綴的java字節碼文件,這可以用JVM解釋執行。在不同的平臺上有不同的JVM,他們都能解釋.class文件,這就實現了跨平臺特性,即 “一次編譯,到處執行”

  6. IDE(集成開發環境):一個圖形界面軟件,把程序編輯、編譯、構建、調試等集中在一起,便於快速開發程序。如Eclipse、NetBeans等

(2)Java的加載與執行

  1. 程序員在xxx.java文件中編寫源代碼,源代碼必須符合java的語法,這些源代碼就是高級語言。存放源代碼的文件被稱爲Java源文件
  2. 使用JDK中自帶的javac.exe命令對以上的java源程序進行編譯。DOS命令:javac 源文件路徑。如果語法沒問題,編譯通過,生成字節碼文件xxx.class
    • 源文件路徑可以是絕對路徑,也可以是相對路徑。
    • 編譯之後,其實java源文件刪除不會影響程序的執行。
    • 最好不要將java源文件刪除,因爲程序最終運行效果不是預期效果的時候,需要重新修改java源代碼,然後進行重新編譯生成全新的class字節碼文件,再重新運行字節碼程序。
  3. 在一個安裝了JVM的平臺上,利用java.exe命令解釋運行java字節碼。DOS命令:java 類名
    • 這個類名是源文件中public class的名字
    • 以上程序的執行原理:
      • java.exe命令執行會啓動JVM
      • JVM啓動之後,馬上啓動“類加載器-Class Loader”
      • ClassLoader負責去硬盤的“某個位置”上搜索“類名.class”字節碼文件。
      • 找不到這個.class文件,一定會出現程序異常現象。
      • 找到了這個.class文件之後將.class文件轉換成"二進制",操作系統可以直接識別二進制,操作系統執行二進制碼和底層的硬件平臺進行交互。

在這裏插入圖片描述
在這裏插入圖片描述

(3)java中的源文件名、類名和main方法

  1. 一個java源文件當中可以定義多個class
  2. 一個java源文件當中public的class不是必須的
  3. 一個class定義在編譯後生成一個xxx.class字節碼文件(如果一個源文件中定義了多個class,就會生成多個字節碼文件)
  4. 一個java源文件中,最多定義一個public class
    • 如果定義了public class,該類名稱必須和java源文件名稱一致。如果此源文件中有main方法,也必須放在這個public class
    • 如果沒有定義public class,則不必要求類名和源文件同名。如果有main方法,可以任意放在某個類中
  5. main方法是程序的入口,每一個class當中都可以編寫main方法
    • 想執行X.class當中的main方法:java X
    • 如果執行命令java X,而X.class中沒有main方法,會出現運行階段的錯誤。
    • 同一個java源文件的不同類中可以包含多個main方法。當JVM進行編譯時,會提示選擇其中一個main方法作爲編譯的入口。

(4)關於packet

  1. 包PACKET 就是一個文件夾,包下的CLASS互相訪問如一個文件。
  2. java 編譯器在編譯時,直接根據package指定的信息直接將生成的class 文件生成到對應目錄下。例如package aaa.bbb.ccc 編譯器就將該 .java 文件下的各個類生成到 /aaa/bbb/ccc/ 這個目錄下。
  3. 可以把Java中的一個package(包)看成一個類庫單元,包內包含有一組類,它們在單一的名稱空間之下被組織在了一起,這個名稱空間就是包名。
  4. 帶package的java編譯與不帶package的java編譯

二、基礎語法規範

(1)java中的標識符

  1. 標識符必須由字母、數字、下劃線、美元符號($)組成
  2. 標識符不能以數字開頭
  3. 標識符不能是保留字
  4. 標識符不能是true/false/null
  5. 標識符可以是任意長度

(2)良好的命名習慣

  • 變量/方法:小駝峯 carName
  • 類名:大駝峯 CarName
  • 常量:全大寫 CAR_NAME

(3)java支持的數據類型

  1. int / double / byte / short / long / float / char / boolean
    • byte:8位有符號數
    • short:16位有符號數
    • int:32位有符號數
    • long:64位有符號數
    • float:32位標準IEEE754
    • double:64位標準IEEE754
    • boolean:取值 true 或 false

(4)顯示錶示數據類型

  1. 表示二進制:加前綴0b0B
  2. 表示十六進制:加前綴0x0X
  3. 浮點數加後綴f/F:指出是float型,如3.0f
  4. 浮點數加後綴d/D:指出是double型(默認是這個) ,如3.0d

(5)常量

  1. final修飾變量定義語句,類似C中const
final double PI = 3.1415926;

(6)基本操作

1. 用Scanner從控制檯讀取輸入

  1. System.out用來表示標準輸出設備;
    System.in用來表示標準輸入設備;

  2. 創建一個Scanner類對象來讀取來自System.in的輸入,如:

Scanner input = new Scanner(System.in);
  1. Scanner是一個掃描器,我們錄取到鍵盤的數據,先存到緩存區等待讀取,它判斷讀取結束的標示是 空白符,比如空格,回車,tab 等等
  2. Scanner類在包java.util
    1. 明確導入import java.util.Scanner (導入java.util包中的Scanner類)
    2. 通配導入import java.util.* (導入java.util包中的所有類)
      • 注意:除非代碼中用到了某個類,否則通配導入中的其他類不會在編譯運行時被讀入,所以性能上沒什麼區別
  3. Scanner中的方法:
    1. .nextByte():返回一個byte數據

    2. .nextShort():返回一個Short數據

    3. .nextInt():返回一個int數據

    4. .nextLong():…

    5. .nextFloat():…

    6. .nextDouble():…

    7. .next():返回一個字符串,讀到第一個空白符結束,不讀空白符

    8. .nextLine():返回一個字符串,讀到回車結束,回車也讀走,但是返回的字符串中無回車

      注意一下:.next()和.nextLine()的區別

double r = input.nextDouble();

2. 向控制檯輸出

  1. 四種常見輸出形式
System.out.println(1111);	//換行打印
System.out.print(1111);		//不換行打印
System.out.write(2222);		//字節輸出
System.out.printf("%+8.3f\n", 3.14);//按格式輸出
  1. 引用自:Java的常用輸入輸出語句
  • System.out.println(); 是最常用的輸出語句,它會把括號裏的內容轉換成字符串輸出到輸出窗口(控制檯),並且換行,當輸出的是一個基本數據類型時,會自動轉換成字符串,如果輸出的是一個對象,會自動調用對象的toString();方法,將返回值輸出到控制檯
  • System.out.print(); 與第一個很相似,區別就是上一個輸出後會換行,而這個命令輸出後並不換行。
  • System.out.printf(); 這個方法延續了C語言的輸出方式,通過格式化文本和參數列表輸出

3. 基本運算

  1. + - * / % += -= ++ -- 和C的特性一樣
    1. 其中對負數進行%計算,相當於對正數用%再取負數
    2. 整形進行/運算,捨去小數部分
  2. 冪運算:用Math.pow(a,b)計算a的b次方。pow方法定義在JAVA API中的Math類中,可以直接用

4. 類型轉換

  1. 顯式數字間直接強制轉換:
double y = 3/4.0;	//自動轉爲 3.0/4.0

int x = 3
double z = x*4.5;	//自動轉爲 3.0*4.5 		
  1. 強制類型轉換:
(int)1.7 = 1	
(double)1/2 = 1.0/2 = 0.5
  1. 利用類型轉換進行四捨五入:
    1. 四捨五入到整數:(int)(x+0.5)
    2. 向上四捨五入保留兩位:(int)(x*100+0.5)/100.0
    3. 向下四捨五入保留兩位:(int)(x*100)/100.0

5. 賦值語句

  1. 賦值時必須數據類型一致,不能自動類型轉換
  2. 特殊的賦值
//以下兩種寫法等價
System.out.println(x=1);	// 1

x = 1						// 2
System.out.println(x);

//以下兩種寫法等價
i = j = k = 1;				// 1

k = 1						// 2
j = k
i = j
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章