02- java變量與運算符 學習筆記

變量

命名規範

硬性 必須遵守的條件

  • 使用 數字 字母 $ _ 四類組成
  • 數字不能開頭
  • 區分大小寫
  • 不能和關鍵字重名

軟性 可以遵守也可以不遵守,但是最好遵守

  • 望文知義 變量命名 要根據變量所表示的含義來命名
  • 使用駝峯命名法 一個變量有多個單詞組成, 從第二個單詞開始,首字母大寫 dataSource

數據類型

8大 基本數據類型

  • 整數
    • byte (字節 )
    • short (短整數)
    • int (整數)
    • long (長整數)
  • 小數 浮點數
    • float 單精度
    • double 雙精度
  • 非數值
    • char 字符
    • boolean 能夠存儲 真或假 (布爾類型)

二進制

計算機保存 信息 , 智能識別 1 , 0 (表示晶體管 開或關)

一組0或者 1 組成的的數字 就是二進制

對比 10進制 0 -9

通過進行二進制運算

1 2^0 1
2 2^1 10
4 2^2 100
8 2^3 1000

111011 換算成10進制 (32+ 16 + 8 + 2 +1) = 59

43 換算成 2 進制 101011

位 一個二進制 就是一個位 只能表示 0 或 1

一個 字節 等於 8 個位 , 字節是計算機存儲數據的最小單位

一個字節 8 個位 能夠保存的最大數據? (第一位可以描述爲符號位, 不參與數值計算)

byte 一個字節 1(符號位) 1111111 最大表示 127 最小 -128

short 兩個字節 (符號位) 15位 數字位 -2^15 到 +2^15-1 (-32768到+32767)

int 四個字節 (符號位) 31位 數字位 -2^31 到 + 2^31-1

賦值案例

int a = 10; 描述爲 系統先創建10 , 然後 把10 賦值給創建好得 a 變量

float f = 3.14; ( 報錯 原因) 系統先創建 3.14 賦值給 float 類型的 f

= 賦值號 從右向左給變量賦值 系統先創建的是 3.14 ,

細節 : 系統默認創建整數 是使用int

​ 系統默認創建小數, 使用double

float g = 1.2F;   // 系統創建默認類型的時候 使用float 來創建1.2
long m = 100L;
double n = 3.14D;

常量

final 修飾 一旦被賦值 不能被改變

變量命名規範

  • 全大寫

  • 多個單詞使用 下劃線連接

鍵盤錄入

java 給我們提供了一個 工具 Scanner , 工具具有接收用戶鍵盤錄入數據的功能

請一個人來幫忙

​ 1, 找到這個人所屬的公司

​ 2, 公司 派遣 該員工 過來幫忙

​ 3, 該員工需要使用自己的專業技能來服務

Scanner

  • 導入Scanner類 import java.util.Scanner;
  • 創建該類對象 Scanner input = new Scanner(System.in);
  • 調用該類的方法 input.nextInt();
package data0626;
import java.util.Scanner;

public class Demo2 {
    public static void main(String [] args){
        
        // 使用 Scanner
       Scanner input = new Scanner(System.in);
       System.out.println("請輸入第一個數據:");
       int num1 = input.nextInt();  // 接收用戶鍵盤錄入的一個數字

	   System.out.println("請輸入第二個數據:");
	   int num2 = input.nextInt();  // 接收用戶鍵盤錄入的一個數字


// 執行打印結果
System.out.println(num1 +"+"+ num2 +"="+ (num1 + num2));

        // num1 + num2 = (num1 + num2)
    }
}

類型轉換

自動類型轉換

自動類型提升

  • 數據兼容性
  • 從小容器 轉向大容器 可以實現自動類型提升

強制類型轉換

從大容器 轉向小容器 有可能產生數據溢出

我們程序員能夠確認 數據轉存沒有問題(一定不會發生數據溢出) 強制轉換類型

語法格式

小類型 = (小類型)大類型;

細節問題

  • 小數轉整數 , 捨去小數位
  • 兩個 int 類型的數據 做運算 結果還是 int
  • 兩個int 類型的數據, 做運算, 如果超出int的數據範圍 結果也是似是而非的

運算符

賦值號 = 從右向左運算

交換兩個數值

算術運算符

  • 加減乘除
  • 取餘 (取模) %
  • += -= /= %=
  • ++ – (自增/自減)
b = b + 1;
b += 1;
b++;
// ++a 在前 先運算 後賦值
// a++ 在後 先賦值 後運算
b = ++a;
	a = a + 1;
	b = a;
b = a++;
	b = a;
	a = a + 1;
  • 案例

使用鍵盤錄入 四位數 使用 / 和 % 分別獲取每個位上的數字, 求和

Scanner input = new Scanner(System.in);
System.out.println("請輸入 4 位會員編號:");
int no = input.nextInt();   //  9527
// 把 四位數 分解成 9527 / 952 / 95 / 9
int ge = no % 10;
int shi = no/10 % 10;
int bai = no/100 % 10;
int qian = no/1000;
System.out.println(ge + shi + bai + qian);

關係運算符 (比較)

  • ==
  • !=
  • < > <= >=

只支持數值 判斷

邏輯運算符

& (與and)  	兩個條件同時滿足 纔是正確的
| (或)		兩個條件滿足任意一個 就是正確的
! (非)		取反 
^ (異或)     兩個一樣 是不正確的  (兩個不一樣則正確)
&& 	短路與		
  如果說根據第一個條件就能夠判斷出來 整體的結果 , 可以不進行下一步判斷
||  短路或		
驗證 短路運算
int a = 1;
if(false & a++ >0){
System.out.println("success");
}else{
System.out.println("fail");
}
System.out.println(a);

位運算符

& 按位與
| 按位或
^ 按位異或
~ 按位取反
<< 左移
>> 右移
>>> 無符號右移
<<1  原數* 2
>>1  原數/2
位運算  是 做*2 /2 最有效率的運算

條件運算符

三元運算符 / 三目運算符

運算符
單目運算符/ 一元運算符 運算所需變量爲一個 / 運算當中只有一個操作數 a++ / !boolean
雙目運算符 運算所需變量爲兩個的運算符叫做雙目運算符
三目運算符 運算所需變量爲三個的運算符

語法格式

條件 ? 表達式1 : 表達式2 // 如果條件滿足 選擇1 否則選擇2

  • 案例
// 輸入一個學生的成績, 如果成績高於 60 分 ,打印及格,否則,打印不及格
 String result;
 result = score >= 60 ? "及格" : "不及格";
 
// 輸入兩個數 , 輸出其中的最大值
int no3 = no1 > no2 ? no1 : no2;
/* if(no1 > no2){
// 如果條件滿足 說明 no1 是最大值
	no3 = no1;
}else{
	no3 = no2;
}*/
// 使用三元表達式做題  使用鍵盤;錄入三個數  輸出最大值
// 三個人 比賽, 決出勝負 A B C
int max ;  // 最大值 放在 max 中
max = no1 > no2 ? no1 : no2;
max = max > no3 ? max : no3;

優先級問題

  1. () 優先級最高 = 賦值號優先級最低
  2. 單目運算符 優先級僅小於括號 (! ~ ++ --)
  3. 算術運算符 > 關係運算符 > 邏輯運算符

優先級問題

案例

題目1

工資 = 基本工資 + 物價津貼 + 房租津貼
int baseSalary ;
int money1 = baseSalary * 0.4;
int money2 = baseSalary * 0.25;

問題舉例

八大基本數據類型

int 類型 佔幾個字節

== 和 = 的區別

&& 和 & 的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章