變數 變數介紹 為什麼需要變數 變數是程式的基本組成單位 不論是使用哪種高級程式語言編寫程式,變數都是其程式的基本組成單位,比如: //變數有三個基本要素(類型+名稱+值) class Test{ public static void main(String []args){ int a=1;//定 ...
變數
變數介紹
為什麼需要變數
- 變數是程式的基本組成單位
不論是使用哪種高級程式語言編寫程式,變數都是其程式的基本組成單位,比如:
//變數有三個基本要素(類型+名稱+值)
class Test{
public static void main(String []args){
int a=1;//定義了一個變數,類型int整型,名稱a,值1
int b=3;//定義了一個變數,類型int整型,名稱b,值3
b=89;//把89值賦給b變數
System.out.println(a);//輸出a變數的值
System.out.println(b);//輸出b變數的值
}
}
變(變化)量(值)的介紹
概念
變數相當於記憶體中一個數據存儲空間的表示,你可以把變數看做是一個房間的門牌號,通過門牌號我們可以找到房間,而通過變數名可以訪問到變數(值)。
●變數使用的基本步驟
- 聲明變數
int a; - 賦值
a = 60;//應該這麼說:把60賦給a - 使用 System.out.println(a);
//也可以一步到位[int a = 60;通常我們是一步完成]
變數快速入門
變數使用入門案例
看演示並對代碼進行說明,演示記錄人的信息的代碼
public class Var02{
//編寫一個main方法
public static void main(string[] args) {
//記錄人的信息
int age = 30;
double score = 88.9;
char gender =‘男';
string name = "king";//輸出信息,快捷鍵
System.out. println(”人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}
變數使用註意事項
- 變數表示記憶體中的一個存儲區域[不同的變數,類型不同,占用的空間大小不同,比如:int 4個位元組,double就是8個位元組]
- 該區域有自己的名稱[變數名]和類型[數據類型]
- 變數必須先聲明,後使用,即有順序
- 該區域的數據可以在同一類型範圍內不斷變化
- 變數在同一個作用域內不能重名
- 變數=變數名+值+數據類型,這一點請註意。變數三要素
+號的使用
-
當左右兩邊都是數值型時,則做加法運算
-
當左右兩邊有一方為字元串,則做拼接運算
-
運算順序從左到右
-
測試題1min
下麵代碼輸出什麼?
System.out.println(100 + 98);
System.out.println("100" + 98);System.out.println(100+3 +"hello");
System.out.println("hello" +100 +3);答案:
198
10098
103hello
hello1003
數據類型
每一種數據都定義了明確的數據類型,在記憶體中分配了不同大小的記憶體空間(位元組)。
(boolean 值只有 true 和 false 兩種,這個數據類型只代表 1 bit 的信息,但是它的“大小”沒有嚴格的定義。也就是說,不管它占多大的空間,只有一個bit的信息是有意義的。)(在 Oracle 的 Java 虛擬機實現中,Java 語言中的 boolean 數組被編碼成 Java 虛擬機的 byte 數組,每個元素占 8 比特。參考:https://binkery.com/archives/346.html)
整數類型
整型的類型
類型 | 占用存儲空間 | 範圍 |
---|---|---|
byte[位元組] | 1位元組 | -128 ~127 為啥存放的範圍是這個=>二進位(二進位我們詳解) |
short[短整型] | 2位元組 | -(215)~215-1 -32768~32767 |
int[整型] | 4字 | -231 ~ 231-1 -2147483648 - 2147483647 |
long[長整型] | 8位元組 | -263 ~ 263-1 |
整型的使用細節
-
Java各整數類型有固定的範圍和欄位長度,不受具體OS[操作系統]的影響,以保證java程式的可移植性。
-
Java的整型常量(具體值)預設為int型,聲明long型常量須後加‘l’或'L'
-
java程式中變數常聲明為int型,除非不足以表示大數,才使用long
-
bit:電腦中的最小存儲單位。 byte:電腦中基本存儲單元, 1byte = 8 bit
[二進位再詳細說,簡單舉例一個byte 3和short 3]
思考題:long類型,有幾個 bit
[8*8=64 bit]
long n = 3;//記憶體中
浮點類型
-
基本介紹
Java的浮點類型可以表示一個小數,比如123.4,7.8,0.12等等
浮點型的分類
類型 | 占用存儲空間 | 範圍 |
---|---|---|
單精度float | 4位元組 | -3.403E38~3.403E38 |
雙精度double | 8位元組 | -1.798E308 ~ 1.798E308 |
-
說明一下
1.關於浮點數在機器中存放形式的簡單說明,浮點數=符號位+指數位+尾數位2.尾數部分可能丟失,造成精度損失(小數都是近似值)。
浮點型使用細節
-
與整數類型類似,Java浮點類型也有固定的範圍和欄位長麾,不受具體OS的影響。[float 4個位元組 double是8個位元組]
-
Java的浮點型常量預設為double型,聲明float型常量,須後加f或‘F’
-
浮點型常量有兩種表示形式
十進位數形式:如:5.12 512.0f .512(必須有小數點)
科學計數法形式:如:5.12e2[5.12*102] 5.12E-2 [5.12*10-2]
-
通常情況下,應該使用double型,因為它比float型更精確。[舉例說明]
double num9 =2.1234567851;
float num10 = 2.1234567851F; -
浮點數使用陷阱:2.7和8.1/3比較(浮點數做除法結果為近似值)(實際開發中當它們的差值的絕對值很小時視為相等)
if(Math.abs(num1 - num2)<0.000001){ System.out.println("差值非常小,到我的規定精度,認為相等..."); }
Java API文檔
-
API (Application Programming Interface,應用程式編程介面)是Java提供的基本編程介面(java提供的類還有相關的方法)。中文線上文檔:https://www.matools.com
-
Java語言提供了大量的基礎類,因此 Oracle公司也為這些基礎類提供了相應的API文檔,用於告訴開發者如何使用這些類,以及這些類里包含的方法。
-
Java類的組織形式 [圖]
-
舉例說明如何使用
按:包->類->方法
直接搜索。(Math)
字元類型(char)
基本介紹
字元類型可以表示單個字元,字元類型是char, char是兩個位元組(可以存放漢字),多個字元我們用字元串String(我們後面詳細講解String)
案例演示
//演示char的基本使用
public class Chare1 {
//編寫一個main方法
public static void main(String[] args){
char c1 = 'a';
char c2 = '\t';
char c3 = '韓';
char c4 = 97;//說明:字元類型可以直接存放一個數字
System.out.println(c1);//a
System.out.println(c2);//
System.out.println(c3);//韓
System.out.println(c4);//a
}
}
代碼
char c1 = 'a';
char c2 ='\t';
char c3='韓';
char c4 =97:
字元類型使用細節
-
字元常量是用單引號( ‘ ’ )括起來的單個字元。例如:char c1 = 'a'; char c2 ='中‘; char c3 ='9';(不能使用雙引號,會報錯)
-
Java中還允許使用轉義字元'\'來將其後的字元轉變為特殊字元型常量。例如:char c3 = n'; 'n'表示換行符
-
在java中,char的本質是一個整數,在輸出時,是unicode碼對應的字元。
http://tool.chinaz.com/Tools/Unicode.aspx -
可以直接給char賦一個整數,然後輸出時,會按照對應的unicode字元輸出[97]
-
char類型是可以進行運算的,相當於一個整數,因為它都對應有Unicode碼.
public class CharDetail{
//編寫一個main方法
public static void main(String[] args) {
//在java中,char的本質是一個整數,在輸出時,是unicode碼對應的字元char c1 = 97;
System.out.println(c1); // a
char c2 = 'a';//輸出'a’對應的數字
System.out.println((int)c2);//92
char c4 = 38889;
System.out.println(c4);//韓
//char類型是可以進行運算的,相當於一個整數,因為它都對應有Unicode
System.out.println('a' + 10);//97+10=107
//課堂小測試
char c5 = 'b’ + 1;//98+1==> 99
System.out.println((int)c5);//99
System.out.println(c5);//99->對應的字元->編碼表
}
}
字元類型本質探討
- 字元型存儲到電腦中,需要將字元對應的碼值(整數)找出來,比如'a'
存儲:'a' ==> 碼值97 ==> 二進位 ==> 存儲
讀取:二進位 ==> 97 ==> 'a' ==> 顯示 - 字元和碼值的對應關係是通過字元編碼表決定的(是規定好)
介紹一下字元編碼表
ASCIl(ASCII編碼表一個位元組表示,一個128個字元)(http://c.biancheng.net/c/ascii/)
Unicode (Unicode編碼表固定大小的編碼使用兩個位元組來表示字元,字母和漢字統一都是占用兩個位元組,這樣浪費空間)
utf-8(編碼表,大小可變的編碼。其中字母使用1個位元組,漢字使用3個位元組)
gbk(可以表示漢字,而且範圍廣,字母使用1個位元組,漢字2個位元組)
gb2312(可以表示漢字,gb2312<gbk)
big5碼(繁體中文,臺灣,香港)
布爾類型:boolean
基本介紹
-
布爾類型也叫boolean類型,booolean類型數據只允許取值true和false,無null
-
boolean類型占1個位元組。
-
boolean類型適於邏輯運算,一般用於程式流程式控制制[這個後面會詳細介紹]:
if條件控制語句;
while迴圈控制語句;do-while迴圈控制語句;
for迴圈控制語句
案例演示
boolean pass = true;
if (pass){
System.out.print1n("通過考試");
}else{
System.out.print1n("沒有通過考試~");
}
基本數據類型轉換
自動類型轉換
介紹
當java程式在進行賦值或者運算時,精度小的類型自動轉換為精度大的數據類型,這個就是自動類型轉換。
數據類型按精度(容量)大小排序為(背,規則)
看一個基本案例
int a = 'c";
double d = 80;
自動類型轉換註意和細節
- 有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然後再進行計算。
- 當我們把精度(容量)大的數據類型賦值給精度(容量)小的數據類型時,就會報錯,反之就會進行自動類型轉換。
- (byte, short)和char之間不會相互自動轉換。
- byte,short,char他們三者可以計算,在計算時首先轉換為int類型。
- boolean不參與轉換
- 自動提升原則:表達式結果的類型自動提升為操作數中最大的類型
byte b2 = 1;
byte b3 = 2;short s1 = 1;
//short s2 = b2 + s1;//錯,b2 + s1 => int
int s2 = b2 + s1;//錯,b2 + s1 => int
byte b4 = b2 + b3;//b2 + b3 => int
強制類型轉換
介紹
自動類型轉換的逆過程,將容量大的數據類型轉換為容量小的數據類型。使用時要加上強制轉換符(),但可能造成精度降低或溢出,格外要註意。
案例演示
int i = (int)1.9;
System.out.println(i);//造成精度損失
int j =100;
byte b1 = (byte)j;
System.out.print1n(b1);//數據溢出
強制類型轉換細節說明
-
當進行數據的大小從大——>小,就需要使用到強制轉換
-
強轉符號只針對於最近的操作數有效,往往會使用小括弧提升優先順序
//int x =(int)10*3.5+6*1.5; int y = (int)(10*3.5+6*1.5); System.out.println(y);
-
char類型可以保存int的常量值,但不能保存int的變數值,需要強轉
char c1 = 100;//v int m = 100;//v char c2 = m;//x char c3= (char)m;//v System.out.println(c3);//100對應的字元
-
byte和short類型在進行運算時,當做int類型處理。
基本數據類型轉換-練習題
判斷是否能夠通過編譯
//1
short s= 12;
s= s-9;
x
//2
byte b = 10;
b =b +11;
b =(byte)(b+11);
//3
char c = 'a';
int i= 16;
float d = .314F;
double result =c+i+d;
//4
byte b = 16;
short s=14;
short t =s + b;
答案:
----------------------------------------
1.錯
2.錯
3.對
4.錯
基本數據類型和String類型的轉換
介紹
在程式開發中,我們經常需要將基本數據類型轉成String類型。或者將String類型轉成基本數據類型。
-
基本類型轉String類型
語法:將基本類型的值+""即可
int n1 = 100;
fLoat f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 +"";
String s2 = f1 +"";
String s3 = d1 +";
String s4 = b1 +"":
System.out.print1n(s1 + " " + s2 + " " +s3 + "" + s4);
-
String類型轉基本數據類型
語法:通過基本類型的包裝類調用parseXX方法即可
//String->對應的基本數據類型
String s5 = "123";
//會在0OP講對象和方法的時候回詳細
int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5);
booLean b = BooLean.parseBoolean("true");
short num6 = Short.parseShort(s5);
System.out.println(num1);//123
System.out.println(num2);//123.0
Sytem.out.println(num3);//123.0
System.out.println(num4);//123
System.out.println(num5);//123
System.out.println(num6);//123
System.out.println(b);//true
//怎麼把字元串轉成字元char ->含義是指把字元串的第一個字元得到
//解讀s5.charAt(0)得到s5字元串的第一個字元'1'
System.out.println(s5.charAt(0));
註意事項
- 在將String類型轉成基本數據類型時,要確保String類型能夠轉成有效的數據,比如我們可以把"123",轉成一個整數,但是不能把"hello"轉成一個整數。
- 如果格式不正確,就會拋出異常,程式就會終止,這個問題在異常處理章節中,會處理
本章練習
-
程式閱讀題,看看輸出什麼?
public class Homework01 { public static void main(String]args){ int n1; n1 = 13; int n2; n2 = 17; int n3; n3 = n1 +n2; System.out.println("n3 = " + n3); int n4 = 38; int n5 = n4 - n3; System.out.println("n5 = " + n5); } } /* n3 = 30 n5 = 8 */
-
使用char類型,分別保存\n \t \r \\ 1 2 3等字元,並列印輸出
public class Homework02 { //編寫一個main方法 public static void main(String[] args) { //使用char類型,分別保存\n \t \r\ \1 23等字元,並列印輸出 char c1 = '\n';//換行 char c2 = '\t';//製表位ctrl +d char c3 = '\r ';//回車 char c4 = '\r';//輸出\ char c5 = '1';//換行 char c6 = '2 ';//換行 char c7 = '3';//換行 System.out.println(c1); System.out.println(c2); System.out.println(c3); System.out.println(c4); System.out.println(c5); System.out.println(c6); System.out.println(c7); } }
-
編程,保存兩本書名,用+拼接,看效果。保存兩個性別,用加號拼接,看效果。保存兩本書價格,用加號拼接,看效果。
public class HomeworkO3 {i //編寫一個main方法 public static void main(String[] args) { //編程,保存兩本書名,用+拼接,看效果。保存兩個性別,//用加號拼接,看效果。保存兩本書價格,用加號拼接,看效果 String book1 ="天龍八部"; String book2 ="笑傲江湖"; System.out.println(book1 + book2);//天龍八部笑傲江湖 //性別應該使用char保存 char c1 =‘男'; char c2 =‘女; System.out.println(c1 + c2);//得到男字元碼值+女字元碼值 //保存兩本書價格 double price1 = 123.56; double price2 = 100.11; System.out.println(price1 + price2);//就是123.56+100.11 } }
-
編程實現如下效果:
年齡 成績 性別 愛好
XX XX XXX XXX
要求:
1)用變數將姓名、年齡、成績、性別、愛好存儲2)使用+
3)添加適當的註釋
4)添加轉義字元,使用一條語句輸出public class HomeworkO4 {i //編寫一個main方法 public static void main(String[] args) { String name = "jack"; int age = 20; double score = 80.9; char gender ='男'; String hobby ="打籃球";//輸出了信息,可以使用換行 System.out.println("姓名\t年齡\t成績\t性別t愛好\n" + name + "\t" + age + “\t" + score + "\t" + gender + "\t" + hobby); } }