Java 基礎語法
一個 Java 程式可以認為是一系列物件的集合,而這些物件通過呼叫彼此的方法來協同作業,下面簡要介紹下類、物件、方法和實體變數的概念,
- 物件:物件是類的一個實體,有狀態和行為,例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等,
- 類:類是一個模板,它描述一類物件的行為和狀態,
- 方法:方法就是行為,一個類可以有很多方法,邏輯運算、資料修改以及所有動作都是在方法中完成的,
- 實體變數:每個物件都有獨特的實體變數,物件的狀態由這些實體變數的值決定,
基本語法
撰寫 Java 程式時,應注意以下幾點:
- 大小寫敏感:Java 是大小寫敏感的,這就意味著識別符號 Hello 與 hello 是不同的,
- 類名:對于所有的類來說,類名的首字母應該大寫,如果類名由若干單詞組成,那么每個單詞的首字母應該大寫,例如 MyFirstJavaClass ,
- 方法名:所有的方法名都應該以小寫字母開頭,如果方法名含有若干單詞,則后面的每個單詞首字母大寫,
- 源檔案名:源檔案名必須和類名相同,當保存檔案的時候,你應該使用類名作為檔案名保存(切記 Java 是大小寫敏感的),檔案名的后綴為 .java,(如果檔案名和類名不相同則會導致編譯錯誤),
- 主方法入口:所有的 Java 程式由 public static void main(String[] args) 方法開始執行,
Java 識別符號
Java 所有的組成部分都需要名字,類名、變數名以及方法名都被稱為識別符號,
關于 Java 識別符號,有以下幾點需要注意:
- 所有的識別符號都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字符組合
- 關鍵字不能用作識別符號
- 識別符號是大小寫敏感的
- 合法識別符號舉例:age、$salary、_value、__1_value
- 非法識別符號舉例:123abc、-salary
Java修飾符
像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性,主要有兩類修飾符:
- 訪問控制修飾符 : default, public , protected, private
- 非訪問控制修飾符 : final, abstract, static, synchronized
在后面的章節中我們會深入討論 Java 修飾符,
Java 變數
Java 中主要有如下幾種型別的變數
- 區域變數
- 類變數(靜態變數)
- 成員變數(非靜態變數)
一、變數
1.1 什么是變數?
變數:表示資料在記憶體中記憶體地址,變數對應的資料是可以改變
1.2 如何使用變數?
申明變數(申請記憶體地址)
資料型別 變數名; int a;
變數初始化(變數賦值)
變數名 = 值; a = 10;
使用變數
System.out.println(a);
public class Demo01{ public static void main(String[] args){ /* //方式1: //1、申明變數 int a; //2、變數賦值 a = 10; //3、使用變數 System.out.println(a); */ /* //方式2: //1、申明變數申明變數和變數初始化 int a = 10; //2、使用變數 System.out.println("a的值為:"+a); */ //方式3: //連續定義多個變數 int a; int b; int c = 10; int a,b,c = 10; // System.out.println("a的值為:"+a); 錯誤代碼 System.out.println("c的值為:"+c); //注意:在java中變數一定要初始化才能使用 } }
注意:在java中變數一定要初始化才能使用
1.3 變數的命名規范
只能是數字、字母、下劃線、美元$符號組成
不能使用數字開頭
不能使用java中的關鍵字和保留字
使用駝峰命名法(兩個單詞以上組成變數)
小駝峰:helloWorld 變數名、方法名
大駝峰: HelloWorld 類名、介面
見名知意
java中嚴格區分大小寫
Java 關鍵字
下面列出了 Java 關鍵字,這些保留字不能用于常量、變數、和任何識別符號的名稱,
類別 關鍵字 說明 訪問控制 private 私有的 protected 受保護的 public 公共的 default 默認 類、方法和變數修飾符 abstract 宣告抽象 class 類 extends 擴充,繼承 final 最終值,不可改變的 implements 實作(介面) interface 介面 native 本地,原生方法(非 Java 實作) new 新,創建 static 靜態 strictfp 嚴格,精準 synchronized 執行緒,同步 transient 短暫 volatile 易失 程式控制陳述句 break 跳出回圈 case 定義一個值以供 switch 選擇 continue 繼續 default 默認 do 運行 else 否則 for 回圈 if 如果 instanceof 實體 return 回傳 switch 根據值選擇執行 while 回圈 錯誤處理 assert 斷言運算式是否為真 catch 捕捉例外 finally 有沒有例外都執行 throw 拋出一個例外物件 throws 宣告一個例外可能被拋出 try 捕獲例外 包相關 import 引入 package 包 基本型別 boolean 布爾型 byte 位元組型 char 字符型 double 雙精度浮點 float 單精度浮點 int 整型 long 長整型 short 短整型 變數參考 super 父類,超類 this 本類 void 無回傳值 保留關鍵字 goto 是關鍵字,但不能使用 const 是關鍵字,但不能使用 注意:Java 的 null 不是關鍵字,類似于 true 和 false,它是一個字面常量,不允許作為識別符號使用,
二、資料型別
2.1 基本資料型別
2.2.1 整數型別
型別 所占位元組 所占位數 取值范圍 byte 1位元組 8位 -2^7 ~ 2^7-1 short 2位元組 16 -2^15 ~2^15-1 int 4位元組 32 -2^31 ~ 2^31-1 long 8位元組 64 -2^63 ~ 2^63-1 2.2.2 浮點型別
型別 所占位元組 所占位數 取值范圍 有效數位 float 4位元組 32位 ±3.4E+38 7位 double 8位元組 64位 ±1.7E+308 16位 2.2.3 布爾型別
型別 所占位元組 所占位數 取值范圍 boolean 1位元組 8位 true\false 2.2.4 字符型別
型別 所占位元組 所占位數 取值范圍 char 2位元組 16位 0~65535 代碼演示
public class Demo02{ public static void main(String[] args){ /* 基本資料型別 整數型別 byte short int long 浮點型別 float double 布爾型別 boolean 字符型別 char 參考資料型別 String、類、介面、陣列 */ //定義byte型別的變數 byte b = 10; System.out.println(b); // byte b1 = 128; 錯誤 // System.out.println(b1); //定義short型別的變數 short s = 128; System.out.println(s); //定義int型別的變數 int i = 1000; System.out.println(i); //定義int型別的變數 long l = 364748123123L; System.out.println(l); //定義float型別的變數 float f = 10.2F; System.out.println(f); float f1 = 9999.9994f; System.out.println(f1); //定義double型別的變數 double d = 10d; System.out.println(d); double d1 = 12345678910111213.0; System.out.println(d1); //boolean型別 真偽(一般用條件判斷) true false boolean boo = false; System.out.println(boo); //char型別 /* 字符:各個國家的文化符號 字符集:收錄了各個國家的字符形成的集合 Unicode萬國碼 字符編碼:ASCII(美國標準資訊交換碼)、UTF-8 在java字符和字串是不同的資料型別 字符必須使用''表示,字串必須要使用"" 字符可以有三種表示形式: 1、字符 'a' '中' 2、數字 97 20 3、十六進制 '\u0041' 100 0001 = 65 */ char c1 = '中'; char c2 = 20013; char c3 = '\u0041'; System.out.println(c1); System.out.println(c2); System.out.println(c3); } }View Code
2.2.5 資料型別細節
long型別資料需要在最后添加L
float型別資料需要在最后添加F
字符必須使用''表示,字串必須要使用""
2.2.6 轉義字符
轉義字符:轉變字符原有含義
常見的轉義字符
轉義字符
public class Demo03{ public static void main(String[] args){ //常見轉義字符:\n 表示換行 \t表示制表位 \u 表示十六進制 System.out.println("hello\tworld"); System.out.println("hello\nworld"); //轉義字符 System.out.println("你\"真棒\""); //轉義字符 斜杠不能單獨使用 System.out.println("D:\\a\\b"); } }View Code注意:在java代碼注釋中不能出現
\2.2 參考資料型別
String表示參考資料型別
在Java中一切用""包裹起來的型別都是String型別
public class Demo04{ public static void main(String[] args){ //String是參考資料型別 類! //在java中一切用""包裹起來的型別都是String型別 String name = "cxk"; String hobby = "打籃球"; String job = "rapper+java開發"; System.out.println("姓名為:"+name+"\n愛好為:"+hobby+"\n職業為:"+job); } }三、資料型別轉換
3.1 為什么要進行資料型別轉換
在Java中要求等號左邊和等號右邊的型別要一致,如果出現不一致,就需要進行資料型別轉換
3.2 自動型別轉換
在資料型別兼容的情況下, 小轉大就是自動型別轉換
自動型別轉換也稱之為隱式型別轉換,即不需要做任何操作
public class Demo05{ public static void main(String[] args){ //自動型別轉換 byte b = 19; //i的型別為int b的型別為byte int i = b; System.out.println(i); int num1 = 100; double num2 = num1; System.out.println(num2); //char型別的自動型別轉換 char c1 = 'a'; int c2 = c1; System.out.println(c2); } }View Code
3.3 強制型別轉換
在資料型別兼容的情況下, 大轉小就是強制型別轉換
自動型別轉換也稱之為顯式型別轉換,需要添加對應語法
語法:(轉換型別) 變數
public class Demo05{ public static void main(String[] args){ //強制型別轉換 double n1 = 100; //n1的型別為double n2的型別為int int n2 = (int)n1; System.out.println(n2); int c3 = 97; char c4 = (char)c3; System.out.println(c4); //對運算式進行型別轉換 double d1 = 10; double d2 = 12; int d3 = (int)(d1 + d2); System.out.println(d3); } }View Code3.4 資料型別轉換注意點
1、boolean不能參與任何資料型別轉換
2、基本型別中范圍(大小) byte short|char int long float double
3、強制型別轉換可能會造成資料丟失
4、資料型別提升
運算式中有double,結果double
有float,結果float
有long,結果long
有int,結果int
有char、byte、short,結果為int
5、在Java中,任何一個整數默認都當做是int型別, 在Java中,任何一個小數默認都是double型別
public class Demo05{ public static void main(String[] args){ /* 資料型別轉換的注意點: 1、boolean不能參與任何資料型別轉換 2、基本型別中范圍(大小) byte short|char int long float double 3、強制型別轉換可能會造成資料丟失 4、資料型別提升 運算式中有double,結果double 有float,結果float 有long,結果long 有int,結果int 有char、byte、short,結果為int 5、在java中,任何一個整數默認都當做是int型別, 在java中,任何一個小數默認都是double型別 */ int m1 = 129; //0000 0000 0000 0000 0000 0000 1000 0001 byte m2 = (byte)m1; System.out.println(m2); double m3 = 10.2; int m4 = (int)m3; System.out.println(m4); short s1 = 1; short s2 = 1; //short s3 = s1 + s2; 錯誤 //System.out.println(s3); char x1 = 'a'; System.out.println(x1+1); } }View Code四、運算子
4.1 算術運算子
+ - * / % ++ --
public class Demo06{ public static void main(String[] args){ //算術運算子 /* 問題1: +號在java中有兩個作用:1、字串的拼接 2、加法運算 字串拼接的時候,任何型別與字串拼接最終的結果是字串型別 問題2: /和%可以求得數字上的各個數位 問題3: ++表示自身+1 --表示自身-1 ++在前,先加+1再使用 ++在后,先使用再加+1 */ int a = 10; int b = 20; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b); System.out.println(a%b); System.out.println("hello"+1+2); //hello12 System.out.println(1+2+"hello"); //3hello System.out.println(1+2+"hello"+3+4);//3hello34 int c = 34; //獲取c這個資料中的十位 System.out.println(c/10); //獲取c這個資料中的個位 System.out.println(c%10); ? ? int d = 10; d++; //d = d + 1; System.out.println(d); //11 ++d; System.out.println(d); //12 System.out.println(d++); //12 13 System.out.println(++d); //14 ? //int x = 10, int y = 8; x++ - --x + y-- + x++ - --y = ? int x = 10; int y = 8; System.out.println(x++ - --x + y-- + x++ - --y); /* x=11 y=6 x++ - --x + y-- + x++ - --y 10 - 10 + 8 + 10 - 6 */ } }View Code4.2 賦值運算子
= += -= *= /= %=
public class Demo07{ public static void main(String[] args){ //賦值運算子 int a = 10; a += 2; //相當于 a=a+2; a -= 3; //a = a - 3; a *= 4; //a = a * 4; a /= 5; //a = a / 5; a %= 6; //a = a % 6; //筆試題:short s1 = 1; short s2 = 1; s2 = s1 + s2? s2 += s1;? short s1 = 1; short s2 = 1; // s2 = s1 + s2; //錯誤 s2 += s1; //正確 System.out.println(s2); } }View Code4.3 關系運算子
> < >= <= != ==
public class Demo08{ public static void main(String[] args){ //關系運算子 結果:boolean型別 int a = 10; int b = 20; System.out.println(a > b); System.out.println(a >= b); System.out.println(a < b); System.out.println(a <= b); System.out.println(a == b); System.out.println(a != b); //整除條件 //偶數條件: a % 2 == 0 //奇數條件: a % 2 != 0 } }View Code
4.4 邏輯運算子
&& || !
public class Demo09{ public static void main(String[] args){ //邏輯運算子 結果:boolean型別 /* &&:所有的結果為true,最終結果才是true 短路與:只要有一個結果為false,就不會執行后面的運算式 ||:所有的結果只要有一個為true,最終結果就是true 短路或:只要有一個結果為true,就不會執行后面的運算式 !: 對結果進行取反 &: 無論結果如何都會執行完整個運算式 |: 無論結果如何都會執行完整個運算式 */ int a = 17; //問a是否是一個偶數且大于10 //boolean bool = a % 2 == 0 && a > 10; System.out.println(a % 2 == 0 && a > 10); System.out.println(a % 2 == 0 & a > 10); //問a是否是一個奇數數或小于15 System.out.println(a % 2 != 0 || a < 15); System.out.println(a % 2 != 0 | a < 15); //問:a是否是一個奇數 System.out.println(!(a % 2 == 0)); //&的用法 int b = 10; int c = 12; boolean bool2 = b++ > c-- & b-- == 10; System.out.println(b); } }View Code4.5 三目運算子
boolean型別運算式 ? 結果1 : 結果2;
public class Demo10{ public static void main(String[] args){ //三目運算子 /* boolean型別運算式 ? 結果1 : 結果2; */ //判斷年齡如果大于18歲,輸出成年人,否則輸出未成年人 int age = 70; String s = age > 18 ? "成年人" : "未成年人"; System.out.println(s); //a和b 輸出較大的那個數字 int a = 10; int b = 20; int num = a > b ? a : b; System.out.println(num); //三目運算子嵌套使用 //判斷年齡如果大于18歲,輸出成年人,但是如果大于60歲,輸出老年人,否則輸出未成年人 String s1 = age > 18 ? age > 60 ? "老年人": "成年人" : "未成年人"; System.out.println(s1); } }View Code
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/412855.html
標籤:Java
上一篇:介面和抽象類是否有構造方法

