------- android培訓、java培訓、期待與您交流! ----------
03.01 數據類型中補充的幾個小問題
1:在定義Long或者Float類型變量的時候,要加L或者f。
整數默認是int類型,浮點數默認是double。
byte,short在定義的時候,他們接收的其實是一個int類型的值。
2:數據類型轉換之默認轉換:byte,short,char→int→long→float→double
為什么占用8個字節的long默認轉換為4個字節的float?
A:它們底層的存儲結構不同。
B:float表示的數據范圍比long的范圍要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
3:Java語言中的字符char可以存儲一個中文漢字嗎?為什么呢?
可以。因為java語言中的字符占用兩個字節。Java語言采用的是Unicode編碼。
03.02 算術運算符的基本用法
運算符:對常量和變量進行操作的符號稱為運算符
運算符分為:算術運算符、賦值運算符、比較運算符、邏輯運算符、位運算符、三目運算符6種
算術運算符:+(加)、-(減)、*(乘)、/(除)、%(取余或取模,兩個數相除的余數)、+(連接符)、++(自增)、--(自減)
例:
1 int x = 3;2 int y = 4;3 System.out.PRintln(x + y); //74 System.out.println(x - y); //-15 System.out.println(x * y); //126 System.out.println(x / y); //0,/獲取的是除法操作的商7 System.out.println(x % y); //3,%獲取的是除法操作的余數
注意:整數相除只能得到整數,如果想得到小數,只需把操作的數據中的任意的一個數據變為浮點數即可
如:System.out.println(x * 1.0 / y); //0.75
03.03 算術運算符++和--的用法
例1:單獨使用時
1 int x = 3;2 int y = 4;3 System.out.println("x="+x+",y="+y); //x=3,y=44 x++;5 --y;6 System.out.println("x="+x+",y="+y); //x=4,y=3單獨使用時放在操作數據的前面和后面效果一樣。也就是a++或者++a效果一樣。
例2:參與操作時
1 int x = 3;2 int y = 4;3 int a = x++;4 int b = --y;5 System.out.println("x="+x+",y="+y); //x=4,y=36 System.out.println("a="+a+",b="+b); //a=3,b=3參與操作時放在操作數的前面:先自增或者自減,再參與操作
放在操作數的后面:先參與操作,再自增或者自減
例3:特殊情況
1 int i = 3;2 i = i++;3 System.out.println("i="+i); //i=3i=i++,先進行i++運算,此時虛擬機會開辟新的空間臨時存儲i的值,然后進行i++的運算,將運算結果4賦給i,i=4,此時i++運算完成,然后將臨時存儲的i的值又賦給i,i=3
03.04 算術運算符++和--的練習
1.計算a、b、c的值
1 int a = 10; 2 int b = 10; 3 int c = 10; 4 a = b++; 5 c = --a; 6 b = ++a; 7 a = c--; 8 System.out.println("a="+a); //a=9 9 System.out.println("b="+b); //b=1010 System.out.println("c="+c); //c=82.計算x、y的值
1 int x = 4;2 int y = (x++)+(++x)+(x*10); //4+6+603 System.out.println("x="+x); //x=64 System.out.println("y="+y); //y=7003.05 算術運算符+的多種用法
+的用法:加法、正號、字符串連接符
例:
1 System.out.println(3 + 4); //加法,72 System.out.println(+5); //正號,53 System.out.println("hello"+'a'+1); //字符串連接符,helloa103.06 賦值運算符的基本用法
基本的賦值運算符[=(賦值)]
擴展的賦值運算符[+=(左加)、-=(左減)、*=(左乘)、/=(左除)、%=(左取模)]
例:
1 int y = 10;2 y += 20; //相當于y = y + 20;3 System.out.println("y="+y); //y=3003.07 賦值運算符的面試題
面試題:
short s = 1,s = s+1;
short s = 1,s += 1;
兩句代碼是否有問題?
short s = 1,s = s+1;有問題,s+1的結果為int型,不能賦值給short 型的s
short s = 1,s += 1;沒有問題,s += 1隱含了一個強制類型轉換,相當于 s = (short)(s+1);擴展的賦值運算符都有這個特點
03.08 比較運算符的基本用法及其注意事項
比較運算符:==(相等)、!=(不等)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)
注意:
1.比較運算符運算完的結果必須是true或false
2.比較運算符"=="不能寫成"="
03.09 邏輯運算符的基本用法
邏輯運算符:&(與)、|(或)、^(異或)、!(非)、&&(雙與)、||(雙或)
邏輯運算符用于連接兩個boolean類型的表達式
&(與)符號的運算規律:&運算的兩邊有一個是false結果就是false,只有兩邊都為true,結果才為true
|(或)符號的運算規律:|運算的兩邊有一個是true結果就是true,只有兩邊都為false,結果才為false
^(異或)符號的運算規律:|運算的兩邊結果相同,結果為false,兩邊結果不同,結果為true
!(非)符號的運算規律:判斷事物的另一面,例:!true=false !false=true
03.10 邏輯運算符&&和&的區別
&&(雙與)符號的運算規律:與&(與)符號的運算規律相同
||(雙或)符號的運算規律:與|(或)符號的運算規律相同
&(單與)與&&(雙與)的區別:
&(單與),不管運算的左邊的結果為true或false,都會運算右邊的表達式的結果
&&(雙與),當運算符左邊的結果為false時,不會運算右邊表達式的值,因為最終結果為false
|(單或)與||(雙或)的區別:
|(單或),不管運算的左邊的結果為true或false,都會運算右邊的表達式的結果
||(雙或),當運算符左邊的結果為true時,不會運算右邊表達式的值,因為最終結果為true
03.11 位運算符的基本用法1
位運算符:&(與運算)、|(或運算)、^(異或運算)、~(反碼)
位運算是直接對二進制進行運算
例:

03.12 位異或運算符的特點
特點:一個數異或同一個數兩次,結果還是這個數
03.13 位運算的面試題
不使用第三方變量實現兩個整數的互換
方式1
a = a ^ b;
b = a ^ b; // b = a ^ b ^ b = a;
a = a ^ b; // a = a ^ b ^ a = b;
方式2
a = a + b;
b = a - b; // b = a + b - b = a;
a = a - b; // a = a + b - a = b;
方式3
b = (a + b) - (a = b);
03.14 位運算符的基本用法2及面試題
位運算符:<<(左移)、>>(右移)、>>>(無符號右移)
<<(左移):符號位不變,低位補零,每左移一位相當于乘以2
>>(右移):低位溢出,符號位不變,并用符號位補溢出的高位,每右移一位相當于除以2
>>>(無符號右移):低位溢出,高位補零
例:

面試題:用最有效率的方式計算2乘以8的結果
2<<3
03.15 三元運算符的基本用法
格式:(條件表達式)?表達式1:表達式2;
解釋:條件表達式的結果為true,運算的結果是表達式1的值
條件表達式的結果為false,運算的結果是表達式2的值
例:
1 int x = 0,y;2 y = (x > 1)?100:200;3 System.out.println("y="+y); //y=20003.16 三元運算符的練習
1.獲取兩個數中的最大值
1 int x = 100;2 int y = 200;3 int max =(x > y)?x:y;4 System.out.println("max="+max); //max=2002.獲取三個數中的最大值
1 int x = 100;2 int y = 300;3 int z = 200;4 int temp = (x > y)? x : y;5 int max =(temp > z)?temp : z;6 System.out.println("max="+max); //max=30003.17 鍵盤錄入的基本格式講解
鍵盤錄入數據概述:我們目前在寫程序的時候,數據值都是固定的,但是實際開發中,數據值肯定是變化的,所以,準備把數據改進為鍵盤錄入,提高程序的靈活性。
鍵盤錄入數據的步驟:
1.導包:(位置放到class定義的上面)import java.util.Scanner;
2.創建對象:Scanner sc = new Scanner(System.in);
3.接收數據:int x = sc.nextInt();
03.18 鍵盤錄入的練習1
1.鍵盤錄入兩個數據,求和
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 Scanner sc = new Scanner(System.in); 7 System.out.println("請輸入第1個數:"); 8 int x = sc.nextInt(); 9 System.out.println("請輸入第2個數:");10 int y = sc.nextInt();11 System.out.println(x+"+"+y+"="+(x + y));12 }13 }運行結果:
請輸入第1個數:23請輸入第2個數:4523+45=68
2.鍵盤錄入兩個數據,求最大值
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 Scanner sc = new Scanner(System.in); 7 System.out.println("請輸入第1個數:"); 8 int x = sc.nextInt(); 9 System.out.println("請輸入第2個數:");10 int y = sc.nextInt();11 int max = (x > y) ? x : y;12 System.out.println("最大數是:"+max);13 }14 }運行結果:
請輸入第1個數:45請輸入第2個數:32最大數是:45
03.19 鍵盤錄入的練習2
鍵盤錄入三個數據,求最大值
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 Scanner sc = new Scanner(System.in); 7 System.out.println("請輸入第1個數:"); 8 int x = sc.nextInt(); 9 System.out.println("請輸入第2個數:");10 int y = sc.nextInt();11 System.out.println("請輸入第3個數:");12 int z = sc.nextInt();13 int temp = (x > y) ? x : y;14 int max = (temp > z) ? temp : z;15 System.out.println("最大數是:"+max);16 }17 }運行結果:
請輸入第1個數:34請輸入第2個數:6請輸入第3個數:4最大數是:34
03.20 順序結構語句
流程控制語句分類:順序結構、選擇結構、循環結構
順序結構概述:是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先后順序,依次執行,程序中大多數的代碼都是這樣執行的。
總的來說:寫在前面的先執行,寫在后面的后執行
流程圖:

03.21 選擇結構if語句格式1
選擇結構也被稱為分支結構。
選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼。
Java語言提供了兩種選擇結構語句
if語句和switch語句
if語句第1種格式:
if(關系表達式)
{
語句體;
}
執行流程:首先判斷關系表達式看其結果是true還是false,如果是true就執行語句體,如果是false就不執行語句體
流程圖:

例:
1 int x = 3;2 if(x > 1)3 {4 System.out.println("yes");5 }6 System.out.println("over");03.22 選擇結構if語句注意事項
注意事項:
1.關系表達式無論簡單還是復雜,結果必須是boolean類型
2.當if控制的語句是單條語句時,if的控制范圍{ }可以省略,當if的{ }省略時,if只能控制離他最近的單條語句
當if控制的語句不是單條語句時,if的{ }不能省略。建議永遠不要省略。
3.如果在if(條件表達式)后加了;表示沒有執行語句的判斷結構,if不會控制下面的語句,無論if的條件是true還是false,下面的語句都會執行
03.23 選擇結構if語句格式2
if語句第1種格式:
if(關系表達式)
{
語句體1;
}
else
{
語句體2;
}
執行流程:首先判斷關系表達式看其結果是true還是false,如果是true就執行語句體1,如果是false就執行語句體2
流程圖:

例:
1 int a = 3,b; 2 if(a > 1) 3 { 4 b = 100; 5 } 6 else 7 { 8 b = 200; 9 }10 System.out.println("b="+b); //b=10003.24 選擇結構if語句格式2的練習
判斷一個數是奇數還是偶數
1 int a = 23;2 if(a % 2 == 0)3 {4 System.out.println(a+"是偶數");5 }6 else7 {8 System.out.println(a+"是奇數");9 }運行結果:23是奇數
03.25 if語句的格式2和三元的相互轉換問題
三元運算符其實就是if else的簡寫格式,if else 是通用格式
當if else運算后有一個具體的結果時,可以簡化寫成三元運算符
當if else語句控制的語句體是一條輸出語句的時候,就不能寫成三元運算符。因為三元運算符是一個運算符,必須要求有一個結果返回。而輸出語句卻不能作為一個返回結果。
03.26 選擇結構if語句格式3
if語句第3種格式:
if(關系表達式1)
{
語句體1;
}
else if(關系表達式2)
{
語句體2;
}
......
else
{
語句體n+1;
}
執行流程
首先判斷關系表達式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關系表達式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關系表達式...看其結果是true還是false
...
如果沒有任何關系表達式為true,就執行語句體n+1。
流程圖:

例:
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 Scanner sc = new Scanner(System.in); 7 System.out.println("請輸入一個成績:"); 8 int score = sc.nextInt(); 9 if(score < 0 || score > 100)10 {11 System.out.println("數據錯誤");12 }13 else if(score >= 90)14 {15 System.out.println(score+"對應等級A");16 }17 else if(score >= 80)18 {19 System.out.println(score+"對應等級B");20 }21 else if(score >= 70)22 {23 System.out.println(score+"對應等級C");24 }25 else if(score >= 60)26 {27 System.out.println(score+"對應等級D");28 }29 else30 {31 System.out.println(score+"對應等級E");32 }33 }34 }03.27 選擇結構if語句格式3的練習
鍵盤錄入x的值,計算出y的并輸出
x和y的關系滿足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1 y = 2x - 1;
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 int y = 0; 7 Scanner sc = new Scanner(System.in); 8 System.out.println("請輸入一個數:"); 9 int x = sc.nextInt();10 if(x >= 3)11 {12 y = 2 * x + 1;13 System.out.println("y=2*"+x+"+1="+y);14 }15 else if(x >= -1 && x < 3)16 {17 y = 2 * x;18 System.out.println("y=2*"+x+"="+y);19 }20 else21 {22 y = 2 * x - 1;23 System.out.println("y=2*"+x+"-1="+y);24 }25 }26 }03.28 選擇結構if語句格式3的練習
鍵盤錄入月份的值,輸出對應的季節
春(3,4,5)、夏(6,7,8)、秋(9,10,11)、冬(12,1,2)
1 import java.util.Scanner; 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 Scanner sc = new Scanner(System.in); 7 System.out.println("請輸入一個月份:"); 8 int month = sc.nextInt(); 9 if(month > 12 || month < 1)10 {11 System.out.println("輸入的月份有誤");12 }13 else if(month >= 3 && month <= 5)14 {15 System.out.println(month+"月對應春季");16 }17 else if(month >= 6 && month <= 8)18 {19 System.out.println(month+"月對應夏季");20 }21 else if(month >= 9 && month <= 11)22 {23 System.out.println(month+"月對應秋季");24 }25 else26 {27 System.out.println(month+"月對應冬季");28 }29 }30 }if語句的使用場景:
1.針對表達式是一個boolean類型的判斷
2.針對一個范圍的判斷
03.29 選擇結構if語句的嵌套使用
例:
1 int a = 10; 2 int b = 30; 3 int c = 20; 4 int max; 5 if(a > b) 6 { 7 if(a > c) 8 { 9 max = a;10 }11 else12 {13 max = c;14 }15 }16 else17 {18 if(b > c)19 {20 max = b;21 }22 else23 {24 max = c;25 }26 }27 System.out.println("max:"+max);新聞熱點
疑難解答