Java编程基础二:java基本语法
第二章 基本語法
1.關鍵字和保留字
1.1關鍵字
定義:被java語言f賦予了特殊含義,用作專門用途的字符串
特點:關鍵字中所有的字母都是小寫
| class | interface | enum | byte | short |
| int | long | float | double | char |
| boolean | void | |||
| 用于定義 | 流程控制 | 的關鍵字 | ||
| if | else | switch | case | default |
| while | do | for | break | continue |
| return | ||||
| 用于定義 | 訪問權限 | 修飾符的 | 關鍵字 | |
| private | protected | public |
| abstract | final | static | synchronized | |
| 用于定義 | 簡歷實例 | 引用實例 | 的關鍵字 | |
| new | this | super | instanceof | |
| 用于處理 | 異常的 | 關鍵字 | ||
| try | catch | finally | throw | throws |
| 用于包的 | 關鍵字 | |||
| package | import | |||
| 其他修飾 | 符的關鍵 | 字 | ||
| native | strictfp | transient | volatile | assert |
| 用于定義 | 數據類型 | 值的字面值 | ||
| true | false | null |
1.2保留字
定義:現有的java版本尚未使用,但是以后的版本可能會作為關鍵字使用,自己命名標識符的時候要避免使用關鍵字和保留字。
goto、const
2.標識符
標識符:凡是自己可以起名字的地方都可以叫標識符
比如:類名、變量名、方法名、接口名、包名…
2.1標識符的命名規則:
由英文字母大小寫,數字0-9、_或$組成,其中數字不可以開頭
不可以使用關鍵字和保留字,但是可以包含
java中嚴格區分大小寫,長度無限制,不可包含空格
java中的名稱的命名規范
-
包名:多單詞組成是所有字母都要小寫 xxyyyzzz
-
類名、接口類、多單詞組成 首字母要大寫 XxxYyyZzz
-
變量名、方法名:多單詞使用組成,第一單詞首字母小寫,第二個單詞開始每個首字母大寫 xxYyyZzz
-
常量名:所有字母都大寫。多單詞是每個單詞用下劃線連接XXX_YY_ZZ
3.變量
3.1變量的使用:
java定義的變量格式 數據類型 變量名 = 變量值;
說明:
- 變量法必須先聲明后使用,
- 變量都定義在其作用于內,在作用域內是有效的
- 同一個作用域內不可以聲明相同的兩個變量
3.2變量的分類
按照聲明的位置分類
成員變量 vs 局部變量
long 類型不加L,會默認為int型
float必須加f
整形常量默認類型為int 浮點型默認為double
3.3 基本數據類型的運算
? 當容量小的數據類型的變量與容量大的數據類型做運算時,結果自動提升為容量大的 數據類型
byte、char、short -->int -->long -->float -->double
? 特別的 :當byte、char、short三種類型的變量做運算時,結果為int型
-
自動類型提升運算的逆運算
-
需要使用強轉符 ()
-
強制類型轉換可能損失精度
-
byte、short和char的取值范圍交叉,所以需要雙向強制轉換
double num1 = 2.05; int num = (int) num1;//num = 2 Math.random() * (n - m) + m; //生成[m,n)區間的隨機數最高位為符號位,0為正數,1為負數,負數先除符號位按位取反得到反碼,反碼加一得到補碼,計算機底層存儲數據都是用補碼
4.運算符
4.1算術運算符
| + | 正號 |
| - | 負號 |
| + | 加 |
| - | 減 |
| * | 乘 |
| / | 除 |
| % | 取余 |
| ++a | 先加后用 |
| a++ | 先用后加 |
| –a | 先減后用 |
| a– | 先用后減 |
提示:自加自減運算符誰在前邊先用誰
4.2賦值運算符
-
符號:=
當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理,支持連續賦值
-
擴展賦值運算符
+= -= /= *= %=
4.3比較運算符
| == | 相等于 | 4==3 | false |
| != | 不等于 | 4!=3 | true |
| < | 小于 | 3<4 | true |
| > | 大于 | 4>3 | ture |
| <= | 小于等于 | 4<=3 | false |
| >= | 大于等于 | 4>=3 | true |
| instanceof | 檢查是否是類的對象 | “Hello” instanceof String | true |
4.4 邏輯運算符
| & | 邏輯與 | | | 邏輯或 | ! | 邏輯非 |
| && | 短路與 | || | 短路或 | ^ | 邏輯異或 |
| true | true | true | true | true | true | false | false |
| true | false | false | false | true | true | false | true |
| false | true | false | false | true | true | true | true |
| false | false | false | false | false | false | true | false |
提示:
&和&&的區別
相同點1:&和&&的運算結果相同
相同點2:當符號左邊是true時,二者都會執行符號右邊的操作
不同點:當符號左邊是false時,&繼續執行右邊的操作,&&不會執行右邊的操作
|和||的區別
相同點1:|和||的運算結果相同
相同點2:當符號左邊是false時,二者都會執行符號右邊的操作
不同點:當符號左邊是true時,|繼續執行右邊的操作,||不會執行右邊的操作
4.5位運算符
| << | 左移 | 3<<2=12 |
| >> | 右移 | 3>>1=1 |
| >>> | 無符號右移 | 3>>>1=1 |
| & | 與 | 6&3=2 |
| | | 或 | 6|3=7 |
| ^ | 異或 | 6^3=5 |
| ~ | 取反 | ~6=-7 |
位運算是對整數的二進制進行運算
4.5.1 拓展:權限模塊
假設有兩張表 用戶表 以及 權限表
來源于 Unix 文件控制權限思想
| 1 | 張三 | 1111 | 15 |
| 2 | 李四 | 2222 | 12 |
| 3 | 王五 | 333 | 1 |
| 1 | 查看 | 1 | |
| 2 | 添加 | 2 | |
| 3 | 修改 | 4 | |
| 4 | 刪除 | 8 |
拓展:
50 << 1 = 50 * 2;
4.5.2 判斷一個數是不是2的次冪
import java.util.Scanner; public class Test1{public static void main(String[] args){System.out.println("input");Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc);check(n);}public static void check(int num){if( (num & num -1) == 0 ){//因為num 和 num-1 的二進制數是完全相反的,所以進行與運算的時候,如果是0,則代表是二的次冪//如果不是0的話,代表這個數與減一的數有一樣的,所以就不是而的次冪System.out.println("shi");}else{System.out.println("fou");}// 8 0000 1000// 7 0000 0111//4 0000 0100//3 0000 0011//16 0001 0000//15 0000 1111} }4.6三元運算符
- 條件表達式的結果為boolean類型
- 根據表達式真或假,決定執行表達式1還是表達式2,如果為真執行1,否則執行2
- 三元運算符可以嵌套使用
3. 凡是可以用三元運算符的低檔都可以用 if -else,反之不行,如果兩者都可以使用的話,優先使用 三元運算符,比較簡潔高效
5. == 和 equals()的區別
5.1 ==的使用
==:運算符
5.2 equals()方法的使用
? Object類中定義的equals()和== 的作用是相同的,比較兩個對象的地址值是否相同,,即兩個引用是否指向同一個對象實體 ;
5.3 自動生成重寫equals方法
Source --> Generate hashCode() and equals()
6.程序流程控制
6.1 順序結構
程序從上到下逐行的執行,中間沒有任何的判斷和跳轉
6.2 分支結構
示例:輸入月份和日期,輸出是2019年的第幾天
import java.util.Scanner; class SwitchCaseTest{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("請輸入2019年的月份");int month = scan.nextInt();System.out.println("請輸入2019年的日期");int day = scan.nextInt();int sumDay = 0;switch(month){case 12: sumDay += 30;//......case 4: sumDay += 31;case 3: sumDay += 28;case 2: sumDay += 31;case 1: sumDay += day;}System.out.println("2019年"+month+"月"+day+"日是當年的第"+sumDay+"天");} }6.3 循環結構
-
for循環
-
do{ … } while
-
while(){ … }
do -while 總是比while 多循環 一次
eg:輸出100以內所有的質數
class PrimeNumber{public static void main(String[] args){for(int i = 2; i < 100 ; i++){boolean isFlag = true;for(int j = 2; j <= Math.sqrt(i);j++){if(i % j ==0){isFlag = false;break; //如果被除盡,跳出}}if( isFlag ){System.out.print(i+"\t");}}} }總結
以上是生活随笔為你收集整理的Java编程基础二:java基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 根据起始时间和结束时间计算
- 下一篇: 盘古越狱工具被爆存在安全风险,官方予以否