java從入門到精通-day02、數(shù)據(jù)類型轉(zhuǎn)換&運算符&邏輯控制語句

day02

一.數(shù)據(jù)類型轉(zhuǎn)換

按照取值范圍從小到大排列:byte,short,char-->int-->long-->float-->double

數(shù)據(jù)類型轉(zhuǎn)換什么時候發(fā)生?? ?

等號左右兩邊的數(shù)據(jù)類型不一致

自動類型轉(zhuǎn)換

自動類型轉(zhuǎn)換:

? ? ?? 取值范圍大的數(shù)據(jù)類型 變量名 = 取值范圍小的數(shù)據(jù)類型

代碼演示:

public class Demo01DataType {

?? public static void main(String[] args) {

? ? ?? /*

? ? ? ? ? 等號右邊的10默認類型是int型

? ? ? ? ? 將int型的10賦值給了long型的變量l,符合取值范圍小的數(shù)據(jù)類型賦值給取值范圍大的數(shù)據(jù)類型

? ? ? ? ? 發(fā)生了自動類型轉(zhuǎn)換

? ? ? ? */

? ? ? long l = 10;

? ? ? double d = 10;

?? }

}

強制類型轉(zhuǎn)換

1.什么時候發(fā)生?

? ? ? ? 取值范圍小的數(shù)據(jù)類型 變量名 = 取值范圍大的數(shù)據(jù)類型

2.解決:

? ? ? ? 取值范圍小的數(shù)據(jù)類型 變量名 =(取值范圍小的數(shù)據(jù)類型) 取值范圍大的數(shù)據(jù)類型


3.代碼演示:

public class Demo02DataType {

?? public static void main(String[] args) {

? ? ?? /*

? ? ? ? ? 2.5默認類型是double,此代碼是將double型的2.5賦值給了int型的變量i

? ? ? ? ? 由于double取值范圍大,int型的取值范圍小,那么代碼需要強制類型轉(zhuǎn)換

? ? ? ? */

? ? ?? //int i = 2.5;

? ? ?? int i = (int)2.5;

? ? ?? int i1 = (int)100L;

? ? ?? int j = 10;

? ? ?? double k = 20.5;

? ? ?? /*

? ? ? ? ? 一個小類型的和一個大類型的做運算,小類型的會自動提升為大類型的

? ? ? ? */

? ? ?? int sum = (int)(j+k);

?? }

}

4.注意事項:

? 1.我們不要隨便寫強制類型轉(zhuǎn)換(除非是硬性需要),會出現(xiàn)精度損失,數(shù)據(jù)溢出

? 2.byte,short,char參與運算的時候,會首先被提升為int型(char類型提升為int之后,會去一個碼表中查詢該字 ? ? 符對應(yīng)的int值)


二.運算符

1.算數(shù)運算符

? 基本算數(shù)運算符:

? ? +:加法,和字符串拼接(任何類型遇到字符串都會變成字符串)

? ? -

? ? *

? ? /:取的是整數(shù)部分

? ? %(模):取余數(shù)



? 自增和自減:變化1

? ? 1.格式:變量++ ? ++變量 ? ? 變量-- ? ? --變量

? ? 2.單獨使用:自己獨立成為一句

? ? ?? i++;

? ? ? 注意:符號在前或者在后沒有區(qū)別

? ? ? 混合使用:和輸出語句,賦值語句混合使用了

? ? ? 注意:符號在前(先運算,再使用-->先運算,運算之后,再用運算后的值)

? ? ? ? ? 符號在后(先使用,再運算-->先使用原值,使用完了以后,再運算)

? ? 3.注意:

? ? ?? 不要作死





2.關(guān)系運算符

比較運算符:結(jié)果肯定是boolean類型

? ?? ==? :判斷兩個數(shù)是否相等,相等返回true,不相等false

? ?? >:判斷前面的是否比后面的大,大的話true,否則false

? ?? <:判斷前面的是否比后面的小,小的話true,否則false

? ?? >=:判斷前面的是否比后面的大或者相等,如果大或者相等返回true,否則false

? ?? <=:判斷前面的是否比后面的小或者相等,如果小或者相等返回true,否則false

? ?? !=:判斷兩個數(shù)是否不等,如果不等返回true,如果相等返回false


代碼演示:

?? public class Demo01BiJiao {

?? public static void main(String[] args) {

? ? ?? int i = 20;

? ? ?? int j = 20;

? ? ?? boolean result01 = i==j;

? ? ?? System.out.println(result01);

? ? ?? System.out.println(i<j);

? ? ?? System.out.println(i!=j);

? ? ?? System.out.println(i>=j);

? ? ?? System.out.println(1>=5);

?? }

}

3.賦值運算符

賦值運算符:

? ? 基本:=

? ? ?? int i = 10

? ? 復(fù)合:

? ? ? ? +=

? ? ? ? ?? int i =10;

? ? ? ? ?? i+=2-->i = i+2

? ? ? ? -=

? ? ? ? ?? i-=2-->i = i-2

? ? ? ? *=

? ? ? ? ?? i*=2-->i = i*2

? ? ? ? /=

? ? ? ? ?? i/=2-->i = i/2

? ? ? ? %=

? ? ? ? ?? i%=3-->i = i%3

? ? byte,short,char參與運算的時候會被提升為int型,但是遇到復(fù)合賦值運算符,不用強轉(zhuǎn)


代碼演示:

?? public class Demo01FuZhi {

?? public static void main(String[] args) {

? ? ?? int i = 10;

? ? ?? /*i+=2;//i = i+2

? ? ?? System.out.println(i);

? ? ?? */

? ? ?? //System.out.println(i/=3);

? ? ?? System.out.println(i%=3);

? ? ?? byte b = 10;

? ? ?? b+=20;//b = b+20

? ? ?? System.out.println(b);

?? }

}

4.邏輯運算符

邏輯運算符:boolean表達式 邏輯運算符 boolean表達式

? ?? &&:與

? ? ? ? 有假則假:符號前后有一個boolean表達式是false,那么整體就是false

? ? ? ? 特點:短路效果(符號前面為false,符號后面不判斷了)

? ?? ||:或

? ? ? ? 有真則真:符號前后有一個boolean表達式是true,那么整體就是true

? ? ? ? 特點:短路效果:如果符號前為true,后面不看

? ?? !:非

? ? ? ? 取反

? ?? ^:異或(不用)

? ? ? ? a和b結(jié)果不同為true,相同為false

? 擴展:判斷一個變量是否是1-100之間的數(shù)

? ? ?? 1<=x<=100? 錯誤寫法

? ? ?? x>=1 && x<=100? 正確寫法

? ? ?? 1<=x && 100>=x ? 正確寫法


代碼演示:

? public class Demo01LuoJi {

?? public static void main(String[] args) {

? ? ? int i = 10;

? ? ? int j = 20;

? ? ? int k = 20;

? ? ? boolean result = (i>k)&&(i>j);

? ? ? System.out.println(result);

? ? ? System.out.println((i<k)||(i>j));

? ? ? System.out.println(!((i<k)||(i>j)));

? ? ? System.out.println((i<k)^(i<j));

?? }

}

5.三元運算符

格式:boolean表達式?表達式1:表達式2

執(zhí)行流程:

? ? ? ?? 1.走boolean表達式,如果是true,走?后面的表達式1

? ? ? ?? 2.否則走:后面的表達式2



代碼演示:

?? public class Demo01SuanYuan {

?? public static void main(String[] args) {

? ? ?? /*

? ? ? ?? 需求:定義一個變量,當分數(shù),判斷這個分數(shù)是否及格

? ? ? ? */

? ? ?? int score = 60;

? ? ?? String result = (score>=60)?"及格":"不及格";

? ? ?? System.out.println(result);

?? }

}

--------------------------------------------------------------------

練習:

? /*

? 求出三個數(shù)的最大值

? 分析:

? ? ? 1.比較前兩個數(shù),拿較大的

? ? ? 2.拿著較大的值和第三個比,再拿大的

*/

public class Demo02Test {

?? public static void main(String[] args) {

? ? ?? int i = 10;

? ? ?? int j = 50;

? ? ?? int z = 30;

? ? ?? int temp = (i>j)?i:j;

? ? ?? int result = (temp>z)?temp:z;

? ? ?? System.out.println(result);

?? }

}

三.Scanner:鍵盤錄入

Scanner:

? ?? 1.概述:類? Java自帶的類

? ?? 2.數(shù)據(jù)類型:引用數(shù)據(jù)類型

? ?? 3.作用:可以通過鍵盤錄入的形式將數(shù)據(jù)放到代碼中

? ?? 4.用法:

? ? ? ? ? ? 導(dǎo)包:idea自動導(dǎo)包-->alt+回車

? ? ? ? ? ? 創(chuàng)建對象:Scanner 變量名 = new Scanner(System.in)

? ? ? ? ? ? 調(diào)用方法:變量名.方法名()

? ? ? ? ? ? ? ? ? ? next():錄入字符串

? ? ? ? ? ? ? ? ? ? nextInt():錄入整數(shù)

? ? ? ? ? ? ? ? ? ? nextDouble():錄入小數(shù)

? ? ? ? ? ? ? ? ? ? nextxxx()


代碼演示:

?? public class Demo01Scanner {

?? public static void main(String[] args) {

? ? ?? Scanner sc = new Scanner(System.in);

? ? ?? System.out.println("請你輸入用戶名:");

? ? ?? String s = sc.next();

? ? ?? System.out.println(s);

? ? ?? System.out.println("請你輸入密碼:");

? ? ?? String p = sc.next();

? ? ?? System.out.println(p);

? ? ?? System.out.println("登錄成功");

?? }

}

------------------------------------------------------------------------------------------------

練習:

? /*

? Scanner練習(鍵盤錄入三個整數(shù),利用三元求出最大值)

? ? ? 步驟:

? ? ? ?? 1.創(chuàng)建Scanner對象:Scanner sc = new Scanner(System.in);

? ? ? ?? 2.連續(xù)調(diào)用3次nextInt方法,鍵盤錄入3個整數(shù)

? ? ? ?? 3.利用三元運算符求出前兩個數(shù)的較大值

? ? ? ?? 4.拿著較大的值和第三次錄入的數(shù)比較,再拿較大的

*/

public class Demo02ScannerTest {

?? public static void main(String[] args) {

? ? ?? Scanner sc = new Scanner(System.in);

? ? ?? System.out.println("請你輸入第一個整數(shù):");

? ? ?? int a = sc.nextInt();

? ? ?? System.out.println("請你輸入第二個整數(shù):");

? ? ?? int b = sc.nextInt();

? ? ?? System.out.println("請你輸入第三個整數(shù):");

? ? ?? int c = sc.nextInt();

? ? ?? //利用三元運算符求出最大值

? ? ?? int temp = (a>b)?a:b;

? ? ?? int result = (temp>c)?temp:c;

? ? ?? System.out.println("最大值是:"+result);

?? }

}

四.分支語句

if語句:

格式:

? ? if(boolean表達式){

? ? ? 執(zhí)行語句

? ? }

? ? 執(zhí)行流程:

? ? ? 1.走if后面的boolean表達式

? ? ? 2.如果返回true,那么就走if后面大括號中的執(zhí)行語句

? 使用場景:

? ? ? 有一種情況的,if


代碼演示:

? public class Demo01If {

? ? public static void main(String[] args) {

? ? ? ? /*

? ? ? ? ? 定義一個變量,判斷是否大于10

? ? ? ? */

? ? ? ? int i = 10;

? ? ? ? if (i>10) {

? ? ? ? ? ? System.out.println("大于10");

? ? ? ? }

? ? ? ? System.out.println("我要執(zhí)行");

? ? }

}

if..else語句:

? 格式:

? ? ? if(boolean表達式){

? ? ? ? 執(zhí)行語句1

? ? ? }else{

? ? ? ? 執(zhí)行語句2

? ? ? }

? ? 執(zhí)行流程:

? ? ? 1.走if后面的boolean表達式

? ? ? 2.如果返回true,那么就走if后面大括號中的執(zhí)行語句1

? ? ? 3.否則,走else后面大括號中的執(zhí)行語句2

? ? 使用場景:

? ? ? ? 2種情況

--------------------------------------------------------------------------------? ? ? ?

? ? 代碼演示:

? ? ? /*

? ? ? ? 練習:

? ? ? ? 鍵盤錄入一個數(shù),判斷奇偶

? ? 步驟:

? ? ? 1.創(chuàng)建Scanner:Scanner sc = new Scanner(System.in)

? ? ? 2.調(diào)用nextInt()錄入一個整數(shù)

? ? ? 3.利用if語句? %2==0,如果等等于0,輸出是偶數(shù)

? ? ? 4.否則就是奇數(shù)

*/

public class Demo03IfElseTest {

? ? public static void main(String[] args) {

? ? ? ? Scanner sc = new Scanner(System.in);

? ? ? ? int a = sc.nextInt();

? ? ? ? if (a%2==0){

? ? ? ? ? ? System.out.println("是偶數(shù)");

? ? ? ? }else{

? ? ? ? ? ? System.out.println("是奇數(shù)");

? ? ? ? }

? ? }

}

else if語句:

格式:

? ? ? if(boolean表達式){

? ? ? ? 執(zhí)行語句1

? ? ? }else if(boolean表達式){

? ? ? ? 執(zhí)行語句2

? ? ? }else if(boolean表達式){

? ? ? ? 執(zhí)行語句3

? ? ? }....{

? ? ? }else{

? ? ? ? 執(zhí)行語句n

? ? ? }

執(zhí)行流程:

? ? ? 1.走if后面boolean表達式,如果是true,就走if后面的大括號中的執(zhí)行語句1

? ? ? 2.如果是false,就走else if后面的boolean表達式,如果是true,就執(zhí)行對應(yīng)的執(zhí)行語句2

? ? ? 3.如果還是false,那么就繼續(xù)走下一個else if 接著判斷

? ? ? 4.如果以上所有的判斷都不成立,那么執(zhí)行else

使用場景:

? ? ? 2種情況以上的判斷


代碼演示:

? ? 練習:鍵盤錄入一個分數(shù),劃分等級,獲取對應(yīng)的獎勵

? ? ? 95~100 山地自行車一輛

? ? ? 90~94 游樂場玩一次

? ? ? 80~89 變形金剛玩具一個

? ? ? 80以下 胖揍一頓


? public class Demo04ElseIf {

? ? public static void main(String[] args) {

? ? ? Scanner sc = new Scanner(System.in);

? ? ? System.out.println("請你輸入一個分數(shù):");

? ? ? int score = sc.nextInt();

? ? ? if (score>=95 && score<=100){

? ? ? ? ? System.out.println("獎勵日本女演員一個!");

? ? ? }else if(score>=90 && score<=94){

? ? ? ? ? System.out.println("獎勵日本男演員一個!");

? ? ? }else if(score>=80 && score<=89){

? ? ? ? ? System.out.println("獎勵日本小電影網(wǎng)站一個!");

? ? ? }else if(score>100 || score<0){

? ? ? ? ? System.out.println("數(shù)據(jù)錯誤");

? ? ? }else{

? ? ? ? ? System.out.println("弄死");

? ? ? }

? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容