文章目錄
變量
命名規範
硬性 必須遵守的條件
- 使用 數字 字母 $ _ 四類組成
- 數字不能開頭
- 區分大小寫
- 不能和關鍵字重名
軟性 可以遵守也可以不遵守,但是最好遵守
- 望文知義 變量命名 要根據變量所表示的含義來命名
- 使用駝峯命名法 一個變量有多個單詞組成, 從第二個單詞開始,首字母大寫 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
工資 = 基本工資 + 物價津貼 + 房租津貼
int baseSalary ;
int money1 = baseSalary * 0.4;
int money2 = baseSalary * 0.25;