Java學習筆記-基礎語法
阿新 • • 發佈:2021-07-25
基礎語法
1.註釋、識別符號、關鍵字
1.1註釋
註釋並不會被執行,對所寫的程式碼進行解釋說明
書寫註釋是一個好習慣
註釋的種類
- 單行註釋(//單行註釋只能註釋一行)
- 多行註釋(/* */)
- 文字註釋【JavaDoc】(/** */)
1.2 識別符號與關鍵字
關鍵字
-
Java中所有組成部分都需要名字。類名、變數名以及方法名都被稱為識別符號。
識別符號注意點
- 所有識別符號都應該以字母或$或“_”開始
- 首字元之後可以是字母、$、_、或任何數字的字元組合
- 不能使用關鍵字作為變數名或方法名
- 識別符號是大小寫敏感的
- 合法識別符號舉例:age、$salary、_value
- 非法識別符號舉例:123abc、-salary、#abc
- 可以使用中文命名,但一般不建議使用
2.資料型別
強型別語言
- 要求變數的使用要嚴格符合規定,所有變數都必須先定義後使用
弱型別語言
- 而弱型別語言是一種弱型別定義的語言,某一個變數被定義型別,該變數可以根據環境變化自動進行轉換,不需要經過現行強制轉換
Java的資料型別分為兩大類
基本型別(primitive type)
class test01{ public static void main(String[] args){ //八大資料型別 //整數 int num1 = 10;//最常用 byte num2 = 20; short num3 = 30; long num4 = 30L;//Long型別要在數字後面加個L //小數:浮點數 float num5 = 50.1f; double num6 3.14159265358979; //字元 char name = 'A'; //字串,String不是關鍵字是類 //String namea="中國"; //布林值:是非 boolean flag = true; //boolean flag = false; } }
- 引用型別(reference type)
- 類
- 介面
- 陣列
擴充套件
public class test02{ public static class void main(String[] args){ //整數拓展:進位制 二進位制0b 十進位制 八進位制0 十六進位制0x int i = 10; int i2 = 010;//八進位制 int i3 = 0x10;//十進位制 System.out.println(i);//10 System.out.println(i2);//8 System.out.println(i3);//16 /*浮點數拓展 銀行業務的表示 BigDecimal 數學工具類 float 有限 離散 舍入誤差 大約 接近但不等於 double 最好完全避免使用浮點數進行比較 */ float f = 0.1f; double d = 1.0/10.0; System.out.println(f == d);//false float d1 = 2333333333333333333f; float d2 = d1 + 1 ; System.out.println(d1 == d2);//ture //字元拓展 char c1 = 'a'; char c2 = '中'; System.out.println(c1);// a System.out.println((int)c1);//強制轉換 97 System.out.println(c2);// 中 System.out.println((int)c2);// 20013 /*所有的字元本質都是數字 編碼 unicode 2位元組 表(97=a 65=A) 65536 Excel 2^16 = 65536 U0000 UFFFF */ char c3 = '\u0061'; System.out.println(c3);// a /*轉義字元 \t 製表符 \n 換行符 …… */ System.out.println("Hello\nWord"); /*Hello World */ //物件 從記憶體分析 String sa = new String("original:hello word"); String sb = new String("original:hello word"); System.out.println(sa==sb);//false String sc = ("original:hello word"); String sd = ("original:hello word"); System.out.println(sc==sd);//true //布林值拓展 boolean flag = true; if(flag){ } } }
3.型別轉換
-
由於java是強型別語言,所以要進行有些運算時需要用到型別轉換
低------------------------------------------------------>高
byte,short,char->int->long->float->double
-
運算中,不同型別的資料先轉化為同一型別,然後進行計算
-
強制型別轉換
-
自動型別轉換
public class test03{ public static void main(String[] args){ int i = 128; byte b = (byte)i//記憶體溢位 //強制轉換 (型別)變數名 高->低 //自動轉換 低->高 System.out.println(i);// 128 System.out.println(b);// -128 /*注意點 1.不能對布林值進行轉換 2.不能把物件型別轉換為不相干的型別 3.在把高容量轉換為低容量的時候,強制轉換 4.轉換的時候可能存在記憶體溢位,或精度問題 */ System.out.println(int(23.7));// 23 System.out.println(int(-45.89f));// -45 char c = 'a'; int d = c+1; System.out.println(d);// 98 System.out.println(char(d));// b } }
-
常見問題
class Untitled { public static void main(String[] args) { //運算元較大時注意溢位問題 //JDK新特性,數字之間可以用下劃線分割 int money = 10_0000_0000; int years = 20; int total1 = money*years;// -1474836480,計算的時候溢位了 long total2 = money*years;//預設是int,轉換之前已經存在問題了 long total3 = money*((long)years);//先把一個整數轉換為Long System.out.println(total3); } }
4.變數、常量
4.1 變數
-
變數:計算機儲存空間且裡面的值不確定
-
Java是一種強型別的語言,每個變數都必須宣告其型別
-
Java變數是程式中最基本的儲存單元,其要素包括變數名,變數型別和作用域
type varName [=value] [{,varName[=value]}] //資料型別 變數名 = 值;可以使用逗號隔開來宣告多個同類型變數
-
注意事項
- 每個變數都有型別,型別可以是基本型別。
- 變數名必須是合法識別符號。
- 變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束。
4.2 變數作用域
-
類變數
-
例項變數
-
區域性變數
public class Test{ //類變數 static static double salary = 2500; //屬性:變數 //例項變數:從屬於物件;如果不初始化,會變成這個型別的預設值 //布林值:預設是false //除了基本型別,其餘預設值都是null String name;//預設值 0 int age;//預設值0.0 //main方法 public static void main(String[] args) { //區域性變數:必須宣告和初始化值 int i = 10; System.out.println(i); //變數型別 Test test = new Test(); System.out.println(test.age); System.out.println(test.name); //類變數 static System.out.println(salary); } }
4.3 常量
- 常量(Constant):初始化(initialize)後不能改變值!不會變動的值
- 所謂常量可以理解成一種特殊的變數,它的值被設定後,程式執行過程中不允許被改變。
public class Test{
//常量定義方式: final 常量名=值
//final是修飾符,不存在前後也可final static
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
- 常量名一般是用大寫字元
4.4 變數的命名規範
- 所有變數、方法、類名:見名知意
- 類成員變數:首字母小寫和駝峰原則:monthSalary
- 區域性變數:首字母小寫和駝峰原則
- 常量:大寫字母和下劃線:MAX_VALUE
- 類名:首字母大寫和駝峰原則:Man,GoodMan
- 方法名:首字母小寫和駝峰原則:run(),runRun()
5.運算子
- Java語言支援如下運算子
- 算術運算子:+,-,*,/,%,++,--
- 賦值運算子:=
- 關係運算符:>,<,>=,<=,==,!=,instanceof
- 邏輯運算子:&&,||,!
- 位運算子:&,|,^,~,>>,<<,>>>(瞭解!!!)
- 條件運算子:?:
- 擴充套件運算子:+=,-=,*=,/=
public class Test02{
public static void main(String[] args) {
long a = 1234374364617247;
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(3,2);
System.out.println(pow);//9
//與(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(b&&a));//邏輯與運算:兩個變數都為真,結果才為真
System.out.println("a || b:"+(a||b));//邏輯或運算:兩個變數有一個為真,則結果就為真
System.out.println("!(a && b):"+!(a&&b));//如果是真,則變為假,如果是假則變為真
//短路運算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
/*
A = 0011 1100
B = 0000 1101
----------------------
A&B = 0000 1100
A|b = 0011 1101
A^B = 1100 0011
2*8 = 16 2*2*2*2
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //16
int a = 10;
int b = 20;
//條件運算子
a+=b;//a = a+b
a-=b;//a = a-b
System.out.println(a);//30
//字串連線符 + ,String在前會將後面的拼接,前面的正常運算
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//三元運算子
//x?y:z
//如果x==true,則結果為y,否則為z
int score = 80;
String type = score < 60?"不及格":"及格";
System.out.println(type);//不及格
}
}
6.包機制、JavaDoc
6.1 包機制
- 為了更好地組織類,Java提供了包機制,用於區別類名的名稱空間。
- 包語句的語法格式為:
package pkg1[.pkg2[.pkg3]];
- 一般利用公司域名倒置作為包名 www.baidu.com com.baidu.www
- 為了能夠使用一個包的成員,我們需要Java程式中明確匯入該包。使用“import”語句可完成此功能
import package1[.package2...].(classname|*);
//*匯入這個包下所有的類
6.2 JavaDoc
-
JavaDoc命令是用來生成自己的API文件的
-
引數資訊
- @author 作者名
- @version 版本號
- @since 指明需要最早使用的jdk版本
- @param 引數名
- @return 返回值情況
- @throws 異常丟擲情況
-
通過終端生成API文件
cd Java檔案所在地址
javadoc -encoding UTF-8 -charset UTF-8 Java檔名.java