Java零基礎-入門程式、常量、資料型別、變數
1. Java概述
1.1 Java簡介及發展史
語言:是人與人之間用於溝通的一種方式。例如:中國人與中國人用普通話溝通。
程式語言:人與計算機之間進行資訊交流溝通的一種特殊語言,人們可以使用程式語言對計算機下達命令,讓計算
機完成人們需要的功能。
Java語言是美國Sun公司(Stanford University Network)在1995年推出的一門程式語言。
計算機語言有很多種 如: C ,C++,Java ,PHP Kotlin Python Scala 等 。
Java作者:詹姆斯·高斯林(James Gosling)
發展歷史
1995年,Sun推出了java
1996年,釋出JDK1.0
1998年,釋出JDK1.2,並將java分成了J2EE、J2SE、J2ME
J2SE:Java技術的核心和基礎,是J2EE和J2ME的基礎。
J2EE:java技術中應用最廣泛的部分,提供了企業應用開發相關的完整解決方案。
J2ME:主要用於嵌入式消費電子,如機頂盒、行動電話、PDA的開發。
2009年,Sun公司被甲骨文公司收購。
2004年,釋出JDK1.5,同時將JDK1.5改名為JavaSE5.0,J2EE、J2ME也相應改名為Java EE、Java ME。
2014年,釋出JDK8。
1.2 Java語言能做什麼
網站領域、Android、大資料領域等。
1.3 跨平臺原理
java語言的三大特點:面向物件、健壯性、跨平臺性。
平臺:CPU處理器與作業系統的整體叫平臺,簡單理解就是作業系統,如Windows、Mac、LInux
跨平臺:一個作業系統下開發的應用,放到另一個作業系統下依然可以執行。Writeonce , Run Anywhere
Java程式並非是直接執行的,要經過先編譯,後解釋兩個步驟。
先編譯成與平臺無關的位元組碼(.class檔案),java虛擬機器將位元組碼解釋成特定平臺的機器碼並執行。只要為不同平臺實現了相應的虛擬機器,編譯後的位元組碼就可以在該平臺上執行。
JVM(java虛擬機器)是java語言跨平臺的關鍵部分。
1.4 Java 兩種核心機制
java虛擬機器
JVM 是一個虛擬的計算機,具有指令集並使用不同的儲存區域。負責執行指令,管理資料、記憶體、暫存器。
對於不同平臺有不同的虛擬機器
只有平臺提供了對於的java虛擬機器,java程式才能在該平臺執行。
java虛擬機器實現了java程式的一次編譯到處執行。
垃圾收集機制
不再使用的記憶體空間應回收。
垃圾回收在 Java 程式執行過程中自動進行。
1.5 Jvm、JRE和JDK
JVM(Java Virtual Machine),Java虛擬機器,是一個抽象的計算機,和實際計算機一樣,負責解釋執行位元組碼檔案。
JRE(Java Runtime Environment),Java執行環境,是執行java程式的必需條件。包含了JVM和Java的核心類庫(Java API)
JDK(Java Development Kit),Java標準開發包,包含了JRE和開發工具
總結:我們只需安裝JDK即可,它包含了java的執行環境和虛擬機器。
1.6 JDK的下載和安裝
下載
資料包中已經提供了安裝包
安裝
傻瓜式安裝,一路下一步。
注意:安裝路徑不要包含中文或者空格等特殊字元。
JDK的安裝目錄介紹
2. 第一個演示程式
2.1 常用DOS命令
1.概念:磁碟作業系統。在接觸整合開發環境之前,我們需要使用命令列視窗對java程式進行編譯和執行,所以需
要知道一些常用DOS命令。
2.開啟方式:
win + r開啟執行視窗,輸入cmd,回車。
3.常用命令及其作用
2.2 Path環境變數的配置
2.2.1 為什麼配置環境變數
如果不配置環境變數,在使用javac和java時必須要進入到java安裝目錄的bin目錄下,使用起來不太方便。
配置環境變數的作用就是可以在任意目錄下使用javac和java。
2.2.2 配置環境變數步驟
參見《jdk安裝及環境變數配置文件》文件。
2.3 HelloWorld案例
HelloWorld案例是指在計算機螢幕上輸出“HelloWorld”這行文字。各種計算機語言都習慣使用該案例作為第一個演示案例。
2.3.1 Java程式開發執行流程
開發Java程式,需要三個步驟:編寫程式,編譯程式,執行程式。
2.3.2 HelloWorld案例的編寫
新建一個HelloWorld.java檔案,用記事本開啟,鍵入如下內容
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
注意:
java程式原始檔字尾必須是.java,不能是其他檔案字尾名。
java程式原始檔的檔名必須與public類的類名相同,因此,一個java原始檔裡最多隻能定義一個public類。
大寫小問題,java語言是嚴格區分大小寫的語言 。
main方法問題,main方法必須使用public、static、void修飾。
2.3.3 HelloWorld案例的編譯和執行
編譯命令:javac 檔名.java
2.4 Notepad++軟體的安裝和使用
2.4.1 簡介
Notepad++功能比 Windows中的記事本強大,除了可以用來製作一般的純文字說明檔案,也十分適合編寫計算機程式程式碼。Notepad++ 不僅有語法高亮顯示,也有語法摺疊功能,並且支援巨集以及擴充基本功能的外掛模組。
2.4.2 安裝及配置
傻瓜式安裝,一路下一步
3. java基礎語法
3.1 註釋
註釋是對程式碼的解釋和說明文字,可以提高程式的可讀性。
程式註釋是原始碼的一個重要組成部分,對於一份規範的程式原始碼而言,註釋應該佔到原始碼的三分之一以上。
Java中的註釋分為三種:
單行註釋。
// 只能註釋單行內容
多行註釋。
/*
這裡可以寫
多行註釋內容
*/
文件註釋。文件註釋以/**
開始,以*/
結束。通過javadoc工具可直接將原始碼裡文件註釋提取成文件。
//這是定義了一個類,類名為Demo01,java中的程式碼都需要寫在一個類中。 public class Demo01 { /* main是java程式的入口 也稱為主方法。 */ public static void main(String[] args){ //輸出語句,""當中的內容會原樣輸出列印到控制檯 System.out.println("註釋"); } }
3.2 關鍵字
關鍵字:java語言中一些具有特殊含義的單詞被稱為關鍵字。
關鍵字的特點:
字母全小寫。
關鍵字在高階編輯器中會高亮顯示。
java一共有50個關鍵字
3.3 常量
常量:在程式執行過程中,其值不可以發生改變的量。
分類:
整數常量,例如:-99、0、99等
小數常量,例如:-9.9、9.0、99.99等
字元常量,用單引號括起來的一個字元,單引號當中只能是一個字元,不能沒有字元,也不能有多個字元。
例如:'a'、'5'、'B'、'中'等
字串常量,用雙引號括起來的多個字元(可以包含0個、一個或多個),例如"a"、"abc"、"中國"等
布林常量,表示真假,只有兩個值true和false
空常量,一個特殊的值,空值,值為null
/* 分類 整數常量,例如:-99、0、99等 小數常量,例如:-9.9、9.0、99.99等 字元常量,用單引號括起來的一個字元,單引號當中只能是一個字元,不能沒有字元,也不能有多個字元。例如:‘a'、'9'、'A'、'中'等 字串常量,用雙引號括起來的多個字元(可以包含0個、一個或多個),例如“a”、“java”、“程式設計師"等 布林常量,表示真假,只能是true和false 空常量,一個特殊的值,空值,值為null 注意:除空常量外,其他常量均可使用輸出語句直接輸出。 */ public class Demo02 { public static void main(String[] args) { //整數常量: System.out.println(99); System.out.println(-99); System.out.println("========================"); //小數常量: System.out.println(9.9); System.out.println(-9.9); System.out.println("========================"); //字元常量: System.out.println('1'); System.out.println('b'); // System.out.println('java');//報錯,不能有多個字元 System.out.println('');//報錯,不能沒有字元 System.out.println(' ');//不報錯,輸出一個空格字元 System.out.println("========================"); //字串常量 System.out.println("java"); System.out.println("a"); System.out.println("");//可以沒有字元 System.out.println("========================"); //布林常量 System.out.println(true); System.out.println(false); //空常量 //System.out.println(null);//不可以輸出 } }
3.4 進位制
進位制:進位計數制,是人為定義的帶進位的計數方法。例如10進位制,就是逢十進一,用0-9這10個數字表示。
計算機中常用的進位制:
十進位制:Java中,數值預設都是10進位制。
二進位制:以0b開頭,b大小寫都可以。用0和1表示。
八進位制:數值前面以0開頭。用0-7這8個數表示。
十六進位制:以0x開頭,x大小寫都可以。16進位制每一位上可以是從小到大為0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16個大小不同的數,即逢16進1。
進位制轉換
十進位制資料轉成二進位制資料:除基數(幾進位制)取餘到排法
10進位制轉二進位制
10進位制轉16進位制
二進位制資料轉成十進位制資料:使用8421編碼的方式
二進位制轉十進位制(8421): 10101 = 1*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 1*2^4 = 1 + 0 + 4 + 0 + 16 = 21
16進位制轉換為10進位制
5a = 10* 16^0 + 5 * 16^1 = 10 + 80 = 90
二進位制轉換為八進位制
將二進位制數101110.101轉換為八進位制
得到結果:將101110.101轉換為八進位制為56.5
3.4 計算機儲存單元
我們知道計算機是可以用來儲存資料的,但是無論是記憶體還是硬碟,計算機儲存裝置的最小資訊單元叫“位(bit)”,我們又稱之為“位元位”,通常用小寫的字母”b”表示。而計算機中最基本的儲存單元叫“位元組(byte)”,
通常用大寫字母”B”表示,位元組是由連續的8個位組成。
除了位元組外還有一些常用的儲存單位,其換算單位如下:
1B(位元組) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
3.5 資料型別
概念:Java是一個強型別語言,Java中的資料必須明確資料型別。
分類:基本資料型別和引用資料型別
基本資料型別:四類八種
引用資料資料型別:類、介面、陣列
3.6變數
3.6.1 變數概念
變數本質上是一小塊記憶體空間。
程式設計的本質就是對記憶體中的資料訪問和修改。程式所用的資料都會儲存在記憶體中,程式設計師需要一種機制來訪問或修改記憶體中的資料。這種機制就是變數,每個變數都代表了某一小塊記憶體而且變數有名字的,程式對變數賦值,實際上就是把資料裝入該變數所代表的的記憶體區的過程。程式讀取變數的值,實際上就是從該變數所代表的記憶體區取值的過程。形象的理解,變數相當於一個有名字的容器,改容器用於裝各種不同型別的資料。
資料型別 變數名 = 初始化值; // 宣告變數並賦值 int a = 18; // 建立了一個變數 System.out.println(a); // 先宣告,後賦值(使用前賦值即可) 資料型別 變數名稱; // 建立了一個變數 變數名稱 = 資料值; // 賦值,將右邊的資料值,賦值交給左邊的變數 double b; b = 55.5; System.out.println(b); 還可以在同一行定義多個同一種資料型別的變數,中間使用逗號隔開。但不建議使用這種方式,降低程式的可讀性。 int c = 10, d = 20; // 定義int型別的變數c和d,中間使用逗號隔開 System.out.println(c); System.out.println(d);
使用: 通過變數名訪問即可。 //定義變數 int a = 10; //輸出變數 System.out.println(a); 修改: //修改變數 a = 20;//再次為a賦值,原來的10就沒有了,所以輸出的是20 System.out.println(a);
/* 使用變數的時候,有一些注意事項: 1. 在同一對花括號中,變數名不能重複。 2. 變數在使用之前,必須初始化(賦值) 3. 定義long型別的變數時,需要在整數的後面加L(大小寫均可,建議大寫)。因為整數預設是int型別,整數太大可能超出int範圍。 4.定義float型別的變數時,需要在小數的後面加F(大小寫均可,建議大寫)。因為浮點數的預設型別是double, double的取值範圍是大於float的,型別不相容。 5. 如果使用byte或者short型別的變數,那麼右側的資料值不能超過左側型別的範圍。 6. 變數使用不能超過作用域的範圍。 【作用域】:從定義變數的一行開始,一直到直接所屬的大括號結束為止。 */ public class Demo03 { public static void main(String[] args) { int a = 10; System.out.println(a); //錯誤,變數的名字不可以相同。 //int a = 20; //System.out.println(a); //定義int型別的變數b,未賦值 int b; //System.out.println(b);//錯誤的,沒有值,不能使用 //long num = 9000000000;//90億已經遠遠超過int型別的取值範圍了 long num = 9000000000L;//9000000000L: long型別了 System.out.println(num); //float f = 6.6;//錯誤的,6.6預設double型別,佔8個位元組,而左側float佔4個位元組 float f = 6.6F; System.out.println(f); { int num1 = 60; System.out.println(num1); // 60 } // int num1; // System.out.println(num1); // 已經超出了大括號的範圍,超出了作用域,變數不能再使用了 } }
3.7 型別轉換
在java程式中,不同的基本型別的值經常需要進行互相轉換。為此java提供了兩種型別轉換方式,自動型別轉換和強制型別轉換。
自動型別轉換:
把一個表示資料範圍小的數值或者變數賦值給另一個表示資料範圍大的變數。這種轉換方式是自動的。
取值範圍從大到小
注意:boolean型別不能與其他基本資料型別相互轉換。
強制型別轉換:
是按照 目標型別 變數名=(目標型別)資料變數 這種轉換規則進行轉換的
強制型別轉換格式:目標資料型別 變數名 = (目標資料型別)值或者變數;
示例程式碼
/* 在java程式中,不同的基本型別的值經常需要進行互相轉換。為此java提供了兩種型別轉換方式,自動型別轉換和強制型別轉換。 自動型別轉換: 把一個表示資料範圍小的數值或者變數賦值給另一個表示資料範圍大的變數。這種轉換方式是自動的。 強制型別轉換: 是按照 目標型別 變數名 = (目標型別)資料變數 這種轉換規則進行轉換的 強制型別轉換格式:目標資料型別 變數名 = (目標資料型別)值或者變數; */ public class Demo04 { public static void main(String[] args) { //自動型別轉換 long num = 3;//右:int型別(4個位元組),左: long型別(8個位元組) System.out.println(num); //強制型別轉換 long a = 5000000000L; int b = (int) a; System.out.println(b);//705032704,強制型別轉換有精度損失問題 double c = 34.09999; float d = 34.09999F; int e = (int)c; int f = (int)d; System.out.println(e); System.out.println(f);//小數在強制轉換為int型別時都是捨去小數部分 } }
表示式型別自動提升
當一個算數表示式中包含多個基本 型別數值時,整個算數表示式的資料型別會發生自動提升。自動提升的規則為
byte、short、char 運算時直接提升為int 。
整個算數表示式的資料型別會和運算元中資料取值範圍大的資料型別保持一致
/* 當一個算數表示式中包含多個基本型別數值時,整個算數表示式資料型別會發生自動提升。 規則: byte、short、char 運算時直接提升為int 。 整個算數表示式的資料型別會和運算元中資料取值範圍大的資料型別保持一致 */ public class Demo05 { public static void main(String[] args) { byte a = 10; //byte b = a + 100;//編譯報錯,byte在參與算術元素會先轉換為int,a+100結果為int型別不能直接賦值給byte型別 byte b = (byte) (a + 100); System.out.println(b); double c = 10.0; //float d = c + 1;//編譯報錯,整個表示式的資料型別和c保持一致,c+1的結果是double型別,不能直接賦值給float型別 double d = c + 1; float f = (float) (c + 1); System.out.println(d); System.out.println(f); } }
轉換原理圖
自動型別轉換
強制型別轉換
自動型別提升規則
3.8 識別符號
識別符號:用於給程式中變數、類、方法命名的符號。
規則:
由字母、數字、下劃線“_”、美元符號“$”組成,數字不能開頭。
不能使用java中的關鍵字作為識別符號。
識別符號對大小寫敏感(區分大小寫)。
Java中識別符號的命名約定:
小駝峰式命名:變數名、方法名
首字母小寫,從第二個單詞開始每個單詞的首字母大寫。
大駝峰式命名:類名
每個單詞的首字母都大寫。
另外,識別符號的命名最好可以做到見名知意
例如:username、studentNumber等。
/* */ public class Demo06 { public static void main(String[] args) { int a2;//正確的 //int 2a;//錯誤的,不能以數字開頭 //int class;//錯誤的,不能是關鍵字。 //int a-b;//錯誤的,不能包含- int _a_b;//正確的 //按照小駝峰式定義變數名 int studentAge = 18; } }