Java基礎文法
1. 注釋、辨別符、關鍵字
注釋
書寫注釋是一個非常好的習慣
- 單行注釋
- 多行注釋
/* 多行注釋 可以注釋一段文字 */
- 文檔注釋
/** * @Description HelloWorld 描述 * @Author 水木林生 作者 */
辨別符
Java 所有的組成部分都需要名字。類名、變量名以及方法名都被稱為辨別符。
注意點
- 所有辨別符都應該以字母(A-Z 或a-z),美元符($),或下劃線(_)開始
- 首字元之後可以是字母(A-Z 或a-z),美元符($),下劃線(_)或數字的任何字元組合
- 不能使用關鍵字作為變量名或方法名
- 辨別符大小寫敏感
- 可用中文命名,但不建議
2. 資料類型
基本類型
//八大基本資料類型
//整數
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L;//Long類型要在數字後面加個L
//小數:浮點數
float num5 = 50.1F;//float類型要在數字後面加個F
double num6 = 3.141592653589793238462643;
//字元
char name = 'A';
//字元串,String不是關鍵字,類
String namea = "梁彪";
//布爾值:是非
boolean flag = true;
//boolean flag = true;
資料類型拓展
//整數拓展 進制 二進制0b 十進制 八進制0 十六進制0x
int i = 10;
int i2 = 010;//八進制0
int i3 = 0x10;//十六進制0x 0~9 A~F 16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("============================================");
//============================================
//浮點數拓展 銀行業務怎麼表示?錢
//BigDecimal 數學工具類
//============================================
//float 有限 離散 舍入誤差 大約 接近但不等于
//double
//最好完全避免使用浮點數進行比較
//最好完全避免使用浮點數進行比較
//最好完全避免使用浮點數進行比較
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false
float d1 = 2323232312323f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//============================================
//字元拓展
//============================================
char c1 = 'a';
char c2 = '中';
System.out.println("============================================");
System.out.println(c1);
System.out.println((int)c1);//強制轉換資料類型
System.out.println(c2);
System.out.println((int)c2);//強制轉換資料類型
//所有的字元本質還是數字
//編碼 Unicode 2位元組 0-65536 早期Excel最多能表示到2^16
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);//a
//轉義字元
// \t
// \n
//......
System.out.println("Hello\tWorld\n");
System.out.println("============================================");
String sa = new String("Hello World");
String sb = new String("Hello World");
System.out.println(sa==sb);
String sc = "Hello World";
String sd = "Hello World";
System.out.println(sc==sd);
//對象 從記憶體分析
//布爾值擴充
boolean flag = true;
//if (flag){}
//if (flag == 1){}
//Less is More
引用類型
3. 類型轉換
低----------------------------------------------------------------->高
byte, short, char, --> int --> long --> float --> double
運算中,不同類型的資料先轉化為同一類型,然後進行運算
轉換執行個體:
int i = 128;
byte b = (byte)i;
//強制轉換 (類型)變量名 高--低
//自動轉換 低--高
System.out.println(i);
System.out.println(b);
/*
主義點:
1. 不能對布爾值進行轉換
2. 不能把對象類型轉換為不相幹的類型
3. 在把高容量轉換到低容量的時候,強制轉換
4. 轉換的時候可能存在記憶體溢出,或者精度問題
*/
System.out.println("==============");
System.out.println((int)23.7); //23
System.out.println((int)-45.89f);//-45
System.out.println("==============");
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char)d);//'b'
特殊轉換執行個體:
//操作比較大的數的時候,注意溢出問題
int money = 10_0000_0000;//JDK7新特性,可以在數字之間使用下劃線
int years = 20;
int total = money*years;//-1474836480,計算的時候溢出了
long total2 = money*years;//預設是int,轉換之前已經存在問題了
long total123 = money*((long)years);//先把其中一個值轉換為long型
System.out.println(total123);
//盡量用大寫的L
4. 變量、常量
變量
Java是一種強類型語言,每個變量都必須聲明其類型
Java變量是程式中最基本的存儲單元,其要素包括變量名,變量類型和作用域
type varName [=value] [{,varName[=value]}];
//資料類型 變量名 = 值;可以用逗号隔開來聲明多個同類型變量
//不建議一行多個變量名
注意事項
- 每個變量都有類型,類型可以是基本類型,也可以是引用類型
- 變量名必須是合法的辨別符
- 變量聲明是一條完整的語句,是以每個聲明都必須以分号結
變量作用域
- 類變量
- 執行個體變量
- 局部變量
//類變量 static
static double salary = 2500;
//屬性:變量
//執行個體變量:從屬于對象;如果不自行初始化,預設為該變量類型的預設值,基本為0或0.0
//布爾值:預設為false
//除了基本類型,其餘的預設值為null
String name;
int age;
//main 方法
public static void main(String[] args) {
//局部變量,作用域在方法内。必須聲明和初始化值
//例如以下:
int i = 10;
System.out.println(i);
//變量類型 變量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//類變量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
常量
常量名一般使用大寫的字元,關鍵字:final
//final 常量名 = 值;
final double PI = 3.14;
//修飾符,不存在先後順序
static final double PI = 3.14;
變量的命名規範
- 所有變量、方法、類名:見名知意
- 類成員變量:首字母小寫和駝峰原則:monthSalary
- 局部變量:首字母小寫和駝峰原則
- 常量:大寫字母和下劃線:MAX_VALUE
- 類名:首字母大寫和駝峰原則:Man,GoodMan
- 方法名:首字母小寫和駝峰原則:run(),runRun()
5. 運算符
算數運算符
//二進制運算符
//ctrl + D : 複制目前行到下一行
int a = 10;
int b = 20;
int c = 3;
int d = 10;
System.out.println(a+b);// 30 = 10 + 20
System.out.println(a-b);//-10 = 10 - 20
System.out.println(a*b);//200 = 10 * 20
System.out.println(a/b);// 0 = (10 / 20) = 0.5 由于是int型,故向數值小的整數取整,取0
System.out.println(d%c);// 1 = (10 / 3 ) 餘數為 1 ,故最後的值為 1
//不同類型的變量的運算結果類型比較
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//Int
System.out.println(c+d);//Int
//幂運算2^3 2*2*2 = 8;
double pow = Math.pow(2,3);
System.out.println(pow);
關系運算符
//關系運算符傳回的結果是:正确或錯誤(布爾值)
//通常結合if使用
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
自增運算符
//++ 自增 -- 自減 一進制運算符
//
int a = 3;
int b = a++; //a++ 先指派,再運算 a = a + 1;
int c = ++a; //++a 先運算a = a + 1,再指派 ;
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
邏輯運算符
//與(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(b&&a));//邏輯與運算:兩個變量都為true,結果才為true
System.out.println("a || b:"+(b||a));//邏輯或運算:兩個變量有一個為true,結果就為true
System.out.println("!(a && b):"+!(b&&a));//邏輯非運算:如果為true,則變為false,反之亦然
//短路運算
int c = 5;
boolean d = (c<4)&&(c++<4);//前面的運算為假,不滿足與運算為true的條件,後面的語句将不執行,從輸出的結果可以看出
System.out.println(d);
System.out.println(c);
位運算
/*
A = 0011 1100
B = 0000 1101
----------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8 = 16 ----> 2*2*2*2
左移<< 相當于*2
右移>> 相當于/2
*/
System.out.println(2<<3);//8
擴充指派運算符
int a = 10;
int b = 20;
a+=b; //a = a+b
System.out.println(a);//30
a-=b; //a = a-b
System.out.println(a);//
//字元串連接配接符
System.out.println(a+b);//30 = 10 + 20
System.out.println(""+a+b);//""為空字元串,和int型相加,結果為字元型,實際就是将字元串和a與b相連接配接
System.out.println(a+b+"");//此處空字元串在末尾,先執行a+b,再将結果與空字元串相連接配接
條件運算符
//x ? y : z
//如果x==true,則結果為y,否則結果為z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
優先級
可利用小括号來區分運算優先級
System.out.println(a+b/c);//結果為10,先進行b/c=0,再運算a+0
System.out.println((a+b)/c);//結果為1,先進行a+b=30,再運算30/c
6. 包機制
- 為了解決類名重複的問題引入了包機制
- 一般利用公司域名倒置作為包名
這樣命名後在Project一欄裡可以看到以下内容
也許會出現以下情況
這種情況隻需要點選Project右側小齒輪,将Compact Middle Package取消勾選
- 如果要使用某一個包内的成員,這是需要在Java程式中導入該包,使用"import"語句
7.JavaDoc
Javadoc指令是用來生成自己的API文檔
參數資訊
/**
* @author Liangbiao //作者
* @version 1.0 //版本号
* @since 1.8 //指明需要最早使用的jdk版本
* @param name //參數名
* @return //傳回值情況
* @throws Exception //異常抛出情況
*/
- 可以利用cmd指令來生成doc文檔,在包所在的路徑輸入以下指令将會在該目錄下生成doc文檔
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
以下代碼是将内容以UTF-8的格式來編碼,并且将字元格式設定為UTF-8
我學習Java的網站:https://www.bilibili.com/read/cv5702420