1 JAVA文法基礎
1.1 辨別符
辨別符可以簡單的了解成一個名字。
在Java中,我們需要辨別代碼的很多元素,包括類名、方法、字段、變量、包名等等。我們選擇的那個名稱就稱為辨別符,一個正确的辨別符需要遵循以下規則:
1. 辨別符可以由字母、數字、下劃線(_)、美元符($)組成,但不能包含 @、%、空格等其它特殊字元
2. 不能以數字開頭。如:123name 就是不合法
3. 辨別符嚴格區分大小寫。如: tmooc 和 tMooc 是兩個不同的辨別符
4. 辨別符的命名最好能反映出其作用,做到見名知意。
5. 辨別符不能是Java的關鍵字
1.2 關鍵字
在Java中,有一些單詞被賦予了特定的意義,一共有50個關鍵字。
這50個單詞都是全小寫,其中有兩個保留字:const和goto。
注意,關鍵字不能被用作辨別符!

需要注意的是,除了上述的50個關鍵字以外,true,false,null也不可以被用作辨別符~
1.3 注釋
幾乎所有程式設計語言都允許程式員在代碼中輸入注釋,因為編譯器會忽略注釋,是以注釋并不會影響程式的運作結果。
注釋的真正作用是: 它可以向任何閱讀代碼的人描述或者解釋程式的實作思路,如何使用以及其它任何相關資訊, 提高代碼的可讀性,友善後期的維護與複用。Java的注釋有3種:
1. 單行注釋: 注釋單行内容.
格式: 每行都以”//”開頭.
快捷方式: Ctrl+/ 添加注釋,同樣的快捷鍵,再按一次取消注釋
2. 多行注釋:注釋多行内容,雖然叫多行注釋,也可注釋單行内容.
格式: 以” /* ”開頭, 以” * / ”結束.
快捷方式: Ctrl+shift+/ 添加注釋, Ctrl+shift+\ 取消注釋, 也可以輸入”/*”之後按回車添加注釋
3. 文檔注釋: 一般用來注釋類和方法,通過注釋内容來記錄類或者方法的資訊.
格式: 以” /** ”開頭。 以” * / ”結尾
快捷方式: 輸入“/**” 之後按回車添加注釋
1.4 變量
在JAVA中,我們需要記錄一些資料,但這些資料的值是不固定的,總在變,我們可以把這些資料了解為變量。
我們通過三個元素來描述變量:變量類型 變量名以及變量值。
int age = 18; //聲明int類型的變量并指派
String tel ; //聲明String類型的變量
注意:
注意:
- 變量名必須是一個有效的辨別符
- 變量名不可以使用java關鍵字
- 變量名不能重複
1.5 常量
在程式運作過程中,值一直不會改變的量成為常量。(後續會進一步學習,略…)
2 資料類型
2.1 基本類型介紹(八種)
變量就是申請記憶體來存儲值。也就是說,當建立變量的時候,需要在記憶體中申請空間。
java是一個強類型的語言,會把日常見到的資料,分成好多類型.
記憶體管理系統根據變量類型來配置設定存儲空間,配置設定的空間隻能用來儲存該類型資料。
常用的轉換關系:
位 bit,來自英文bit,音譯為“比特”,表示二進制位。
1 Byte = 8 Bits (1位元組 = 8位)
1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB
2.2 練習: 輸入個人資訊
建立包: cn.tedu.basic
建立類: TestInfo.java
需求: 在控制台列印: java架構師今年20歲,月薪100000.99,感慨java是世界上最好的語言
package cn.tedu.basic;
/**本類用于完成個人資訊輸出案例*/
public class TestInfo {
//1.添加程式的入口函數main Alt+/補全代碼
public static void main(String[] args) {
/**1.定義變量的規則:變量的類型 變量的名字 變量的值*/
//2.建立變量
int age = 18;//表示變量年齡,值為18
double salary = 100000.99;//表示變量薪水,值為100000.99
/**2.一串字元,在Java中用String類型也就是字元串類型儲存
* 注意:String類型的資料需要使用" "包裹起來*/
String name = "泡泡";
//3.可以通過列印語句檢視變量的值
System.out.println(age);
//4.完成靜态與動态資料的拼接
/**3.我們可以使用+把靜态資料【"我是"】與動态資料【name】拼接起來*/
System.out.println("我是"+name);
//5.需求:Java架構師XXX今年XXX歲,月薪XXX,感慨Java是世界上最好的語言
System.out.println("Java架構師"+name+"今年"+age+"歲,月薪"+salary+",感慨Java是世界上最好的語言");
}
}
2.3 練習:檢視基本類型的最大值與最小值
建立包: cn.tedu.basic
建立類: TestTypeScope.java
package cn.tedu.basic;
/**本類用于測試基本類型*/
public class TestTypeScope {
//1.建立程式的入口函數
public static void main(String[] args) {
/**1.整形類型:byte short int long*/
/**2.Java給8大基本類型都提供了類型對應的“工具箱”*/
/**3.int類型的工具箱比較特殊,叫做:Integer*/
//2.定義對應類型的變量:格式:類型 名字 = 值 ;
byte byteMin = Byte.MIN_VALUE;
byte byteMax = Byte.MAX_VALUE;
System.out.println("byte類型的最小值為:" + byteMin);
System.out.println("byte類型的最大值為:" + byteMax);
short shortMin = Short.MIN_VALUE;
short shortMax = Short.MAX_VALUE;
System.out.println("short類型的最小值為:" + shortMin);
System.out.println("short類型的最大值為:" + shortMax);
int intMin = Integer.MIN_VALUE;
int intMax = Integer.MAX_VALUE;
System.out.println("int類型的最小值為:" + intMin);
System.out.println("int類型的最大值為:" + intMax);
long longMin = Long.MIN_VALUE;
long longMax = Long.MAX_VALUE;
System.out.println("long類型的最小值為:" + longMin);
System.out.println("long類型的最大值為:" + longMax);
/**4.浮點類型 :float double*/
float floatMin = Float.MIN_VALUE;
float floatMax = Float.MAX_VALUE;
System.out.println("float類型的最小值為:" + floatMin);
System.out.println("float類型的最大值為:" + floatMax);
double doubleMin = Double.MIN_VALUE;
double doubleMax = Double.MAX_VALUE;
System.out.println("double類型的最小值為:"+ doubleMin);
System.out.println("double類型的最大值為:"+ doubleMax);
/**5.boolean布爾類型隻有兩個值true與false
* 雖然true和false不是關鍵字,但是也不可以用作辨別符*/
boolean b1 = true;
boolean b2 = false;
/**6.測試char 字元類型
* 字元型的資料需要使用單引号 ' ' 來包裹
* char類型可以存數字,但是會從ASCII碼表查出這個數字對應的字元來列印
* 128~65535這些數字,也可以儲存,但是eclispe一般顯示為?*/
char c1 = 'a';//字元型可以儲存一個字母
char c2 = '中';//字元型還可以儲存一個漢字
char c3 = '7';//字元型可以儲存一個字元7
char c4 = 97;//字元型可以儲存數字,但是會查ASCII,列印的是字元a
char c5 = 55;//字元型可以儲存數字,但是會查ASCII,列印的是字元7
char c6 = 199;
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
}
}
2.4 練習:求圓形的面積
需求:求出指定半徑圓的面積
公式:圓的面積:π * r * r
建立包: cn.tedu.basic
建立類: TestCircleArea.java
package cn.tedu.basic;
import java.util.Scanner;
/**本類用于求圓形的面積*/
public class TestCircleArea {
//1.建立程式的入口函數main()
public static void main(String[] args) {
/**等号右邊的值指派給等号左邊的變量來儲存*/
//1.提示使用者輸入圓的半徑:
System.out.println("請您輸入要求的半徑值:");
/**變量的第二種定義方式:先定義,再指派*/
//2.1定義一個變量用來儲存圓的半徑
//double r = 5.5;
double r ;
//2.2接收使用者在鍵盤上輸入的資料,并把這個資料交給r儲存
//開啟掃描(發出一個系統指令,準備接收控制台輸入的資料)
//nextDouble()控制使用者隻能輸入double類型的資料,否則報錯
r = new Scanner(System.in).nextDouble();
//根據半徑值求出圓的面積
double circleArea = 3.14 * r * r;
//列印計算的結果
System.out.println("圓的面積是:"+circleArea);
}
}
2.5 練習:變量交換
需求: 接收使用者輸入的兩個值:假設a=1,b=2,并将這兩個變量的值進行互換
建立包: cn.tedu.basic
建立類: TestValueExchage.java
package cn.tedu.basic;
import java.util.Scanner;
/**本類用于練習值交換案例*/
public class TestValueExchange {
//1.建立程式的入口函數main
public static void main(String[] args) {
//2.提示并接受使用者在控制台輸入的兩個整數
System.out.println("請輸入要交換的第一個整數:");
int a = new Scanner(System.in).nextInt();
System.out.println("請輸入要交換的第二個整數:");
int b = new Scanner(System.in).nextInt();
System.out.println("a的值:"+a);
System.out.println("b的值:"+b);
//3.交換 a b 這兩個變量儲存的值
int t;//定義一個變量用來輔助值交換
t = a;//把a的值交給t來儲存
a = b;//把b的值交給a來儲存
b = t;//把t的值交給b來儲存
System.out.println("交換後,a的值:"+a);
System.out.println("交換後,b的值:"+b);
}
}
2.6 引用類型
出來啦基本類型以外的就是引用類型,目前我們學習的隻有字元串類型,資料需要使用雙引号包裹
引用類型是一個對象類型,值是什麼呢?
它的值是指向記憶體空間的引用,就是位址,所指向的記憶體中儲存着變量所表示的一個值或一組值。如:類,接口,數組,後面講。。。
(後續會進一步學習,略…)
3 基本類型的字面值(5條)
3.1 整數字面值是int類型
int x = 99999;//對,右面資料的字面值是int類型
int x = 99999999999;//錯,右面資料的字面值是int類型,但是已經超出int的取值範圍。
3.2 浮點數的字面值是double類型
double r =3.14;//對
float r =3.14;//錯,右面的資料字面值是double,float是4位元組存不下double類型的資料
3.3 byte,short,char三種比int小的整數可以用範圍内的值直接指派
byte b1=127;//對,
byte b2=128;//錯,超出byte的範圍
char c1=97;//對,對應的是碼表中的’a’
char c2 =69999;//錯,超出char的範圍
3.4 字面值字尾L D F
long x =99999999999L;//字面值是int類型,需轉成long類型的資料,加字面值字尾L即可
float b = 3.0F;//3.0字面值是double類型,加字尾F會變成float類型
double d = 3D;//3字面值是int類型,加字尾D,會變成double類型
3.5 進制字首
0b - 辨別這是2進制 ,如:0b0101
0 - 辨別這是8進制, 8進制是三位,如: 023
0x - 辨別這是16進制,如: 0x0001
4 基本類型的類型轉換
箭頭開始的地方是小類型,箭頭指向的地方是大類型
我們此處所指的"大"和"小",指的是對應類型的取值範圍,不是位元組數哦
4.1 小到大(隐式轉換)
byte m = 120;
int n = m;//小轉大,右面的m是小類型,給左面的n大類型指派,可以直接使用
float f = 3.2f; double d = f; -->可以執行
4.2 大到小(顯式轉換)
容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
int x = 999;
byte y =(byte)x;//大轉小,右面x給左面的y小類型指派,不可以,需要強制類型轉換
-
轉換過程中可能導緻溢出或損失精度
例如:int i =128; byte b = (byte)i; //列印的結果是-128
因為 byte 類型是 8 位,最大值為127,是以當 int 強制轉換為 byte 類型時,值 128 時候就會導緻溢出。
-
浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入
例如:float f = 32.7f; int a2 =(int) f; //列印的結果是32
- 不能對boolean類型進行類型轉換。
4.3 口訣:
小到大,直接轉 大到小,強制轉 浮變整,小數沒
小到大,直接轉 大到小,強制轉 浮變整,小數沒
低 ------------------------------------> 高
低 ------------------------------------> 高
byte,short,char→ int→ long→float→double
byte,short,char→ int→ long→float→double
5 運算規則(5條)
5.1 計算結果的資料類型,與最大資料類型一緻
System.out.println(3/2);//1,int/int,得到的結果類型還是int
System.out.println(3/2d);//1.5,int/double。得到的結果是double
5.2 byte,short,char三種比int小的整數,運算時會先自動轉換成int
byte a = 1;
byte b = 2;
byte c = (byte)(a+b);
//a+b會自動提升成int類型,右面得運算結果就是int大類型
//給左面的byte小類型指派,不可以,需要強轉。
5.3 整數運算溢出
整數運算,類似于一個鐘表,轉到最大時,再轉會回到最小。
計算:光速運作一年的長度是多少米?3億m/s
//溢出的現象:
//因為做了大的整型資料的運算,會超出int取值範圍。解決方法:把整數提升成long類型。
System.out.println(300000000L * 60 * 60 * 24 * 365);
5.4 浮點數運算不精确
1-0.8 (這是一個現象,後續會學習解決方案)
5.5 浮點數的特殊值
Infinity 無窮大 3.14/0
NaN not a number 0/0.0 或 0.0/0
6 拓展 辨別符命名風格
1.【強制】辨別符命名均不能以數字開頭,而且下劃線或美元符号開始,也不能以下劃線或美元符号結束
錯誤案例:1name / _ name / name_ / $ name / name $
2.【強制】代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。
說明:正确的英文拼寫和文法可以讓閱讀者易于了解,避免歧義。
注意,即使純拼音命名方式也要避免采用。
正确案例:alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。
錯誤案例:DaZheModule [打折子產品] / getPingfenByName() [評分]
3.【強制】類名使用 UpperCamelCase 風格,即第一個單詞的首字母就要大寫