一、變量里的數據在計算機中的存儲原理
1.二進制
.二進制:只有0、1,?按照逢二進一的方式表示數據。
十進制數字11轉換為:1011
方法:除二取余法
計算機中表示數據的最小單元,一個字節(Byte,簡稱B,是使用8個二進制位組成的),字節,是8位一組。
字節中的每一個二進制位就稱為位(bit,簡稱b),1B=8b。
2.字符
字符在計算機中的存儲是通過把字符變成編號,把字符編號的二進制保存起來。
ASCII編碼表:即美國信息交換標準碼,規定了現代英語、數字字符、和其他西歐字符對應的數字編號。
package cn.chang.variable;
public class ASCIIDemo1 { public static void main(String[] args) {// 目標:掌握ASCII編碼表的編碼特點System.out.println('a' + 10); // 97 + 10 = 107 System.out.println('A' + 10); // 65 + 10 = 75System.out.println('0' + 10); // 48 + 10 = 58 }}
字符A對應的是65;
字符a對應的是97;
數字0對應的是48;
2.進制轉換
二進制轉十進制:
八進制和十六進制:
為了便于觀察和表示二進制,推出了八進制和十六進制。
97:0110 0001
八進制:二進制每三位一組,就是八進制。?
97,八進制就是141。
000?-> 0
111 ->?7
公共是8個數據。
十六進制:依次用0~9,A、B、C、D、E、F來表示。二進制每四位一組。
250:1111 1010? ?十六進制:FA
注意:
Java程序中支持書寫二進制、八進制和十六進制的數據,分別需要以0B或0b、0、0X或0x開頭。
例:
package cn.chang.variable;
public class ASCIIDemo1 {public static void main(String[] args) { // 目標:掌握ASCII編碼表的編碼特點int a1 = 0B01100001; // 97的二進制System.out.println(a1);int a2 = 0141; // 97的八進制System.out.println(a2);int a3 = 0XFA; // 250的十六進制System.out.println(a3);}}
3.單位
計算機的數據單位:
1)計算機表示數據的最小單位是:字節,1B=8b;
2)在B的基礎上,計算機發展出了KB、MB、GB、TB、……這些數據單位。
1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
二、數據類型
數據類型的分類:基本數據類型和引用數據類型
在Java中,有8種基本數據類型來存儲數值、字符和布爾值。
1.基礎數據類型
4大類:整形、浮點型、字符串、布爾型
注:
1.?long型的取值范圍比int型大,所以在賦值的時候要和int型做區分,需要在整數后面加L或者l。
2.在默認情況下,小數都被看成是double型,若想使用float型聲明小數,則需要在小數后面添加F或f。
2.引用數據類型
String稱之為字符串類型,定義的變量可以用于記住一個字符串數據。
package cn.chang.variable;
public class VariableDemo2 { public static void main(String[] args) {// 目標: 引用數據類型// 5. StringString name = "張三";System.out.println(name);}
}
三、類型轉換
1.自動類型轉換
類型范圍小的變量,可以直接賦值給類型范圍大的變量。
例:byte類型的變量可以直接賦值給int類型的變量
package cn.chang.type;
public class TypeConversionDemo1 {public static void main(String[] args) {// 目標:理解自動類型轉換機制byte a = 12;int b = a; // 發生了自動類型轉換 System.out.println(a); System.out.println(b);}
}
自動類型轉換的其他形式:
2.表達式的自動類型轉換
在表達式中,小范圍類型的變量,會自動轉換成成表達式較大范圍的類型,再參與運算。
注意事項:
表達式的最終結果類型是由表達式中的最高類型決定。
在表達式中,byte、short、char是直接轉換成int類型參與運算的。
package cn.chang.type;
public class TypeConversionDemo2 {public static void main(String[] args) { // 目標:掌握表達式的自動類型轉換機制byte a = 10;int b = 20;long c = 30;long res1 = a + b + c; // 表達式的最高類型是long類型System.out.println(res1);double res2 = a + b + 1.0; // 表達式中的最高類型是double類型System.out.println(res2);byte i = 10;short j = 30;int res3 = i + j; // 表達式中,byte、short、char是直接轉換成int類型參與運算的。 System.out.println(res3);byte ii = 10;byte jj = 80;int res4 = ii + jj; // 表達式中,byte、short、char是直接轉換成int類型參與運算的。 System.out.println(res4);}
}
3.強制類型轉換:
大范圍類型的變量賦值給小范圍類型的變量
package cn.chang.type;
public class TypeConversionDemo3 { public static void main(String[] args) { // 目標:強制類型轉換,顯示轉換int a = 1500;byte b = (byte) a; // Alt + Enter回車鍵 選擇菜單第一項,強制類型轉換 System.out.println(b);}
}
類型范圍大的數據賦值給范圍小的數據,IDEA會出現報錯。
原因:可能會導致精度缺失。
注意事項:
1)強制類型轉換可能造成數據丟失溢出,精度丟失。
2)浮點型轉換成整型,直接丟掉小數部分,保留整數部分返回。
四、運算符
1.基本算術運算符
注:
在Java中,兩個整數相除結果還是整數。
“+”符號與字符串運算的時候是用作連接符的,其結果依然是一個字符串
2.自增自減運算符
注意:
++、-- 只能操作變量、不能操作字面量。
package cn.chang.operator;
public class OperatorDemo2 {public static void main(String[] args) {// 目標:掌握變量自增自減運算符的使用int a = 10;a++; // a = a + 1++a;System.out.println(a);int b = 10;b--; // b = b - 1--b;System.out.println(b);}
}
自增自減的使用注意事項:
++、--如果非單獨使用(如在表達式中,或者同時有其他操作),放在變量前后會存在明顯區別。
1)放在變量前面,先對變量進行+1、-1,再拿變量的值進行運算。
b=++a;? ->?a?= a + 1;?b =a ;
2)放在變量的后面,先對變量的值進行運算,然后再對變量進行+1,-1;
b?= a++; ->?b?= a; a = a + 1;
3.賦值運算符
基礎賦值運算符就是“=”,從右往左看。
int a = 10; // 把數字10賦值給左邊的變量a存儲。
擴展賦值運算符:
4.關系運算符
判斷數據是否滿足條件,最終會返回一個判斷的結果,這個結果是布爾類型的值,true或false。
在Java中,判斷是否相等,一定是“==”,千萬不要把==寫成“=”,寫成“=”,就是賦值了。
5.邏輯運算符
結論:
1)在Java中,“&”,“|”:無論左邊是true或者false,右邊都要執行;
2)由于&&、||運算效率更高,在開發中用的更頻繁
package cn.chang.operator;
public class OperatorDemo5 {public static void main(String[] args) {// 目標:掌握Java邏輯運算符的使用// && int i = 10;int j = 20;System.out.println(i > 100 && ++j > 10); // 短路與,右邊的代碼不執行 System.out.println(j); // 20, 說明++j確實沒有執行System.out.println(i > 100 & ++j > 10); // 單與System.out.println(j); // 21, 說明右邊的代碼執行了}
}
Scanner
API:Application Programming Interface:應用程序編程接口,Java寫好的程序,程序員可以直接拿來調用。
Java為自己寫好的程序提供了相應的 程序使用說明書(API文檔)
使用Scanner接收用戶鍵盤輸入的數據,需要三個步驟:
①:導包:告訴程序去JDK的哪個包中找掃描器技術一
import java.util.Scanner;
②:抄代碼:代表得到鍵盤掃描器對象(東西)。
Scanner sc=new Scanner(System.in);
③:抄代碼:等待接收用戶輸入數據
int age = sc.nextInt()
System.out.println(“年齡是:”+ age);
注意:System、string在]DK中的ava.lang包下lang包不需要我們導包,是默認的包。
package cn.chang.Scanner;
import java.util.Scanner;
public class ScannerDemo1 {public static void main(String[] args) {// 目標:掌握Scanner掃描器的功能Scanner sc = new Scanner(System.in);System.out.println("請輸入您的年齡:");int age = sc.nextInt();System.out.println("請輸入您的姓名:"); String name = sc.next();System.out.println("您的年齡是:" + age + "," + "您的名字是:" + name + "。");}
}
在程序中,直接輸入Scanner,IDEA自動進行導包操作。所以,非常方便。
我們通過的是Scanner類來獲取用戶的輸入的。
導包:Scanner類就是在java.util包下的,所以需要將該包導入。
五、分支和循環
1.分支
if分支有三種形式:
package?cn.chang.branch;
import java.util.Scanner;
public class IfDemo1 {
public static void main(String[] args) {
// 目標:需要同學們掌握If分支的三種形式的用法和執行流程
// 需求:測量用戶體溫、發現體溫高于37度就報警
????????double?t?=?38.9;
if (t > 37) {
System.out.println("這個人溫度異常!");
}
// 需求:發紅包、你的錢包余額是99元,現在要發出90元。
// 如果錢夠,觸發發紅包的動作,如果錢不夠,則提示余額不足:
double money = 99;
if (money >= 90) {
System.out.println("發紅包成功了!");
}else {
System.out.println("余額不足!");
}
// 需求3:某個公司有一個績效系統,根據員工的打分輸出對應的績效級別。
// [0-60] D [60-80] C [80-90] B [90-100] A
Scanner sc = new Scanner(System.in);
System.out.println("請輸入員工積分:");
int score = sc.nextInt();
if (score >= 0 && score < 60) {
System.out.println("D");
}else if(score >= 60 && score < 80) {
System.out.println("C");
}else if(score >= 80 && score < 90) {
System.out.println("B");
}else if(score >= 90 && score <= 100) {
System.out.println("A");
}else {
System.out.println("您輸入的積分有問題!");
}
}
}
Switch分支:
是通過比較值來決定執行哪條分支。
switch分支的執行流程:
1)先執行表達式的值,再拿著這個值去與case后的值進行匹配;
2)與哪個case后面的值匹配值為true,就執行哪個case塊的代碼,遇到break,就跳出switch分支。
3)如果全部case后的值與之匹配都是false,則執行default塊的代碼。
2.循環
for循環:控制一段代碼反復執行多次。
for循環的基本結構:
for 循環案例詳細流程說明:
例子:
1-100的奇數和
package cn.chang.loop;public class ForDemo2 {public static void main(String[] args) {// 定義變量sum用于求和int sum = 0;// for循環for (int i = 1; i <= 100; i += 2) {sum += i; // sum = sum + i}System.out.println("1-100的奇數和: " + sum);}
}