二、變數與運算符

来源:https://www.cnblogs.com/mswblogs/archive/2023/12/24/17923907.html
-Advertisement-
Play Games

1.關鍵字(keyword) 定義:被Java語言賦予了特殊含義,用做專門用途的字元串(或單詞),這些字元串(或單詞)已經被Java定義好了。 特點:全部關鍵字都是小寫字母。 關鍵字查閱的官方地址: https://docs.oracle.com/javase/tutorial/java/nutsa ...


1.關鍵字(keyword)

定義:被Java語言賦予了特殊含義,用做專門用途的字元串(或單詞),這些字元串(或單詞)已經被Java定義好了。

特點:全部關鍵字都是小寫字母。

關鍵字查閱的官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

2.標識符(identifier)

Java中類名、變數名、方法名、數組名、文件名等要素命名時使用的字元序列,稱為標識符。凡是自己可以起名字的地方都叫標識符。

標識符的命名規則(必須遵守的硬性規定):

  • 由英文字母大小寫,數字,_或 $ 組成
  • 不能使用數字開頭
  • 不能使用關鍵字和保留字,但能包含關鍵字和保留字
  • Java中嚴格區分大小寫,長度無限制
  • 標識符不能包含空格

標識符的命名規範:

  • 包名:多單片語成時所有字母都小寫:xxxyyyzzz
  • 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz(大駝峰)
  • 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz(小駝峰)
  • 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ

註意(重要):在起名字時,為了提高閱讀性,要儘量有意義,“見名知意”。更多細節詳見《代碼整潔之道_關於標識符.txt》《阿裡巴巴Java開發手冊-1.7.1-黃山版》

3.變數

3.1 什麼是變數

在程式運行過程中,空間內的值是變化的,這個記憶體空間就稱為變數。變數是程式中不可或缺的組成單位,最基本的存儲單元

變數的使用是程式設計中一個十分重要的環節。聲明變數就是要告訴編譯器這個變數的數據類型,這樣編譯器才知道需要配置多少空間給它,以及它能存放什麼樣的數據。

3.2 變數的概念

  • 記憶體中的一個存儲區域,該區域的數據可以在同一類型範圍內不斷變化

  • 變數的構成包含三個要素:數據類型、變數名、存儲的值

  • java語言中聲明變數:數據類型 變數名 = 變數值

  • 變數的作用:用於在記憶體中保存數據

  • 使用變數應該註意的事項:

    • 聲明變數時必須註意標識符的命名規則和規範,使用小駝峰定義變數名;

    • java中每個變數必須先聲明,後使用;

    • 變數的作用域:變數都有其作用域,變數只在這個作用域是有效的,出了這個作用域就失效了,其定義所在的一對{ }內就是該變數的作用域;

    • 變數在賦值時,必須滿足聲明變數時定義的數據類型並且不能超出該數據類型的表數範圍。例如:

      class test {
          public static void main(String[] args) {
              //下麵聲明兩個變數並賦值來驗證變數賦值時的註意事項
              byte a = 128;
              int b = 'helloworld';
              System.out.println("a");
              System.out.println("b");
          }
      }
      
    • 同一個作用域內,不能定義重名的變數

3.3 變數的使用

3.3.1 聲明變數

聲明變數的格式:數據類型 變數名;

/* 下麵是聲明變數的舉例*/
class Test {
    public static void main(String[] args){
        
        int age; //聲明一個存儲int型數據的年齡變數
        double weight; //聲明一個存儲double型數據的體重變數
        char gender; //聲明一個存儲int型數據的年齡變數
        boolean marry; //聲明一個存儲boolean型數據的婚姻狀態變數   
        String name; //聲明一個存儲String型數據的姓名變數
        int a,b,c; //聲明多個同類型的變數
        int d = 1; //聲明一個存儲int型的變數並給它賦值1
    }
}

3.3.2 變數賦值

變數賦值的格式:變數名 = 值;

...
    age = 18; //給3.3.1中聲明的變數age賦值18
	gender = '女'; //給3.3.1中聲明的變數gender賦值女

4.數據類型

image-20231220193503308

4.1 基本數據類型

4.1.1 整數類型:byte、short、int、long

  • 整數類型簡稱整型,用來存儲整數數值,既沒有小數部分的數值。可以是正數,也可以是負數。整型數據根據它所占記憶體大小的不同分為byte、short、int、long。
  • 註意:聲明long類型時,需要提供尾碼,'l'或'L'。例如:long x = 123123123123l;

image-20231220225704110

4.1.2 浮點類型:float、double

  • 浮點類型稱為浮點型,用來存儲含有小數部分的數值。Java中浮點類型分為單精度浮點類型(float)和雙精度浮點類型(double),它們具有不同的取值範圍。
  • 定義float類型變數,賦值時需要以"f"或“F”作為尾碼。Java中預設情況下小數都被看作double型。
  • 註意:浮點值屬於近似值,在電腦系統中運算後的結果可能與實際有偏差。並不是所有小數都能精確的用二進位浮點數表示,浮點型的數據不適合運用在不容許舍入誤差的金融計算領域等高精度需求的領域。

image-20231220230539943

4.1.3 字元類型:char

  • 字元類型用於存儲單個字元,占用16位(兩個位元組)的記憶體空間;

  • Java中的所有字元都使用Unicode編碼,故一個字元可以存儲一個字母,一個漢字,或其他書面語的一個字元;

  • Java語言也可以把字元作為整數對待。由於Unicode編碼採用無符號編碼,可以存儲65536個字元(0x00000xffff),所以Java中的字元幾乎可以處理所有國家的語言文字。若想得到一個065536的數所代表的Unicode表中相應位置上的字元,也必須使用char型顯示轉換。

  • 在定義字元類型時,使用一對單引號表示,內部只能有一個字元

  • 字元變數的幾種表現形式:

    • 形式1:使用單引號(' ')括起來的單個字元

      //使用char關鍵字可定義字元變數,其語法如下:
      char x = 'a';
      //由於字元a在Unicode表中的排序位置是97,因此上面的語句也可以寫成:
      char x = 97; //這行也可理解為想要得到Unicode表中第97個字元,使用char型顯示轉換
      
    • 形式2:直接使用 Unicode值來表示字元型常量:‘\uXXXX’。其中,XXXX代表一個十六進位整數

    • 形式3:Java中還允許使用轉義字元‘\’來將其後的字元轉變為特殊字元型常量

  • 轉義字元:

    ​ 轉義字元是一種特殊的字元變數,它以反斜杠“\”開頭,後跟一個或對公字元。轉義字元具有特定含義,不同於字元原有的意義,故稱為轉義字元。

轉義字元 說明 Unicode表示方式
\n 換行符 \u000a
\t 製表符 \u0009
\" 雙引號 \u0022
\' 單引號 \u0027
\\ 反斜線 \u005c
\b 退格符 \u0008
\r 回車符 \u000d
\f 換頁符
...... ...... ......

4.1.4 布爾類型:boolean

  • 布爾類型又稱為邏輯類型,通過關鍵字boolean來定義布爾類型變數;

  • 布爾類型只有turefalse兩個取值,分別代表布爾邏輯中的”真“和“假”;

  • 布爾類型通常用在流程式控制制語句中,作為判斷條件;

  • 例子說明:

    boolean b; //定義布爾類型變數
    boolean b1,b2; //定義多個布爾類型變數
    b1 = ture; //給boolean類型變數賦值ture
    b2 = false; //給boolean類型變數賦值false
    

4.2 基本數據類型變數間運算規則

在Java程式中,不同的基本數據類型(只有7種,不包含boolean類型)變數的值經常需要進行相互轉換。

轉換的方式有兩種:自動類型提升強制類型轉換

4.2.1 自動類型提升

  • 規則:當數據類型表數範圍小的變數與數據類型表數範圍大的變數做運算時,結果自動轉換為表數範圍大的數據類型變數值:

  • byte、short、char -->> int -->> long -->> float -->> double

  • 特殊情況:

​ byte、short、char類型的變數之間做運算,結果為int類型。

/*
* 基本數據類型變數間的自動類型提升測試
* byte、short、char --> int --> long --> float --> double
* 下麵是進行自動類型提升中的特殊情況測試驗證學習
* */
public class VariableTest {

    public static void main(String[] args) {
        //聲明變數
        byte b1,b2;
        short s1,s2;
        char c1,c2;
        //變數賦值
        b1 = b2 = 1;
        s1 = s2 = 3;
        c1 = c2 = 'a';
        //System.out.println(((Object)(x)).getClass().getSimpleName())是列印出x的值的數據類型
        System.out.println(((Object)(b1+b2)).getClass().getSimpleName()); // byte + byte
        System.out.println(((Object)(s1+s2)).getClass().getSimpleName()); // short + short
        System.out.println(((Object)(c1+c2)).getClass().getSimpleName()); // char + char
        System.out.println(((Object)(b1+s1)).getClass().getSimpleName()); // byte + short
        System.out.println(((Object)(b1+c1)).getClass().getSimpleName()); // byte + char
        System.out.println(((Object)(s1+c1)).getClass().getSimpleName()); // short + char
    }
}

image-20231223143922228

4.2.2 強制類型轉換

  • 當需要將變數轉換為比當前表數範圍小的數據類型,就需要使用強制類型轉換

  • 轉換格式:

//(要轉換的數據類型)被強制轉數據類型的變數名;
int i1 = 1;
    
System.out.println(((Object)(short)i1).getClass().getSimpleName());
System.out.println(((Object)(byte)i1).getClass().getSimpleName());

image-20231223151135174

  • 強制類型轉換會出現精度損失和精度溢出

4.3 基本數據類型與String的運算

4.3.1 字元串類型:String

  • String是一個類,屬於引用數據類型不屬於基本數據類型
  • 使用一對""來表示一個字元串,內部可以包含0個、1個或多個字元。
  • 字元串變數的聲明和賦值:
//String 變數名 = "字元串";
String str = "Hello World!!!!!";

4.3.2 運算規則

  • 任意八種基本數據類型中的一種與String類型只能進行連接“+”運算,且結果一定也是String類型;
  • String類型不能強制類型轉換;
//String類型變數“+”運算,例子
int i = 10;
boolean b = true;
float f = 10.0f;
String str2 = "hello";

System.out.println(i + str2);
System.out.println(b + str2);
System.out.println(f + str2);

5.運算符

  • 運算符是一些特殊符號,主要用於數學函數、一些類型的賦值語句和邏輯比較方面;
  • Java中提供了豐富的運算符

image-20231223211725083

  • 運算符按操作數個數可劃分為:一元運算符(單目運算符)、二元運算符(雙目運算符)、三元運算符 (三目運算符)
分類 運算符
一元運算符(單目運算符) 正號(+)、負號(-)、++、--、!、~
二元運算符(雙目運算符) 除了一元和三元運算符剩下的都是二元運算符
三元運算符 (三目運算符) (條件表達式)?結果1:結果2

5.1 算術運算符

Java中的算術運算符主要有+(加)、-(減)、*(乘)、/(除)、%(取餘)、++(自增)、--(自減)

操作符 描述 例子(a = 1, b= 2)
+ 加法 - 相加運算符兩側的值 a + b 等於3
- 減法 - 左操作數減去右操作數 a - b 等於-1
* 乘法 - 相乘操作符兩側的值 a * b 等於2
/ 除法 - 左操作數除以右操作數 b / a 等於2
% 取餘 - 左操作數除以右操作數的餘數 b % a 等於 0
++ 自增: 操作數的值增加1
-- 自減: 操作數的值減少1

註意:自增、自減運算符是單目運算符,可以放在操作元之前,也可以放在操作元之後。操作元必須是一個整型或浮點型變數。

++a(--a)		//表示在使用變數a之前,先使a的值加1(或減1)
a++(a--)		//表示在使用變數a之後,使a的值加1(或減1)

例如:

int a = 1;
int b,c;
b = ++a;	//先將a的值加1,然後再賦值給b,此時b為2。
c = a++;	//先將a的值賦值給c,然後a再+1,此時c為1。

5.2 關係(比較)運算符

Java中比較運算符屬於二元運算符,用於程式中變數之間、變數和自變數之間以及其他類型的信息之間比較。

操作符 描述
== 用於判斷兩個對象是否相等
!= 用於判斷兩個對象是否不相等
> 用於比較兩個對象的大小
< 用於比較兩個對象的大小
>= 用於判斷一個對象是否大於或等於另一個對象
<= 用於判斷一個對象是否小於或等於另一個對象
  • 比較運算符的運算結果只為boolean,要麼是true,要麼是false
  • >、<、>=、<= :只適用於基本數據類型(除boolean類型之外)
  • ==、!= :適用於基本數據類型和引用數據類型

5.3 邏輯運算符

運算符 含義 用法
&&、& 邏輯與 op1 && op2
|| 邏輯或 op1 || op2
! 邏輯非 !op
^ 異或 op1^op2
  • 邏輯運算符,操作的都是boolean類型的變數,運算結果也是boolean類型的值
  • 運算符說明:
    • & 和 &&:表示"且"關係,當符號左右兩邊布爾值都是true時,結果才能為true。否則,為false;
    • || :表示"或"關係,當符號兩邊布爾值有一邊為true時,結果為true。當兩邊都為false時,結果為false;
    • ! :表示"非"關係,當變數布爾值為true時,結果為false。當變數布爾值為false時,結果為true。
    • ^:當符號左右兩邊布爾值不同時,結果為true。當兩邊布爾值相同時,結果為false。

5.4 位運算符

位運算符除“按位與”和“按位或”運算符外,其他只能用於處理整數的操作數,包括byte、short、char、int和long等數據類型。位運算符是完全針對位方面的操作。

image-20231223225113105

image-20231223225156969

  • 位運算符的運算過程都是基於二進位的補碼運算

(1)左移:<<

運算規則:在一定範圍內,數據每向左移動一位,相當於原數據*2。(正數、負數都適用)

【註意】當左移的位數n超過該數據類型的總位數時,相當於左移(n-總位數)位

3<<4  類似於  3*2的4次冪 => 3*16 => 48

image-20231223231142216

-3<<4  類似於  -3*2的4次冪 => -3*16 => -48

image-20231223231235451

(2)右移:>>

運算規則:在一定範圍內,數據每向右移動一位,相當於原數據/2。(正數、負數都適用)

【註意】如果不能整除,向下取整

69>>4  類似於  69/2的4次 = 69/16 =4

image-20231223231337252

-69>>4  類似於  -69/2的4次 = -69/16 = -5

image-20231223231445914

(3)無符號右移:>>>

運算規則:往右移動後,左邊空出來的位直接補0。(正數、負數都適用)

69>>>4  類似於  69/2的4次 = 69/16 =4

image-20231223231542402

-69>>>4   結果:268435451

image-20231223231613554

(4)按位與:&

運算規則:對應位都是1才為1,否則為0。

  • 1 & 1 結果為1

  • 1 & 0 結果為0

  • 0 & 1 結果為0

  • 0 & 0 結果為0

9 & 7 = 1

image-20231223231643136

-9 & 7 = 7

image-20231223231724246

(5)按位或:|

運算規則:對應位只要有1即為1,否則為0。

  • 1 | 1 結果為1

  • 1 | 0 結果為1

  • 0 | 1 結果為1

  • 0 & 0 結果為0

9 | 7  //結果: 15

image-20231223231805332

-9 | 7 //結果: -9

image-20231223231852136

(6)按位異或:^

運算規則:對應位一個為1一個為0,才為1,否則為0。

  • 1 ^ 1 結果為0

  • 1 ^ 0 結果為1

  • 0 ^ 1 結果為1

  • 0 ^ 0 結果為0

9 ^ 7  //結果為14

image-20231223232027683

-9 ^ 7 //結果為-16

image-20231223232054199

(7)按位取反:~

運算規則:對應位為1,則結果為0;對應位為0,則結果為1。

  • ~0就是1

  • ~1就是0

~9  //結果:-10

image-20231223232135664

~-9  //結果:8

image-20231223232158113

5.5 賦值運算符

運算符 符號解釋
+= 將符號左邊的值右邊的值進行相加操作,最後將結果賦值給左邊的變數
-= 將符號左邊的值右邊的值進行相減操作,最後將結果賦值給左邊的變數
*= 將符號左邊的值右邊的值進行相乘操作,最後將結果賦值給左邊的變數
/= 將符號左邊的值右邊的值進行相除操作,最後將結果賦值給左邊的變數
%= 將符號左邊的值右邊的值進行取餘操作,最後將結果賦值給左邊的變數

5.6 條件(三元)運算符

  • 三元運算符的使用格式:
(條件表達式)? 值1 : 值2
  • 說明:條件表達式是boolean類型的結果,根據boolean的值選擇值1或值2。如果條件表達式為true運算結果是值1,反之為值2。

  • 如果運算後的結果賦給新的變數,要求值1和值2為同種或相容的數據類型

  • 舉例說明:

String str1 = (1 > 2)? "true" : "false";
String str2 = (1 < 2)? "true" : "false";
boolean b1 = (1 > 2)? true : false;
boolean b2 = (1 < 2)? true : false;
System.out.println(str1);
System.out.println(str2);
System.out.println(b1);
System.out.println(b2);

image-20231223234407193

6.運算符優先順序

運算符有不同的優先順序,所謂優先順序就是在表達式運算中的運算符順序。

優先順序 運算符說明 Java運算符
1 括弧 ()[]{}
2 正負號 +-
3 單元運算符 ++--~
4 乘法、除法、求餘 */%
5 加法、減法 +-
6 移位運算符 <<>>>>>
7 關係運算符 <<=>=>instanceof
8 等價運算符 ==!=
9 按位與 &
10 按位異或 ^
11 按位或 `
12 條件與 &&
13 條件或 `
14 三元運算符 ? :
15 賦值運算符 =+=-=*=/=%=
16 位賦值運算符 &=、`

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、HBase Shell操作 1、基本操作 1)進入HBase客戶端命令行 [root@bigdata1 hbase]$ bin/hbase shell 2)查看幫助命令 hbase(main):001:0> help 3)查看當前資料庫中有哪些表 hbase(main):002:0> list ...
  • 目錄Hive集成表引擎創建表使用示例如何使用HDFS文件系統的本地緩存查詢 ORC 輸入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表查詢 Parquest 輸入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表查詢文本輸入格式的Hive表在Hive 中建 ...
  • 一、異常信息描述 執行資料庫操作時,主鍵id沒有自增,且報“more than one owned sequence found”的異常,造成數據沒有insert進去,下麵是詳細的異常信息: java.lang.reflect.InvocationTargetException at sun.ref ...
  • 本文深入探討了安卓DocumentsProvider的應用場景,分析了其優勢與不足,並提供了簡單的代碼實現。DocumentsProvider是安卓系統中用於文件存儲與訪問的關鍵組件,為應用開發者提供了強大的文件管理能力。 ...
  • Android對接微信登錄記錄 - Stars-One的雜貨小窩 Android項目要對接下微信登錄,稍微記錄下踩坑點 代碼 1.添加依賴 implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0' 2.聲明Activity 在你 ...
  • login-status-iframe.html是keycloak為我們提供的一種檢測用戶登錄狀態的頁面,它要求用戶對接的系統通過iframe進行嵌入,然後通過window.addEventListener去訂閱子頁面的信息。 提示: 所有 HTML DOM 事件,可以查看我們完整的https:// ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 最近受夠了公司內部站點每次登陸都需要填寫用戶名和密碼,還有輸入驗證碼。 要是能夠直接跳過登陸頁面就好啦。 說乾就乾,決定使用油猴插件實現自動登陸功能。 其中最難解決的就是驗證碼破解,花了一天的時間完美解決,現在整理出來。 1.分析驗證碼 ...
  • 實現說明: 在 JS 中 canvas 原生沒有支持對文字間距的調整,我們可以通過將文字的每個字元單獨渲染來實現。本案例從 CanvasRenderingContext2D 對象的原型鏈上擴展了一個用於繪製帶間距的函數 fillTextWithSpacing(),使用方式與原生 fillText() ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...