Java自學筆記-Day2/Day10

2020-08-13 10:11:30

1、開啓DOS命令視窗,執行java HelloWorld,執行原理?

* java.exe命令會啓動JVM
* JVM啓動之後會啓動類載入器ClassLoader
* ClassLoader會在硬碟上的某個位置搜尋HelloWorld.class位元組碼檔案
* 找到該檔案則執行
* 找不到該檔案則報錯

疑問:ClassLoader是在哪個位置上搜尋HelloWorld.class位元組碼檔案的?
	* 預設情況下,ClassLoader從當前路徑下載入xxx.class位元組碼檔案
	* 當然,也可以讓ClassLoader去某個指定的路徑下載入位元組碼檔案,這時需要設定環境變數classpath
	* classpath環境變數屬於java語言中的環境變數,不屬於windows操作系統【PATH環境變數屬於操作系統】
	* classpath是給ClassLoader類載入器指路的。
	* 設定這樣的環境變數:classpath=D:\course\JavaProjects\02-JavaSE\day02
		- 開啓dos命令視窗在任意位置,都可以執行:java HelloWorld
	* classpath環境變數沒有設定的話,類載入器預設從當前路徑下找位元組碼檔案,
	當classpath環境變數設定爲某個指定的路徑之後,類載入器只去指定的路徑當中載入位元組碼檔案。
	* 綜上所述,環境變數classpath不再設定,這樣類載入器會自動從當前路徑下載入class位元組碼檔案。
	所以,每一次執行.class程式的時候,需要在DOS命令視窗中先切換到.class位元組碼檔案所在的路徑下。
	然後執行。
	* 當然,classpath也可以這樣設定:classpath=.

	注意:
		路徑中「..」表示上級目錄
		路徑中「.」表示當前目錄

2、關於java源程式當中的註釋:

* 什麼是註釋?註釋的作用是什麼?
	- 出現在java的源程式當中,對java原始碼的解釋說明
	- 註釋不會被編譯到.class位元組碼檔案當中
	- 一個好的開發習慣應該是多編寫註釋,這樣程式的可讀性比較強。

* java中的註釋怎麼寫呢?
	- 單行註釋
		//單行註釋,只註釋當前行

	- 多行註釋
		/*
			多行註釋
			多行註釋
			多行註釋
			多行註釋
			多行註釋
			.....
		*/

	- javadoc註釋
		/**
		*	javadoc註釋
		*	javadoc註釋
		*	javadoc註釋
		*	javadoc註釋
		*	javadoc註釋
		*	javadoc註釋
		*/
		注意:這種註釋是比較專業的註釋,該註釋資訊會被javadoc.exe工具解析提取並生成幫助文件。

3、對HelloWorld程式進行解釋:

需要記憶:
	* public
	* class
	* static
	* void
	* System.out.println(""); 向控制檯輸出訊息
	* 類體
	* 方法體
	* 類體中不能直接編寫java語句【除宣告變數之外】
	* 一個java語句必須以「;」結束
	* 方法體中可以編寫多條java語句
	* 主方法是程式的入口,固定寫法,SUN規定的。
public class HelloWorld
{
	public static void main(String[] args)
	{
		System.out.println("Hello world!");//中文亂碼要在記事本裡將原始碼的utf-8編碼改成ansi編碼
	}
	
}

4、public class 和 class的區別:

* 一個java原始檔當中可以定義多個class

* 一個java原始檔當中public的class不是必須的

* 一個class會定義生成一個xxx.class位元組碼檔案

* 一個java原始檔當中定義公開的類的話,只能有一個,並且該類名稱必須和java原始檔名稱一致。

* 每一個class當中都可以編寫main方法,都可以設定程式的入口,想執行B.class中的main方法:java B,
想執行X.class當中的main方法:java X

* 注意:當在命令視窗中執行java Hello,那麼要求Hello.class當中必須有主方法。沒有主方法會出現執行
階段的錯誤:
	D:\course\JavaProjects\02-JavaSE\day02>java Hello
	錯誤: 在類 B 中找不到主方法, 請將主方法定義爲:
		public static void main(String[] args)

5、總結第一章需要掌握的內容:

* 理解java的載入與執行
* 能夠自己搭建java的開發環境
* 能夠獨立編寫HelloWorld程式,編譯並執行
* 掌握環境變數path的原理以及如何設定
* 掌握環境變數classpath的原理以及如何設定
* java中的註釋
* public class 和 class 的區別

第二章:java語言基礎

(第二章開始)6、識別符號

* 程式設計師有權利自己命名的單詞。
* 命名規則1:易懂原則;駝峯規則;
* 類名、介面名:首字母大寫,後面每個單詞首字母大寫
* 變數名、方法名:首字母小寫,後面每個單詞首字母大寫
* 常數名:全部大寫

7、關鍵字

class extends implements interface import
package break case continue default
do if else for return switch while false true null
boolean byte char short int
long float double try catch
throw throws finally abstract fianl
native private protected public static
synchronized transient volatile instanceof new
super void assert enum goto
const

8、字面值

整數型10、浮點型3.14、布爾型true flase、字串型"abc"、字元型'A'

9、變數

public class Var
{
	static int k = 30;//static不能去掉,現在不解釋
	public static void main(String[] args)
	{
		int i = 10;//set
	
		int a,b,c = 300;//c=300
	
		a = 20;
	
		b = 30;
	
		System.out.println(i);//get
		
		System.out.println(a);//get

		System.out.println(b);//get

		System.out.println(c);//get
	}
}
*變數的作用域是在大括號{}裏面。
例如:
	for (int i=0;i<30;i++)
	{
	         ……
	}
	System.out.println(i);//出錯
	int i;
	for (i=0;i<30;i++)
	{
	         ……
	}
	System.out.println(i);//正確
*區域性變數、成員變數(我們所理解的全域性變數)
在不同作用域,變數名可以相同;在同一作用域,變數名不可以相同。輸出是遵循就近原則。

10、數據型別

*基本數據型別及佔用位元組數:
1.整數型
byte(1),short(2),int(4),long(8)
2.浮點型
float(4),double(8)
3.布爾型
boolean(1)
4.字元型
char(2)(ASCII碼:a-97  A-65  0-48)
*參照數據型別:
陣列、類、介面

參考文獻及學習視訊地址: