Java學(xué)習(xí)的第七天(JavaSE基礎(chǔ)03_運(yùn)算符&流程控制語(yǔ)句)

運(yùn)算符:對(duì)常量和變量進(jìn)行操作的符號(hào)

常用的幾類運(yùn)算符:

1.賦值運(yùn)算符:=
2.算術(shù)運(yùn)算符:+ - * / %
3.比較(關(guān)系)運(yùn)算符:> < >= <= == !=
4.邏輯運(yùn)算符:&&(雙與) ||(雙或) &(單與) |(單或) !(非)
5.一元運(yùn)算符:++(自增) --(自減)
6.三元運(yùn)算符:表達(dá)式1:表達(dá)式2?值1:值2;如果表達(dá)式為true則取值1,為false則取值2

1.賦值運(yùn)算符(=):將右邊的值賦給左邊的變量
int a=10;
int b=a;(復(fù)制)
a=20;(覆蓋)
2.算術(shù)運(yùn)算符(+ - * / %)
  • 加法/拼接 +
一:+:兩種用法
 1:進(jìn)行加法運(yùn)算;2具有拼接功能
 
二:+進(jìn)行拼接應(yīng)該應(yīng)該具備的要求:
要求1:必須要有字符串參與運(yùn)算,如果沒(méi)有字符串參與,則直接做加法運(yùn)算
要求2:字符串在右邊的時(shí)候,先要進(jìn)行其它的數(shù)據(jù)的加法運(yùn)算,然后再與字符串進(jìn)行拼接,而最終的結(jié)果也是字符串!

三:實(shí)例說(shuō)明
        //字符串拼接
        System.out.println(1+"哈哈");  //"1哈哈"
        //要求1:必須要有字符串參與運(yùn)算
        //要求2:只有當(dāng)字符串在右邊的時(shí)候,先要進(jìn)行其他數(shù)據(jù)的加法運(yùn)算,然后再與字符串進(jìn)行拼接
        //要求2:字符串的右邊不管有多少個(gè)+,都是進(jìn)行字符串的連接,而左邊進(jìn)行加法運(yùn)算
        System.out.println(1+"2"); //12
        System.out.println(1+2+"3"); //33
        System.out.println(1+"2"+3); //123
        System.out.println(1+"2"+3+4); //1234
        System.out.println("3+3="+3+3); //3+3=33
        System.out.println(1+2+3+4+5+6+7); //28
        System.out.println(1+"2"+3+4+5+6+7); //1234567
        System.out.println(1+2+3+"4"+5+6+7);  //64567
 
  • 取商 /
結(jié)論1:如果/左右兩邊都是整數(shù),那么得到的結(jié)果也是整數(shù)
結(jié)論2:如果/左右兩邊只要有一個(gè)是小數(shù),那么得到的結(jié)果就是小數(shù)
結(jié)論3:如果被除數(shù)為0,那么結(jié)果也為0
結(jié)論4:如果除數(shù)為0,那么直接會(huì)報(bào)錯(cuò)(ArithmeticException)算術(shù)異常

實(shí)例說(shuō)明:
        System.out.println(5/2); //2
        System.out.println(5.0/2); //2.5
        System.out.println(5/2.0); //2.5
        System.out.println(0/2);  //0
        System.out.println(0/2.0);  //0.0
        //System.out.println(5/0); //ArithmeticException(算術(shù)異常)
    *   System.out.println(2/5);  //0
  • 取模 %
 // %取余和取商的用法基本一致,但是有一點(diǎn)不一樣,當(dāng)左邊比右邊小的時(shí)候,除得到的結(jié)果是0,而模得到的結(jié)果是左邊本身
        System.out.println(5%2); //1
        System.out.println(5.0%2); //1.0
        System.out.println(5%2.0); //1.0
        System.out.println(0%2);  //0
        System.out.println(0%2.0);  //0.0
    *   System.out.println(2%5);  //2
  • 減法-和乘法:和數(shù)學(xué)中的用法一致,但是必須是數(shù)字參與運(yùn)算
需求:求1234的個(gè)十百千位

思路:使用上述算術(shù)運(yùn)算符中的取余和取模(Remember)

int a=1234;
int ge=a/1%10;      //   %10得到的是最后的位數(shù)4
int shi=a/10%10;    //   /10是將1234的4去掉了,a=123,接著%10得到最后的位數(shù)3
int bai=a/100%10;   //   /100是將1234的34去掉了,a=12,接著%10得到最后的位數(shù)2
int qian=a/1000%10; //   /1000是將1234的234去掉了,a=1,接著%10得到最后的位數(shù)1
3.比較運(yùn)算符(> < >= <= == !=):最終得到的結(jié)果是Boolean類型,要么是true,要么是false。
實(shí)例說(shuō)明:
        System.out.println(5>3);  //true
        System.out.println(5<3);  //false
        System.out.println(5>=3); //true
        System.out.println(5!=3); //true
特別注意:
        //==是比較運(yùn)算符,用于判斷基本數(shù)據(jù)類型的值是否相等
        System.out.println(5==5);
        // System.out.println(5=5); //意外的類型,"="是賦值,而"=="才是比較
4.邏輯運(yùn)算符:&&(雙與) ||(雙或) &(單與) |(單或) !(非)
作用:用來(lái)連接條件用的
實(shí)例說(shuō)明:
        System.out.println(5>3&&5>7); //false
        System.out.println(5>3||5>7); //true
        System.out.println(!(5>3)); //false
面試題:雙與,雙或和單與,單或的區(qū)別是什么??
 雙與和單與都是并且的含義,雙或和單或都是或者的含義,但是雙與和雙或有短路效果
        解釋:什么是短路效果:假如有成百上千個(gè)條件給我們?nèi)ヅ袛啵?                當(dāng)我們使用&&的時(shí)候,判斷到一個(gè)條件是false,那么就不需要要繼續(xù)判斷下面的條件是否是true/false,最終的結(jié)果一定是false
                而當(dāng)我們使用&的時(shí)候,如果判斷一個(gè)條件為false,我們還要接著判斷下面所有的條件,當(dāng)所有的條件判斷完之后才出結(jié)果
                所以:雙與,雙或相對(duì)于單與,單或而言,縮短了運(yùn)行時(shí)間,提高了程序的運(yùn)行效率,這在實(shí)際編程開(kāi)發(fā)過(guò)程中是很有用的
        拓展:那么&和|是不是就沒(méi)用了呢? 從本質(zhì)上而言是的,&&是&的一個(gè)升級(jí)版本,但是還有一個(gè)區(qū)別就是&和|可以用來(lái)作位運(yùn)算,而&&和||就不行*/
5.一元運(yùn)算符: ++(自增) --(自減),用來(lái)操作一個(gè)變量用的
//當(dāng)++和--單獨(dú)使用的時(shí)候,放在前面和后面沒(méi)有區(qū)別
實(shí)例說(shuō)明:
        /*int a=1;
        a++;
        System.out.println(a);*/
//當(dāng)++和--參與運(yùn)算的時(shí)候,就有很大的區(qū)別了
//i++:變量先參與運(yùn)算,然后再自增
//++i:變量先要自增1,然后再參與運(yùn)算
//i--:變量先參與運(yùn)算,然后再自減
//--i:變量先要自減1,然后再參與運(yùn)算
實(shí)例說(shuō)明:
        int a1=1;
        System.out.println(a1);                      //1
        System.out.println(a1++); //運(yùn)算并不止局限于+-*/,輸出同樣屬于運(yùn)算  //1   i++
        System.out.println(a1);   //這時(shí)a1=2         //2
        System.out.println(++a1); //這時(shí)先自增,然后輸出 //3   ++i
        System.out.println(a1);                      //3
        System.out.println(a1--);                    //3   i--
        System.out.println(a1);                      //2
        System.out.println(--a1);                    //1   --i
        System.out.println(a1);                      //1
        //運(yùn)算與自增
        int a2=1;
        int b=a2++;
        System.out.println(a2);    //2 先計(jì)算b=a2 
        System.out.println(b);     //1
        //輸出綜合
        int c=1;
        int d=(c++)+2-(++c)+(c--)+3-(--c);
        System.out.println(d);
6.三元運(yùn)算符
 表達(dá)式1:表達(dá)式2?值1:值2;如果表達(dá)式為true則取值1,為false則取值2
 實(shí)例說(shuō)明:求兩個(gè)數(shù)的最大值
 int a=10;
 int b=20;
 int max=a>b?a:b;   //20
 boolean flag=a>b?true:false;  //false

流程控制語(yǔ)句

 //1.單個(gè)的if語(yǔ)句結(jié)構(gòu)
        /*  單個(gè)if語(yǔ)句的特點(diǎn)
            1.一次只能判斷一個(gè)條件
            2.單個(gè)的if語(yǔ)句都是互相獨(dú)立的,互不影響
        */
        int age0=22;
        if(age0>=22){
            System.out.println("恭喜你,可以結(jié)婚了");
        }
        if(age0<=22){
            System.out.println("只能老老實(shí)實(shí)敲代碼!");
        }
 //2.if else語(yǔ)句結(jié)構(gòu)
        /*  if..else語(yǔ)句的特點(diǎn)
            1.同時(shí)進(jìn)行兩個(gè)條件判斷
            2.else后面隱含了一個(gè)與條件相反的條件
        */
        int age1=20;
        if(age1>=22){
            System.out.println("恭喜你,可以結(jié)婚了");
        }else{
            //else隱含了一個(gè)與條件判斷相反的條件
            //滿足age<22做的事情
            System.out.println("只能老老實(shí)實(shí)敲代碼!");
        }
 //if語(yǔ)句的第三種格式:多重if
        //給定一個(gè)人的成績(jī),判斷此人的成績(jī)的等級(jí)  成績(jī)只能夠0--100
        int score=95;
        if(score>=0&&score<60){
            System.out.println("沒(méi)及格,小伙子還需要加油??!");
        }else if(score>=60&&score<70){  //隱含了上一層的條件
            System.out.println("及格,小伙子挺危險(xiǎn),還需努力");
        }else if(score>=70&&score<80){  //隱含了上一層的條件,但是上一層的條件隱含了上上一層的條件,所以隱含了上兩層的條件
            System.out.println("良,小伙子還算不錯(cuò)");
        }else if(score>=80&&score<90){
            System.out.println("優(yōu),小伙子考的還行");
        }else{
            System.out.println("小伙子你要上天啊,真乃人中之龍也!");
        }
//總結(jié):   因?yàn)槿绻嘀豬f語(yǔ)句如果滿足條件則不必須繼續(xù)執(zhí)行下去,
        而if..else語(yǔ)句如果if的條件滿足則不必要執(zhí)行else語(yǔ)句中的內(nèi)容,
        而單個(gè)的if語(yǔ)句,如果滿足了if條件,還需要繼續(xù)執(zhí)行下一個(gè)if,只到所有的if全部執(zhí)行完。
//最后:多重if語(yǔ)句比if..else語(yǔ)句效率要高,而if..else比單個(gè)的if語(yǔ)句執(zhí)行效率要高

掃描器(鍵盤(pán)錄入)Scanner

作用:通過(guò)掃描器接收自己輸入的數(shù)據(jù),實(shí)現(xiàn)人機(jī)交互
步驟(三步走):
第1步:導(dǎo)入掃描器(特定的代碼)
     //import java.util.Scanner;(第一種寫(xiě)法,必須寫(xiě)在真正代碼的第一行,注釋不算)
     //import java.util.*;(第二種寫(xiě)法)
第2步:生成新的掃描器
Scanner sc=new Scanner(System.in);  //只需要寫(xiě)一次,下面如果有多次輸入,不必重復(fù)定義
第3步:接收數(shù)據(jù)
//3.1接收輸入的整數(shù)
        //最好要一個(gè)友好提示:請(qǐng)輸入一個(gè)xx類型的數(shù)據(jù)
        System.out.print("請(qǐng)輸入一個(gè)int類型的數(shù)據(jù):");
        int a=sc.nextInt();
        System.out.println("輸入的整形數(shù)據(jù):"+a);
//3.2接收double類型的數(shù)據(jù)
       /* System.out.print("請(qǐng)輸入一個(gè)double類型的數(shù)據(jù):");
        double b=sc.nextDouble();
        System.out.println("輸入的double類型的數(shù)據(jù):"+b);*/
//3.3第一種接收String類型的數(shù)據(jù)nextLine()
        /*System.out.print("請(qǐng)輸入一個(gè)string類型的數(shù)據(jù):");
        String c=sc.nextLine();
        System.out.println("輸入的string類型的數(shù)據(jù):"+c);*/
//3.4第二種接收String類型的數(shù)據(jù)next();
        System.out.print("請(qǐng)輸入一個(gè)string類型的數(shù)據(jù):");
        String d=sc.next();
        System.out.println("輸入的string類型的數(shù)據(jù):"+d);
//3.5接收Boolean類型的數(shù)據(jù)
        System.out.print("請(qǐng)輸入一個(gè)boolean類型的數(shù)據(jù):");
        Boolean e=sc.nextBoolean();
        System.out.println("輸入的boolean類型的數(shù)據(jù):"+e);

需求:請(qǐng)輸入3個(gè)int類型的數(shù)據(jù),判斷最大值,只允許用單個(gè)if語(yǔ)句

思路:打擂臺(tái),先從三個(gè)人中找一個(gè)人當(dāng)擂主,然后去第二個(gè)人去挑戰(zhàn)擂主,如果贏,第二個(gè)人就成為擂主,如果輸,第一個(gè)人還是擂主。然后第三個(gè)人接著去挑戰(zhàn)擂主,如果贏,第三個(gè)人就成為擂主,如果輸,擂主還是擂主??!

import java.util.*;
public class Demo_Max {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)數(shù)據(jù):");
        int a=sc.nextInt();
        System.out.println("請(qǐng)輸入第二個(gè)數(shù)據(jù):");
        int b=sc.nextInt();
        System.out.println("請(qǐng)輸入第三個(gè)數(shù)據(jù):");
        int c=sc.nextInt();
        int max=a;
        if(max<b){
            max=b;
        }
        if(max<c){
            max=c;
        }
        System.out.println("max的值為"+max);
    }
}

課后習(xí)題練習(xí):

package com.HomeWork;
/*1.定義三個(gè)變量,保存名字,性別,年齡, 愛(ài)好
    提示:
        姓名: 自己定義
        性別: 自己定義
        年齡: 自己定義
        愛(ài)好: 自己定義
輸出格式:(舉列如下)
    姓名     性別     年齡  愛(ài)好
    a         b        c     d*/
public class Hw1 {
    public static void main(String[] args) {
        String name="張三";
        String sex="男";
        int age=18;
        String hobby="籃球";
        System.out.println("姓名\t性別\t年齡\t愛(ài)好");
        System.out.println(name+"\t"+sex+"\t\t"+age+"\t\t"+hobby);
    }
}
package com.HomeWork;
/*2、根據(jù)天數(shù)(46)計(jì)算周數(shù)和剩余的天數(shù)*/
public class Hw2 {
    public static void main(String[] args) {
        int day=46;
        int week;
        int diethday;
        week=day/7;
        diethday=day%7;
        System.out.println("周數(shù)為:"+week);
        System.out.println("剩余天數(shù):"+diethday);
    }
}
package com.HomeWork;
/*3.定義的整數(shù)142857,
    把這個(gè)數(shù)字分解成兩組數(shù)字142,857
    計(jì)算這兩個(gè)數(shù)和的結(jié)果;
    再把142857分解成三組數(shù)字,
    14,28,57再輸出三組數(shù)字之和*/
public class Hw3 {
    public static void main(String[] args) {
        int a=142857;
        int num1;
        int num2;
        int sum1,sum2;
        num1=a/1000;
        num2=a%1000;
        System.out.println("num1="+num1);
        System.out.println("num2="+num2);
        sum1=num1+num2;
        System.out.println("sum1="+sum1);
        int num3;
        int num4;
        int num5;
        num3=a/10000;
        num4=a%10000/100;
        num5=a%100;
        System.out.println("num3="+num3);
        System.out.println("num4="+num4);
        System.out.println("num5="+num5);
        sum2=num3+num4+num5;
        System.out.println("sum2="+sum2);
    }
}
package com.HomeWork;
/*4.定義一個(gè)整數(shù),代表88個(gè)小時(shí),
  計(jì)算88個(gè)小時(shí)等于多少天零多少個(gè)小時(shí)*/
public class Hw4 {
    public static void main(String[] args) {
        int num=88;
        int day;
        int hour;
        day=num/24;
        hour=num%24;
        System.out.println("88小時(shí)是"+day+"天");
        System.out.println("剩余:"+hour+"h");
    }
}
package com.HomeWork;
/*5.定義一個(gè)整形變量比如:int a = 12345;然后依次輸出各個(gè)位上的數(shù)字;*/
public class Hw5 {
    public static void main(String[] args) {
        int a=12345;
        int ge,shi,bai,qian,wan;
        ge=a/1%10;
        shi=a/10%10;
        bai=a/100%10;
        qian=a/1000%10;
        wan=a/10000%10;
        System.out.println(ge);
        System.out.println(shi);
        System.out.println(bai);
        System.out.println(qian);
        System.out.println(wan);
    }
}
package com.HomeWork;
/*  6.某個(gè)公司采用公用電話傳遞數(shù)據(jù),
    數(shù)據(jù)是四位的整數(shù),在傳遞過(guò)程中是加密的,
    加密規(guī)則如下:求出各個(gè)位數(shù)的數(shù)字,再將第一位和第四位交換,第二位和第三位交換。
    請(qǐng)給數(shù)字(4567)加密。*/
public class Hw6 {
    public static void main(String[] args) {
        int num=4567;
        System.out.println("加密前num="+num);
        int ge,shi,bai,qian;
        ge=num/1%10;
        shi=num/10%10;
        bai=num/100%10;
        qian=num/1000%10;
        int a;
        a=ge;
        ge=qian;
        qian=a;
        a=shi;
        shi=bai;
        bai=a;
        int numember=qian*1000+bai*100+shi*10+ge*1;
        System.out.println("加密后num="+numember);
    }
}
package com.HomeWork;
/*7、鍵盤(pán)輸入一個(gè)int型的數(shù)據(jù),判斷這個(gè)數(shù)是
   否能被2整除,如果能被2整除,
   那么輸出“這個(gè)數(shù)是偶數(shù)”,
   如果不能被2整除,輸出“這個(gè)數(shù)是奇數(shù)”。
   提示:8%2==0  10%2==0  9%2=1
 */
import java.util.*;
public class Hw7 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)int類型的數(shù)據(jù):");
        int num=sc.nextInt();
        if(num%2==0){
            System.out.println("這個(gè)數(shù)是偶數(shù)");
        }else{
            System.out.println("這個(gè)數(shù)是奇數(shù)");
        }
    }
}
package com.HomeWork;
/*8.鍵盤(pán)錄入兩個(gè)整數(shù),計(jì)算他們的和,如果和大于100,
    就輸出這兩個(gè)數(shù)的乘積,如果和小于100,
    就輸出這兩個(gè)數(shù)的商.*/
import java.util.*;
public class Hw8 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)整數(shù):");
        double num1=sc.nextDouble();
        System.out.println("請(qǐng)輸入第二個(gè)整數(shù):");
        double num2=sc.nextDouble();
        double sum=num1+num2;
        if(sum>100){
            System.out.println(num1*num2);
        }else{
            if(num1>num2){
                System.out.println(num1/num2);
            }else {
                System.out.println(num2/num1);
            }
        }
    }
}
package com.HomeWork;
/*9.鍵盤(pán)錄入三個(gè)int類型的數(shù)字
    2.要求:
        (1)求出三個(gè)數(shù)中的最小值值并打印
        (2)求出三個(gè)數(shù)的和并打印
*/
import java.util.*;
public class Hw9 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)數(shù):");
        int num1=sc.nextInt();
        System.out.println("請(qǐng)輸入第二個(gè)數(shù):");
        int num2=sc.nextInt();
        System.out.println("請(qǐng)輸入第三個(gè)數(shù):");
        int num3=sc.nextInt();
        int min=num1;
        if(min>num2){
            min=num2;
        }
        if(min>num3){
            min=num3;
        }
        System.out.println("三個(gè)數(shù)中的最小數(shù)為:"+min);
        int sum=num1+num2+num3;
        System.out.println("三個(gè)數(shù)的和為:"+sum);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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