1. 程式人生 > >變數與運算子

變數與運算子

目錄

 

1關鍵字與識別符號

1.1 java關鍵字的使用

  1.2 保留字

1.3 識別符號的使用

1.4 規則與規範

2 變數的使用

2.1按資料型別分類

2.2定義變數的格式:

2.3變數使用的注意點:

3變數間的運算

3.1基本資料型別間運算

3.2 String與基本資料型別(8種)間運算

4進位制

4.1進位制的表示

4.2二進位制:

5運算子

算術運算子

賦值運算子

比較運算子(關係運算符)

邏輯運算子

位運算子

三元運算子

6資料的交換


1關鍵字與識別符號

1.1 java關鍵字的使用

 

  • 定義:Java語言賦予了特殊含義,用做專門用途的字串(單詞)
    • 特點:關鍵字中所有字母都為小寫

  1.2 保留字

現版本暫未使用,但以後的版本可能作為關鍵字進行使用

1.3 識別符號的使用

識別符號:凡是需要自己命名的地方都叫做識別符號

1.4 規則與規範

  1. 定義合法識別符號規則:
    • 26個英文字母大小寫,0-9 _$ 組成  
    • 數字不可以開頭。
    • 不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
    • Java中嚴格區分大小寫,長度無限制。
    • 識別符號不能包含空格。
  2. Java中的名稱命名規範:
    • 包名:多單片語成時所有字母都小寫:xxxyyyzzz
    • 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz
    • 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
    • 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連線:XXX_YYY_ZZZ

 

2 量的使用

2.1按資料型別分類

 

 

2.2定義變數的格式:

格式: 變數的型別  變數名 = 變數值

例:

//宣告一個變數並賦值
		int number = 20;
		//宣告一個變數
		int number2;
		//給變數賦值
		number2 = 30;
		System.out.println(number2);
		//變數可以被多次賦值後一次賦值覆蓋前一次的值
		number2 = 50;
		//int number2 = 100; 編譯錯誤 - 同一作用域內的變數名不可重複
		int a,b,c; //同時聲明瞭三個變數
		a = b = c = 10; //同時給三個變數賦值
		int aa = 10,bb = 20,cc = 30;

 

2.3變數使用的注意點:

 

①先宣告再使用

②作用域 :宣告它的那對大括號內

③在同一個作用域中變數名不能相同

④變數可以被多次賦值,後一次賦值覆蓋前一次的值

 

3變量間的運算

3.1基本資料型間運算

  一 基本資料型別之間的運算(7種 不包括(boolean))

  1. 自動型別提升:小容量和大容量的變數作運算,用大容量的型別來接收資料。

byte,short,char -> int -> long -> float -> double

     2.強制型別轉換:自動型別提升的逆過程。

注意:①容量指是變數的表數範圍

  ②byte,short,char三者之間做算先自提升為int類

 

3.2 String基本資料型別(8種)間運算

符串的賦值方式:

String str = “aaa”;

String s = new String(“bbb”);

明:

1.String與基本資料型別間只能做連線運算

2.String與基本資料型別做運算結果只能是String

4

4.1進制的表示

二進位制:以0b或0B開頭 。比如:0b10

八進位制:以0開頭.比如010

十六進位制:以0x或0X開頭。比如0x10

4.2二

①所有數字在計算機的底層都是以什麼方式存在?進位制

②計算機以什麼樣的形式儲存所有的整數?

什麼是原碼,反碼,補碼?

1、正數的原碼,反碼,補碼相同

2、負數的

  • 原碼:直接將一個數值換成二進位制數。最高位是符號位
  • 反碼:除符號位外,將原碼取反(0變1,1變0)
  • 補碼:在反碼的基礎上加1

5運算符

算術運算子

說明:

  1. 前++後++前區別是什麼?
  • 前++ :先自增1,後賦值
  • 後++ :先賦值,再自增1
  • 前-- :先自減1,後賦值
  • 後-- :先賦值,再自減1
  • 程式碼:

    	//除 
    		int number = 10;
    		int number2 = 4;
    		int number3 = number / number2; //2
    
    		double number4 = number / number2; //2.0
    
    		number4 = (number + 0.0) / number2; //2.5
    
    		number4 = (double)number / number2; //2.5
    
    		number4 = (double)(number / number2); //2.0
    
    //使用場景 : 判斷是否可以整除。 比如  x % 5 == 0 如果條件滿足那麼就可以整除
    		System.out.println(0 % 2); //0
    		System.out.println(1 % 2); //1
    		System.out.println(2 % 2); //0
    		System.out.println(3 % 2); //1
    		System.out.println(4 % 2); //0
    		System.out.println(5 % 2); //1
    		System.out.println(6 % 2); //0
    
    		System.out.println("-------------------------------------------");
    		//思考?取模結果的正負和什麼有關? 和被模數有關。被模數是正的結果就為正,被模數是負的結果就為負
    		System.out.println(-3 % 2); // -1
    		System.out.println(3 % -2); //1
    		System.out.println(-3 % -2); //-1

     

賦值運算子

相關面試題:

①編譯不通過,因為short型別變數運算子時會先自動型別提升為int型別

②編譯可以通過,不會改變原來的資料型別

 

比較運算子(關係運算符)

說明:結果都是boolean型別

 

邏輯運算子

說明:

1.邏輯與和短路與。當運算子的兩邊有一個為false結果就為false

 2.邏輯或和短路或。當運算子的兩邊有一個為true結果就為true

 3.邏輯非。取反。(如果a的值為true結果為false.如果a的值為false結果為true)

 4.邏輯異或。當運算子的兩邊值相同結果為false.兩邊的值不同結果為true

 

  特點 :

1.邏輯運算子是對boolean型別進行運算的

2.邏輯運算子的結果為boolean型別

 

位運算子

說明:

>> (右移):  在一定範圍內,每向右移一位。原來的數除以2

<< (左移) : 在一定範圍內,每向左移一位。原來的數乘以2

>> : 如果是正數最高位用0補,如果是負數最高位用1補

>>> (無符號右移) :

 

三元運算子

格式 : (條件表示式)?表示式1 : 表示式2

1.條件表示式的結果只能是boolean型別。如果結果為true返回的結果為表示式1.否則結果為表示式2.

2.三元素運算子可以巢狀使用,但是不建議。

3.表示式1和表示式2的型別要保持一致

    //需求?求三個數中的最大值
		int aa,bb,cc;
		aa = 10;
		bb = 20;
		cc = 30;
	
		int maxNumber = (aa > bb)? aa : bb;
		maxNumber = (maxNumber > cc)? maxNumber : cc;
		System.out.println(maxNumber);

程式碼 :

6數據的交換


public class Demo {         
public static void main(String[] args) {
	
	//方式一 : 
		/*
			優點:容易理解。基本資料型別和引用資料型別都可以採用如下方式
			缺點:多建立一個變數。佔用了記憶體。
		*/
		
		int temp = a;
		a = b;
		b = temp;
		

		//方式二:
		
		/*優點 : 效率高
			缺點 :可能會造成精度損失(溢位),只能用於(基本資料型別)數值
		*/
		
		a = a + b; // a = (a + b)

        b = a - b; // b = (a + b) - b;

		a = a - b; // a = (a + b) - b(a);
		

		//方式三
		a = a ^ b; //a (k) = a ^ b
		b = a ^ b; //  k(a ^ b) ^ b
		a = a ^ b; // k(a ^ b(a)) ^ b
		System.out.println("a=" + a + " b=" + b);
	}

}