版本控制與Gitlab配置
Java基礎語法
註釋
單行註釋 //後加註釋內容
多行註釋 /* 加註釋內容 */
文件註釋JavaDoc /** 加內容 */
識別符號
關鍵字
注意點
- 識別符號都應該以字母(A-Z或a-z),美元符($),或下劃線(_)開始
- 首字元後可以是字母(A-Z或a-z),美元符($),下劃線(_)或數字的任何組合
- 不能使用關鍵字作為變數名或方法名
- 識別符號是大小寫敏感的
資料型別
- 強型別語言:要求變數的使用要嚴格符合規定,所有變數都必須先定義再使用 -java,c++
- java的資料型別分為兩大類
-
基本型別:
a.數值型別
整數型別:byte佔1個位元組範圍
short佔2個位元組範圍
int佔4各位元組範圍,最常用
long佔8個位元組範圍,常在數字後加L
浮點型別:float佔4個位元組,常在數字後加F
double佔8個位元組
字元型別:char佔2個位元組,只能用單引號;string不是關鍵詞,它是一個引用型別,只能跟雙引號
b. boolean型別:佔1位,只含true或false
-
引用型別:
a.類
b.介面
c.陣列
位元組與位
- 位(bit):計算機內部最小儲存單位,11001100是一個八位二進位制數
- 位元組(byte):計算機中資料處理的基本單位,常用B表示
- 1B=8bit
- 字元:計算機中使用的字母,數字,字和符號
整數拓展
//二進位制:0b開頭
//十進位制:生活中的數
//八進位制:0開頭
//十六進位制:0x開頭
int i=10; //輸出10
int i=010; //輸出8
int i=0x10; //輸出16
int i=0x11; //輸出17
浮點數拓展
float,double型別是有限字長,資料是離散的,存在舍入誤差,只是大約資料,接近卻不等於
最好完全避免使用浮點數進行比較
資料比較一般使用BigDecimal類
字元拓展
char c1='a'; char c2='中'; System.out.println((int)c1); //此時輸出97 System.out.println((int)c2); //此時輸出20013
(int)c這一步驟是對字元進行強制轉換,操作方法為(型別)變數名
所有的字元本質還是數字
底層編碼:Unicode表(例;97=a,65=A),2個位元組,表示範圍0~65536
轉義字元:1.\t 製表符
2.\n 換行 ........
布林值擴充套件
boolean flag=true;
if( flag=true);{}
if( flag);{}
這兩個if語句是完全等價的,預設進行判斷
型別轉換
- java是強型別語言,在有些運算時需要型別轉換
不同型別的資料應該轉為同一型別,再進行運算
- 低-------------------------------------------------------------------------高(容量)
byte,short,char------>int------>long------>float------>double
-
強制轉換 (型別)變數名 高--->低
自動轉換 低--->高
-
注意點
1.不能對布林值進行轉換
2.不能把物件型別轉換為不相干型別
3.在把大容量轉換為低容量時需要強制轉換,反之不用
4.轉換的時候可能存在記憶體溢位,或者精度問題
int i=128; byte b=(byte) i; System.out.println(i); //此時i輸出128 System.out.println(b); //此時b輸出-128
(byte) i;這一步發生記憶體溢位,因為byte型別最高到127,應避免出現記憶體溢位
System.out.println(23.4); //此時輸出23.4 System.out.println((int)23.4); //此時輸出23 System.out.println(-45.86f); //此時輸出-45.86 System.out.println((int)-45.86f); //此時輸出-45
在進行浮點數轉換時出現精度問題*
5.操作比較大的數的時候,注意溢位問題
int a=20_0000_0000; //JDK7新特性,數字之間可以用下劃線分隔 int b=30; int c=a*b; System.out.println(c); //此時輸出-129542144,出現溢位問題 long d=a*b; System.out.println(d); //輸出-129542144,因為定義a,b時為int型別,所以 在轉換之前已經溢位 long e=a*(long)b; System.out.println(e); //輸出60000000000,在計算前先將int型別強制轉化 為long型別,強制轉換對a或b或全部都可
變數
-
理解:變數類比於一片空間或位置,而值類比於空間中的東西
-
java是強型別語言,每個變數都必須宣告型別,型別可以是基本型別,也可以是引用型別
-
java變數是最基本的儲存單元,其要素包括變數名,變數型別和作用域
變數作用域包括類變數,例項變數和區域性變數
public class Demo1 { //這是一個類----Demo1 static double salary=2500; // 類變數,資料型別前加static,從屬於類,和類一起存在消失 String name; int age; //例項變數,作用於具體類中,具體方法外,從屬於物件 boolean question; public static void main(String[] args) { //這是一個main方法 int a=10; //區域性變數,作用於具體方法中,離開此方法則失效 //變數型別 變數名字 具體值 Demo1 demo1 = new Demo1(); //要在方法中用例項變數必須如此 // 快捷鍵alt+回車 System.out.println(demo1.age); //輸出0,因為沒給賦初始值,會變為預設值 System.out.println(demo1.name); //輸出null,同樣原因 System.out.println(demo1.question); //輸出false, } public void add() { //其他方法,add方法 System.out.println(salary); //不用採取例項變數那種操作,直接可以輸出 } }
常量
- 初始化後不能再改變值!
- 常量可以理解為一種特殊變數,其值被設定後,在程式執行過程中不允許被改變
final 常量名=值;
例 final int A=3;
- 常量名一般使用大寫字元
命名規範
- 所有的變數,方法,類名:見名知意
- 類成員變數:首字母小寫和駝峰原則:monthSalary
- 區域性變數:首字母小寫和駝峰原則:monthSalary
- 常量:大寫字母和下劃線:MAX_VALUE
- 類名:首字母大寫和駝峰原則:MonthSalary
- 方法名:首字母小寫和駝峰原則:add(),addMoney()
運算子
-
算術運算子:+, -, *, /, %(取餘,叫做模運算), ++, --
- 除法運算時可能會產生小數,故需要強制轉換
-
在加法運算中,不同型別的資料相加,在含有long型別時,輸出預設為long型別;反之都為int型別
- b=a++:先把a賦值給b,a再自增
-
b=++a:a先自增,再賦值給b
-
很多運算,我們會使用一些工具類來操作,例如Math類
-
輔助運算子:=
-
關係運算符:>, <, >=, <=, ==(等於), !=instanceof 返回值為boolean值,即true,fse
-
邏輯運算子:&&, ||, !
boolean a=true; boolean b=false; System.out.println(a && b); //輸出false //與運算:同真得真 System.out.println(a || b); //輸出true //或運算:有真得真 System.out.println(a && b); //輸出true //非運算:真假假真
與運算中的短路運算
int c=5; boolean d=(c<4) && (c++<4); System.out.println(d); System.out.println(c); 輸出 false //第一步中c=5已經小於4,直接省去第二步,輸出false 5 //如果沒有省,則c++後為6,但輸出為5,故省去
在與運算中,如果第一項為false,則會略去第二步,直接判定為false
-
位運算子:&, |, ^, ~, >>, <<, >>>(瞭解)
A=0011 1100 B=0000 1101 ----------------- A & B=0000 1100 //與運算:同1得1 A | B=0011 1101 //或運算:有1得1 A ^ B=0011 0001 //異或運算:同0異1 ~ B= 1111 0010 //非運算:0110
關於左移右移得面試題
/* 計算機中怎樣計算2*8=16最快? 2*2*2*2=16 分 析: 0000 0000 0 0000 0001 1 0000 0010 2 0000 0100 4 0000 1000 8 0001 0000 16 在二進位制中1這一位左移一位,對應於十進制中乘以2 結 果: 利用左移運算<<,給2左移三位,即給2乘以三個2 */ System.out.println(2<<3); //輸出16 /* 結 論:<<一次對應於乘以2 >>一次對應於除以2 */
-
條件運算子:?:
/*
x?y:z
如果x=true,則輸出y,否則輸出z
*/
int score1=50;
String type1=score1<60?"不及格":"及格";
System.out.println(type1);
//輸出
不及格
int score2=70;
String type2=score2<60?"不及格":"及格";
System.out.println(type2);
//輸出
及格
-
擴充套件賦值運算子:+=, -=, *=, /=
a+=b; //a=a+b a-=b; //a=a-b
補充 字串連線符
int a=10;
int b=20;
System.out.println("abc"+a+b); //當+左端出現string型別,則會把右端的數轉為 string型別,並且進行連線
//輸出
abc1020
int a=10;
int b=20; //反之,當+右端出現string型別時,左邊運算則不受影響,並且進行連線
System.out.println(a+b+"abc");
//輸出
30abc
可以想象成從左到右進行作用
包機制
包的本質就是資料夾
- 為了更好地組織類,java提供了包機制,用於區別類名的名稱空間
- 包語句的語法格式為:
Package pkg1[.pkg2[.pkg3...]];
- 一般利用公司域名倒置作為包名 例如:com.baidu.www com.li.base com.li.exercise
- 為了能夠使用某一個包的成員,我們需要在java程式中明確匯入該包,使用"import"語句可完成
import com.lizhao.base.Demo02; //在base下的Demo02中匯入exercise下的Demo01
import com.lizhao.base.*; //*為萬用字元,匯入這個包下所有的類
JavaDoc----一種註釋
- javadoc命令是用來生成自己API文件的
- 引數資訊
- @author 作者名
- @version 版本號
- @since 指明需要最早使用的JDK版本
- @param引數名
- @return返回值情況
- @throws異常丟擲情況
/**
* @author lizhao
* @version 1.0 這段註釋是加在類上邊的
* @since 1.8
*/
public class Demo01 {
String name;
/**
*
* @param name 這段註釋是加在方法上邊的,且是自動生成的
* @return
*/
public String test(String name){
return name;
生成 javadoc文件
1.通過命令列:javadoc 引數 Java檔案
2.通過IDEA
a. 點選 Tools-> Generate JavaDoc
b.