日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java编程基础二:java基本语法

發布時間:2023/12/20 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java编程基础二:java基本语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第二章 基本語法

1.關鍵字和保留字

1.1關鍵字

定義:被java語言f賦予了特殊含義,用作專門用途的字符串

特點:關鍵字中所有的字母都是小寫

用于定義數據類型的關鍵字
classinterfaceenumbyteshort
intlongfloatdoublechar
booleanvoid
用于定義流程控制的關鍵字
ifelseswitchcasedefault
whiledoforbreakcontinue
return
用于定義訪問權限修飾符的關鍵字
privateprotectedpublic
用于定義類函數、變量的關鍵字
abstractfinalstaticsynchronized
用于定義簡歷實例引用實例的關鍵字
newthissuperinstanceof
用于處理異常的關鍵字
trycatchfinallythrowthrows
用于包的關鍵字
packageimport
其他修飾符的關鍵
nativestrictfptransientvolatileassert
用于定義數據類型值的字面值
truefalsenull

1.2保留字

定義:現有的java版本尚未使用,但是以后的版本可能會作為關鍵字使用,自己命名標識符的時候要避免使用關鍵字和保留字。
goto、const

2.標識符

標識符:凡是自己可以起名字的地方都可以叫標識符

比如:類名、變量名、方法名、接口名、包名…

2.1標識符的命名規則:

  • 由英文字母大小寫,數字0-9、_或$組成,其中數字不可以開頭

    不可以使用關鍵字和保留字,但是可以包含

  • java中嚴格區分大小寫,長度無限制,不可包含空格

  • java中的名稱的命名規范

    • 包名:多單詞組成是所有字母都要小寫 xxyyyzzz

    • 類名、接口類、多單詞組成 首字母要大寫 XxxYyyZzz

    • 變量名、方法名:多單詞使用組成,第一單詞首字母小寫,第二個單詞開始每個首字母大寫 xxYyyZzz

    • 常量名:所有字母都大寫。多單詞是每個單詞用下劃線連接XXX_YY_ZZ

    3.變量

    3.1變量的使用:

  • java定義的變量格式 數據類型 變量名 = 變量值;

  • 說明:

    • 變量法必須先聲明后使用,
    • 變量都定義在其作用于內,在作用域內是有效的
    • 同一個作用域內不可以聲明相同的兩個變量

    3.2變量的分類

  • 按照數據類型分類
  • #mermaid-svg-lw2Wniwn89XoSoud {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lw2Wniwn89XoSoud .error-icon{fill:#552222;}#mermaid-svg-lw2Wniwn89XoSoud .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lw2Wniwn89XoSoud .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-lw2Wniwn89XoSoud .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lw2Wniwn89XoSoud .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lw2Wniwn89XoSoud .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lw2Wniwn89XoSoud .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lw2Wniwn89XoSoud .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lw2Wniwn89XoSoud .marker.cross{stroke:#333333;}#mermaid-svg-lw2Wniwn89XoSoud svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lw2Wniwn89XoSoud .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lw2Wniwn89XoSoud .cluster-label text{fill:#333;}#mermaid-svg-lw2Wniwn89XoSoud .cluster-label span{color:#333;}#mermaid-svg-lw2Wniwn89XoSoud .label text,#mermaid-svg-lw2Wniwn89XoSoud span{fill:#333;color:#333;}#mermaid-svg-lw2Wniwn89XoSoud .node rect,#mermaid-svg-lw2Wniwn89XoSoud .node circle,#mermaid-svg-lw2Wniwn89XoSoud .node ellipse,#mermaid-svg-lw2Wniwn89XoSoud .node polygon,#mermaid-svg-lw2Wniwn89XoSoud .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lw2Wniwn89XoSoud .node .label{text-align:center;}#mermaid-svg-lw2Wniwn89XoSoud .node.clickable{cursor:pointer;}#mermaid-svg-lw2Wniwn89XoSoud .arrowheadPath{fill:#333333;}#mermaid-svg-lw2Wniwn89XoSoud .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lw2Wniwn89XoSoud .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lw2Wniwn89XoSoud .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-lw2Wniwn89XoSoud .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-lw2Wniwn89XoSoud .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lw2Wniwn89XoSoud .cluster text{fill:#333;}#mermaid-svg-lw2Wniwn89XoSoud .cluster span{color:#333;}#mermaid-svg-lw2Wniwn89XoSoud div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lw2Wniwn89XoSoud :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}數據類型基本數據類型引用數據類型數值型字符型 char布爾型 blooean整數類型 byte,short,int,long浮點型 float double類 class接口 interface數組字符串屬于類
  • 按照聲明的位置分類

    成員變量 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==3false
    !=不等于4!=3true
    <小于3<4true
    >大于4>3ture
    <=小于等于4<=3false
    >=大于等于4>=3true
    instanceof檢查是否是類的對象“Hello” instanceof Stringtrue

    4.4 邏輯運算符

    邏輯運算符運算運算符運算運算符運算
    &邏輯與|邏輯或邏輯非
    &&短路與||短路或^邏輯異或
    aba&ba&&ba|ba||b!aa^b
    truetruetruetruetruetruefalsefalse
    truefalsefalsefalsetruetruefalsetrue
    falsetruefalsefalsetruetruetruetrue
    falsefalsefalsefalsefalsefalsetruefalse

    提示:

    &和&&的區別

    相同點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 文件控制權限思想

    userIDnamepasswordpromission
    1張三111115
    2李四222212
    3王五3331
    modIdinfourlvalue
    1查看1
    2添加2
    3修改4
    4刪除8
    //假如要判斷李四是否有修改權限 if(lisi.promission & 4 != 0)假設李四的權限是: XXXX XXXX與4進行與運算 &: 0000 0100 //如果李四有修改權限的 4的二進制位就會變成1, 結果 : 0000 0100 //4 //原理:與運算按二進制位運算 如果兩個值都是1則為1 //要給王五添加修改權限if(wangwu.promission | 4 != 0)假設王五的權限是: XXXX XXXX與4進行或運算 |: 0000 0100 //如果王五沒有修改權限 4的二進制位就會變成1結果 : XXXX X1XX //原理:或運算安二進制位 有1則為1 //刪除莫個人的修改權限 if(zhangsan.promission ^ -5 != 0) 假設王五的權限是: xxxx xxxx與4進行異或預算: 0000 0100 //如果張三有修改權限的話 4的二進制位就會變成0結果 : XXXX X0XX //原理:異或運算 兩個都一樣的情況下才會變成0 //有一個int型的數字 XXXXXXXX YYYYYYY ZZZZZZZZ WWWWWWWW //如果想要后八位 WWWWWWWW需要將int& 1111 1111xxxx xxxx yyyy yyyy zzzz zzzz wwww wwww& 0000 0000 0000 0000 0000 0000 1111 1111 //進行與運算 0000 0000 0000 0000 0000 0000 wwww wwww //想要得到zzzz zzzz的值 先將int型的數字右移八位在與 1111 1111進行與運算xxxx xxx yyyy yyyy zzzz zzzz wwww wwww >> 8 //溢出之后w位的就不要了 變成 xxxx xxxx yyyy yyyy zzzz zzzzxxxx xxxx yyyy yyyy zzzz zzzz& 0000 0000 0000 0000 1111 1111 //進行與運算 0000 0000 0000 0000 zzzz zzzz

    拓展:

    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三元運算符

  • 結構: (條件表達式) ? 表達式1 : 表達式2
  • 注意
    • 條件表達式的結果為boolean類型
    • 根據表達式真或假,決定執行表達式1還是表達式2,如果為真執行1,否則執行2
    • 三元運算符可以嵌套使用
    int m = 10; int n = 12; String maxStr = (m > n) ? "m大" : "n 大"; //如果m = n // String maxStr = (m > n) ? "m大" : ((m == n) ? "m = n" : "n大");

    3. 凡是可以用三元運算符的低檔都可以用 if -else,反之不行,如果兩者都可以使用的話,優先使用 三元運算符,比較簡潔高效

    5. == 和 equals()的區別

    5.1 ==的使用

    ==:運算符

  • 可以使用在基本數據類型變量和引用數據類型變量中
  • 如果比較的是基本數據類型變量,比較兩個變量保存的數據是否相等(不一定類型要相同);如果比較的是引用數據類型變量,比較兩個對象的地址值是否相同,即兩個引用是否指向同一個對象實體
  • 5.2 equals()方法的使用

  • equals()是一個方法,并非運算符
  • 只能適用于引用數據類型
  • Object類中equals()的定義
  • public boolean equals(Object obj){return (this == obj); }

    ? Object類中定義的equals()和== 的作用是相同的,比較兩個對象的地址值是否相同,,即兩個引用是否指向同一個對象實體 ;

  • 像String、Date、File、包裝類等都重寫了Object類中的equals()方法,重寫以后,比較的不是兩個引用地址是否相等。而是比較兩個引用的”實體內容“是否相同
  • 我們自定義的類使用equals()方法的話,也是比較兩個對象的實體內容,那么我們就需要對Object類中的equals()進行重寫
  • public class EqualsTest{public static void main(String[] args){int i = 1;int j = 1;double d = 1.0;System.out.println(i == j);//trueSystem.out.println(i == d);//truechar c = 1;System.out.println(i == c); //truechar c1 = 'A';char c2 = 65;System.out.println( c1 == c2);//trueCustomer user1 = new Customer("Tom",21); Customer user2 = new Customer("Tom",21); System.out.println( user1 == user2);//falseString str1 = new String("Test");String str2 = new String("Test");System.out.println( str1 == str2);//falseSystem.out.println( user1.equals(user2)); //falseSystem.out.println( str1.equals(str2)); //true} }//自動創建一個Customer類 //自動生成get 和set方法 //生成一個空參和一個帶參構造器//*************************************@Overridepublic boolean equals(Object obj){if( this == obj){return true;}if( obj instanceof Customer){Customer cust = (Customer)obj;return this.age == cust.age && this.name.equals(cust.name);}return false;}

    5.3 自動生成重寫equals方法

    Source --> Generate hashCode() and equals()

    6.程序流程控制

    6.1 順序結構

    程序從上到下逐行的執行,中間沒有任何的判斷和跳轉

    6.2 分支結構

  • if - else
  • if(條件表達式){ 執行表達式 }if(條件表達式){ 執行表達式1 } else { 條件表達式2 }if(條件表達式1 ){ 執行表達式 1} else if(條件表達式 2{ 執行表達式 2} else{ 執行表達式 3}
  • switch -case
  • // switch 支持的數據類型有 byte short char int string enumswitch(表達式) {case 條件1: 執行語句 1//break;case 條件2: 執行語句 2//break;default:執行最終條件;//break;}

    示例:輸入月份和日期,輸出是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基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。