Java学习的第七天(JavaSE基础03_运算符&流程控制语句)

运算符:对常量和变量进行操作的符号

常用的几类运算符:

1.赋值运算符:=
2.算术运算符:+ - * / %
3.比较(关系)运算符:> < >= <= == !=
4.逻辑运算符:&&(双与) ||(双或) &(单与) |(单或) !(非)
5.一元运算符:++(自增) --(自减)
6.三元运算符:表达式1:表达式2?值1:值2;如果表达式为true则取值1,为false则取值2

1.赋值运算符(=):将右边的值赋给左边的变量
int a=10;
int b=a;(复制)
a=20;(覆盖)
2.算术运算符(+ - * / %)
  • 加法/拼接 +
一:+:两种用法
 1:进行加法运算;2具有拼接功能
 
二:+进行拼接应该应该具备的要求:
要求1:必须要有字符串参与运算,如果没有字符串参与,则直接做加法运算
要求2:字符串在右边的时候,先要进行其它的数据的加法运算,然后再与字符串进行拼接,而最终的结果也是字符串!

三:实例说明
        //字符串拼接
        System.out.println(1+"哈哈");  //"1哈哈"
        //要求1:必须要有字符串参与运算
        //要求2:只有当字符串在右边的时候,先要进行其他数据的加法运算,然后再与字符串进行拼接
        //要求2:字符串的右边不管有多少个+,都是进行字符串的连接,而左边进行加法运算
        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
 
  • 取商 /
结论1:如果/左右两边都是整数,那么得到的结果也是整数
结论2:如果/左右两边只要有一个是小数,那么得到的结果就是小数
结论3:如果被除数为0,那么结果也为0
结论4:如果除数为0,那么直接会报错(ArithmeticException)算术异常

实例说明:
        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(算术异常)
    *   System.out.println(2/5);  //0
  • 取模 %
 // %取余和取商的用法基本一致,但是有一点不一样,当左边比右边小的时候,除得到的结果是0,而模得到的结果是左边本身
        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
  • 减法-和乘法:和数学中的用法一致,但是必须是数字参与运算
需求:求1234的个十百千位

思路:使用上述算术运算符中的取余和取模(Remember)

int a=1234;
int ge=a/1%10;      //   %10得到的是最后的位数4
int shi=a/10%10;    //   /10是将1234的4去掉了,a=123,接着%10得到最后的位数3
int bai=a/100%10;   //   /100是将1234的34去掉了,a=12,接着%10得到最后的位数2
int qian=a/1000%10; //   /1000是将1234的234去掉了,a=1,接着%10得到最后的位数1
3.比较运算符(> < >= <= == !=):最终得到的结果是Boolean类型,要么是true,要么是false。
实例说明:
        System.out.println(5>3);  //true
        System.out.println(5<3);  //false
        System.out.println(5>=3); //true
        System.out.println(5!=3); //true
特别注意:
        //==是比较运算符,用于判断基本数据类型的值是否相等
        System.out.println(5==5);
        // System.out.println(5=5); //意外的类型,"="是赋值,而"=="才是比较
4.逻辑运算符:&&(双与) ||(双或) &(单与) |(单或) !(非)
作用:用来连接条件用的
实例说明:
        System.out.println(5>3&&5>7); //false
        System.out.println(5>3||5>7); //true
        System.out.println(!(5>3)); //false
面试题:双与,双或和单与,单或的区别是什么??
 双与和单与都是并且的含义,双或和单或都是或者的含义,但是双与和双或有短路效果
        解释:什么是短路效果:假如有成百上千个条件给我们去判断,
                当我们使用&&的时候,判断到一个条件是false,那么就不需要要继续判断下面的条件是否是true/false,最终的结果一定是false
                而当我们使用&的时候,如果判断一个条件为false,我们还要接着判断下面所有的条件,当所有的条件判断完之后才出结果
                所以:双与,双或相对于单与,单或而言,缩短了运行时间,提高了程序的运行效率,这在实际编程开发过程中是很有用的
        拓展:那么&和|是不是就没用了呢? 从本质上而言是的,&&是&的一个升级版本,但是还有一个区别就是&和|可以用来作位运算,而&&和||就不行*/
5.一元运算符: ++(自增) --(自减),用来操作一个变量用的
//当++和--单独使用的时候,放在前面和后面没有区别
实例说明:
        /*int a=1;
        a++;
        System.out.println(a);*/
//当++和--参与运算的时候,就有很大的区别了
//i++:变量先参与运算,然后再自增
//++i:变量先要自增1,然后再参与运算
//i--:变量先参与运算,然后再自减
//--i:变量先要自减1,然后再参与运算
实例说明:
        int a1=1;
        System.out.println(a1);                      //1
        System.out.println(a1++); //运算并不止局限于+-*/,输出同样属于运算  //1   i++
        System.out.println(a1);   //这时a1=2         //2
        System.out.println(++a1); //这时先自增,然后输出 //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
        //运算与自增
        int a2=1;
        int b=a2++;
        System.out.println(a2);    //2 先计算b=a2 
        System.out.println(b);     //1
        //输出综合
        int c=1;
        int d=(c++)+2-(++c)+(c--)+3-(--c);
        System.out.println(d);
6.三元运算符
 表达式1:表达式2?值1:值2;如果表达式为true则取值1,为false则取值2
 实例说明:求两个数的最大值
 int a=10;
 int b=20;
 int max=a>b?a:b;   //20
 boolean flag=a>b?true:false;  //false

流程控制语句

 //1.单个的if语句结构
        /*  单个if语句的特点
            1.一次只能判断一个条件
            2.单个的if语句都是互相独立的,互不影响
        */
        int age0=22;
        if(age0>=22){
            System.out.println("恭喜你,可以结婚了");
        }
        if(age0<=22){
            System.out.println("只能老老实实敲代码!");
        }
 //2.if else语句结构
        /*  if..else语句的特点
            1.同时进行两个条件判断
            2.else后面隐含了一个与条件相反的条件
        */
        int age1=20;
        if(age1>=22){
            System.out.println("恭喜你,可以结婚了");
        }else{
            //else隐含了一个与条件判断相反的条件
            //满足age<22做的事情
            System.out.println("只能老老实实敲代码!");
        }
 //if语句的第三种格式:多重if
        //给定一个人的成绩,判断此人的成绩的等级  成绩只能够0--100
        int score=95;
        if(score>=0&&score<60){
            System.out.println("没及格,小伙子还需要加油!!");
        }else if(score>=60&&score<70){  //隐含了上一层的条件
            System.out.println("及格,小伙子挺危险,还需努力");
        }else if(score>=70&&score<80){  //隐含了上一层的条件,但是上一层的条件隐含了上上一层的条件,所以隐含了上两层的条件
            System.out.println("良,小伙子还算不错");
        }else if(score>=80&&score<90){
            System.out.println("优,小伙子考的还行");
        }else{
            System.out.println("小伙子你要上天啊,真乃人中之龙也!");
        }
//总结:   因为如果多重if语句如果满足条件则不必须继续执行下去,
        而if..else语句如果if的条件满足则不必要执行else语句中的内容,
        而单个的if语句,如果满足了if条件,还需要继续执行下一个if,只到所有的if全部执行完。
//最后:多重if语句比if..else语句效率要高,而if..else比单个的if语句执行效率要高

扫描器(键盘录入)Scanner

作用:通过扫描器接收自己输入的数据,实现人机交互
步骤(三步走):
第1步:导入扫描器(特定的代码)
     //import java.util.Scanner;(第一种写法,必须写在真正代码的第一行,注释不算)
     //import java.util.*;(第二种写法)
第2步:生成新的扫描器
Scanner sc=new Scanner(System.in);  //只需要写一次,下面如果有多次输入,不必重复定义
第3步:接收数据
//3.1接收输入的整数
        //最好要一个友好提示:请输入一个xx类型的数据
        System.out.print("请输入一个int类型的数据:");
        int a=sc.nextInt();
        System.out.println("输入的整形数据:"+a);
//3.2接收double类型的数据
       /* System.out.print("请输入一个double类型的数据:");
        double b=sc.nextDouble();
        System.out.println("输入的double类型的数据:"+b);*/
//3.3第一种接收String类型的数据nextLine()
        /*System.out.print("请输入一个string类型的数据:");
        String c=sc.nextLine();
        System.out.println("输入的string类型的数据:"+c);*/
//3.4第二种接收String类型的数据next();
        System.out.print("请输入一个string类型的数据:");
        String d=sc.next();
        System.out.println("输入的string类型的数据:"+d);
//3.5接收Boolean类型的数据
        System.out.print("请输入一个boolean类型的数据:");
        Boolean e=sc.nextBoolean();
        System.out.println("输入的boolean类型的数据:"+e);

需求:请输入3个int类型的数据,判断最大值,只允许用单个if语句

思路:打擂台,先从三个人中找一个人当擂主,然后去第二个人去挑战擂主,如果赢,第二个人就成为擂主,如果输,第一个人还是擂主。然后第三个人接着去挑战擂主,如果赢,第三个人就成为擂主,如果输,擂主还是擂主!!

import java.util.*;
public class Demo_Max {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数据:");
        int a=sc.nextInt();
        System.out.println("请输入第二个数据:");
        int b=sc.nextInt();
        System.out.println("请输入第三个数据:");
        int c=sc.nextInt();
        int max=a;
        if(max

课后习题练习:

package com.HomeWork;
/*1.定义三个变量,保存名字,性别,年龄, 爱好
    提示:
        姓名: 自己定义
        性别: 自己定义
        年龄: 自己定义
        爱好: 自己定义
输出格式:(举列如下)
    姓名     性别     年龄  爱好
    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爱好");
        System.out.println(name+"\t"+sex+"\t\t"+age+"\t\t"+hobby);
    }
}
package com.HomeWork;
/*2、根据天数(46)计算周数和剩余的天数*/
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("周数为:"+week);
        System.out.println("剩余天数:"+diethday);
    }
}
package com.HomeWork;
/*3.定义的整数142857,
    把这个数字分解成两组数字142,857
    计算这两个数和的结果;
    再把142857分解成三组数字,
    14,28,57再输出三组数字之和*/
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.定义一个整数,代表88个小时,
  计算88个小时等于多少天零多少个小时*/
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小时是"+day+"天");
        System.out.println("剩余:"+hour+"h");
    }
}
package com.HomeWork;
/*5.定义一个整形变量比如:int a = 12345;然后依次输出各个位上的数字;*/
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.某个公司采用公用电话传递数据,
    数据是四位的整数,在传递过程中是加密的,
    加密规则如下:求出各个位数的数字,再将第一位和第四位交换,第二位和第三位交换。
    请给数字(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、键盘输入一个int型的数据,判断这个数是
   否能被2整除,如果能被2整除,
   那么输出“这个数是偶数”,
   如果不能被2整除,输出“这个数是奇数”。
   提示: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("请输入一个int类型的数据:");
        int num=sc.nextInt();
        if(num%2==0){
            System.out.println("这个数是偶数");
        }else{
            System.out.println("这个数是奇数");
        }
    }
}
package com.HomeWork;
/*8.键盘录入两个整数,计算他们的和,如果和大于100,
    就输出这两个数的乘积,如果和小于100,
    就输出这两个数的商.*/
import java.util.*;
public class Hw8 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        double num1=sc.nextDouble();
        System.out.println("请输入第二个整数:");
        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.键盘录入三个int类型的数字
    2.要求:
        (1)求出三个数中的最小值值并打印
        (2)求出三个数的和并打印
*/
import java.util.*;
public class Hw9 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1=sc.nextInt();
        System.out.println("请输入第二个数:");
        int num2=sc.nextInt();
        System.out.println("请输入第三个数:");
        int num3=sc.nextInt();
        int min=num1;
        if(min>num2){
            min=num2;
        }
        if(min>num3){
            min=num3;
        }
        System.out.println("三个数中的最小数为:"+min);
        int sum=num1+num2+num3;
        System.out.println("三个数的和为:"+sum);
    }
}

你可能感兴趣的:(Java学习的第七天(JavaSE基础03_运算符&流程控制语句))