day04_运算符

今日内容

零、 复习昨日
一、运算符
二、键盘录入
三、练习
四、流程控制语句(1)

零、 复习昨日

0java代码的执行顺序是什么?

  • 在主方法内逐行执行

1注释有哪几种写法

2输出语句print和println的区别: 加ln会换行

3变量用来干什么?变量的使用步骤和写法

  • 容器,装数据的
  • 声明,赋值,使用

4写出所有基本数据类型

  • byte short int long float double boolean char

5数据类型转换的原则

  • 小转大 默认允许
  • 大转小 默认不允许,但是可以强转,数据可能丢失精度

6char和String分别是什么,什么用法,有何区别

  • char代表单个字符,使用单引号
  • String代表是字符串,使用双引号

7写单词汉语
system package required type duplicate variable init

一、作业

  • 类名首字母大写!!!
  • 凡是在{}内写东西,先缩进
  • 类名上没加注释
  • 拼接字符串技巧
  • 两个变量交换
    • 思路: 单独再定义一个第三变量
  • 写题技巧: “法无禁止皆可行”

二、运算符[重点]

昨天学习 变量,数据类型,今天通过对这些变量做各种运算.

运算符

  • 赋值运算
  • 算术运算
  • 关系运算
  • 逻辑运算
  • 三目|三元运算

2.1 赋值运算

赋值运算符号

= 
+=,-=,*=,/=
public class Demo3 {
    public static void main(String[] args) {
        /**
         * = 等号
         * 讲右边的赋值给左边
         * 赋值时要注意两边的类型是否一致
         */
        int a = 1;

        /**
         * 先运算后赋值(综合)
         * +=,-=,*=,/=,%=
         * 好处:
         * 1)写法简单
         * 2)这个符号内部可以默认进行类型转换
         */
        int b = 1;
        b += 2;// 结果等价于 b = b + 2;
        System.out.println("b = " + b);

        /**
         * short s = 1;
         * s += 1;
         * s = s + 1;
         * 问: 这三行代码有无问题?
         * 第三行有错误,类型转换问题
         */
        short s = 1;
        s += 1;// 结果等价于s = s + 1
        //s = (short)(s + 1);
        System.out.println("s = " + s );
    }
}

2.2 算术运算

算术运算就是数学运算

+ 加
- 减
* 乘
/ 除
% 取余
++ 自增
-- 自减
public class Demo4 {
    public static void main(String[] args) {
        /**
         * + 加法
         * 1) 数字相加
         * 2) 字符串拼接
         * 3) 提升结果的数据类型范围(向大的看齐)
         */
        int a = 1;
        int b = 2;
        int c = a + b;// 数字相加
        // 字符串拼接
        System.out.println("c = " + c );

        // 字符串前的+号正常运算,字符串后的统统是拼接字符串
        // 有括号先算括号内
        System.out.println(1 + 1 ); // 2
        System.out.println(1 + 1 + "1" );// 21
        System.out.println(1 + 1 + "1" + 1 ); // 211
        System.out.println(1 + 1 + "1" + 1 + 1 ); // 2111
        System.out.println(1 + 1 + "1" + (1 + 1)); // 212

        int d = 1;
        byte e = 1;
        int f = d + e;// 提升结果的数据类型范围(向大的看齐)
        double g = 1.0;
        double h = d + g;// 2.0

        /**
         * - 减法
         * 1) 只能做数字相减
         */
        System.out.println(1 - 1 );// 0
        int i = 1;
        int j = 2;
        System.out.println(i - j );
        System.out.println(1.0 - 1 );// 0.0

        /**
         *  * 乘法
         *  1) 只能做数字相乘
         */
        System.out.println(1 * 0 );// 0
        System.out.println(2 * 0.0 );// 0.0

        /**
         * / 除法
         * 1) 注意语法问题,除数不能为0
         * 2) 整数相除,除不尽舍弃小数取整!!!!!
         */
        System.out.println(1 / 1 ); // 1
        // System.out.println(1 / 0 ); // 结果是报错
        System.out.println(4 / 2.0 ); // 2.0
        System.out.println(10 / 3 ); // 3
        System.out.println(10 / 4 ); // 2
        // 如果想要保留小数,那就要将其中任何一个数据变成浮点型
        System.out.println(10.0 / 3 );

        /**
         * % 取余,除不尽的余数
         */
        System.out.println(10 % 2 );// 除尽余数0
        System.out.println(10 % 3 );// 除不尽余数1
        // 后续学习中,余数一般 用于 判断奇偶性
        // 偶数除以2的余数是0

        System.out.println(10.0 % 2 );// 0.0
        System.out.println(10.0 % 3 );// 0.0

        // 余数的正负只和前面有关系(了解)
        System.out.println(10 % 3 );// 1
        System.out.println(10 % -3 );// 1
        System.out.println(-10 % 3 );// -1
        System.out.println(-10 % -3 );// -1

        // 优先级问题(先乘除后加减)
        System.out.println(1 + 1 * 2 - 3 / 5);// 3

    }
}
public class Demo5 {

    public static void main(String[] args) {
        /**
         * ++ 让数字自增1
         */
        int i = 1;
        i++;
        System.out.println(i );

        int a = 1;
        int b = a++;// ++在后,先使用后自增
        System.out.println("a = " + a );// a=2
        System.out.println("b = " + b );// b=1

        int a2 = 1;
        int b2 = ++a2;// ++在前,先自增后使用
        System.out.println("a2 = " + a2 );// a2=2
        System.out.println("b2 = " + b2 );// b2=2

        int a3 = 10;
        int b3 = 10;
        int c3 = 10;
        a3 = b3++;// a3=10 b3=11
        c3 = --a3;// a3=9,c3=9
        b3 = ++a3;// a3=10,b3=10
        a3 = c3--;// a3=9,c3=8
        System.out.println("a3 = "+a3);//9
        System.out.println("b3 = "+b3);//10
        System.out.println("c3 = "+c3);//8

        int x = 4;
        int y = (x++)+(++x)+(x*10);
        System.out.println("x = "+x);//6
        System.out.println("y = "+y);//70
    }
}

2.3 关系运算

关系运算,其实用来判断数据之间的关系(是否相等,大于 ,小于…)

符号:
> >= < <= == !=

关系运算后结果是 布尔值: true或者false

public class Demo6 {
    public static void main(String[] args) {
        /**
         * >大于
         * >= 大于等于
         * < 小于
         * <= 小于等于
         * ----
         * 以上这些只能用于数字判断,不能用于字符串
         */
        // 可以用于常量数字运算
        System.out.println(1 > 2 );// false
        System.out.println(1 <= 1 ); // true
        // 也可以是数字变量运算
        int a = 1;
        int b = 2;
        System.out.println(a > b ); // false
        String s1 = "a";
        String s2 = "a";
        // 但是不能做字符串判断大小
        // System.out.println(a > b );

        /**
         * == 判断两边数据是否相等
         * != 判断两边数据是否不等
         */
        System.out.println(1 == 2 );// false
        System.out.println(1 != 2 );// true

        System.out.println("a" == "a" );// true
        // 这些关系运算将来主要用在判断和循环语句中
        
        
        // 判断奇偶性
        // 是偶数输出true,是奇数输出false
        int x = 2;
        System.out.println(x % 2 == 0);
    }
}

2.4 逻辑运算

逻辑运算是基于关系运算升级的一种,逻辑有

  • 与 &
  • 或 |
  • 非 !
    public static void main(String[] args) {
        /**
         * & (and,和)
         * 语法:
         *  boolean 变量 = 布尔表达式1 & 布尔表达式2
         *--- 注意事项
         * 1) &符号两边是两个关系运算
         * 2) 逻辑运算的结果还是布尔值
         *-- 总结
         * 一错就错,全对才对
         */
        System.out.println(1 > 0 & 1 > 0 );// T & T = T
        System.out.println(1 > 0 & 1 < 0 );// T & F = F
        System.out.println(1 < 0 & 1 > 0 );// F & T = F
        System.out.println(1 < 0 & 1 < 0 );// F & F = F

        System.out.println("---------- 华丽分割线 ---------" );
        /**
         * | (or,或)
         * 语法:
         *  boolean 变量 = 布尔表达式1 | 布尔表达式2
         *--- 注意事项
         * 1) |符号两边是两个关系运算
         * 2) 逻辑运算的结果还是布尔值
         *-- 总结
         * 一对就对,全错才错
         */
        System.out.println(1 > 0 | 1 > 0 );// T | T = T
        System.out.println(1 > 0 | 1 < 0 );// T | F = T
        System.out.println(1 < 0 | 1 > 0 );// F | T = T
        System.out.println(1 < 0 | 1 < 0 );// F | F = F

        System.out.println("---------- 华丽分割线 ---------" );
        /**
         * ! (not,非)
         * 语法:
         *     boolean 变量 = !布尔表达式;
         * 作用:
         *     对布尔值取反
         */
        boolean bo1 = !true;
        System.out.println(bo1 );

        boolean bo2 = !(1 > 0);
        System.out.println(bo2 );

        System.out.println(!(1 < 0) | 1 < 0 );
    }

短路与&&,短路或||

       /**
         * 短路与 &&
         *    一错就错,全对才对,
         *    即第一个式子已经错了,后面再执行也无意义,&&就会短路后面式子不执行
         * 短路或 ||
         *    一对就对,全错猜错
         *    即第一个式子已经对了,后面再执行不影响结果,||就短路后面不执行
         */
        int i = 1;
        //System.out.println(1 < 0 & ++i > 1 );// F & T = F
        System.out.println(1 < 0 && ++i > 1 );// F & T = F
        System.out.println("i = " + i );

        // System.out.println(1 > 0 | 1 / 0 == 1 );
        System.out.println(1 > 0 || 1 / 0 == 1 );

2.5 三目运算

二元运算 1+1 a*b

三元运算,是指通过2个符号,3个操作数据

写法: 数据类型 变量 = 布尔表达式 ? true时执行 : false时执行;

执行顺序:

  • 先执行布尔表达式(判断)
  • 如果结果是true,就执行?后,冒号:前,后面不再执行
  • 如果结果是false,跳过?后,直接:冒号后
public class Demo8 {
    public static void main(String[] args) {
        int a = 1 > 0 ? 1 : 0;
        System.out.println("a = " + a );

        // 比较2个数字大小,输出最大值
        int i = 11;
        int j = 2;
        String s = i > j ? "i大,i=" + i : "j大,j = " + j;
        System.out.println(s );

        int x = 11;
        int y = 22;
        int z = 33;
        // 使用三目运算:比较3个数字大小,输出最大值(暂时不考虑相等情况)
        //String s2 = x > y ? (x > z ? "x大,x="+x : "z大,z="+z):(y > z ? "y大,y="+y : "z大,z="+z);
        int s2 = x > y ? (x > z ? x : z):(y > z ? y : z);
        System.out.println(s2 );

        int e = 2;
        int f = 3;
        // 使用三目运算:比较2个数字大小,输出"e > f"or"e < f"or"e == f"
        String s3 = e > f ? ("e > f") : (e < f ? "e < f" : "e == f");
        System.out.println(s3 );
    }
}

三、键盘录入

目前做练习题时 ,数据直接固定写死,没有交互性! 不好玩!

所以,使用键盘录入技术,从外部获得数据,而不是固定写死!

java的键盘录入技术,使用步骤

  • 导包 import java.util.Scanner; (一般会在创建对象时自动导包)
  • 创建对象 Scannner scanner = new Scanner(System.in);
  • 调用方法录入数据 scanner.nextInt()或者scanner.nextLine()
  • 使用变量接收数据
package com.qf.operation;
// 1导包(作用就是在当前Demo9类中可以使用其包下的类Scanner)
import java.util.Scanner;

public class Demo9 {

    public static void main(String[] args) {
        // 2创建键盘录入对象(固定写法)
        Scanner scanner = new Scanner(System.in);
        // 3调用方法准备录入
        /**
         * nextInt() 录入整数数据
         * nextDouble() 录入小数数据
         * next()  录入字符串
         */
        // 4前面用变量接收数据
        System.out.println("请输入整数:" );
        int a = scanner.nextInt(); // 录入整数数据,输入其他数据类型会报错
        System.out.println("输入的整数是: " + a );


        System.out.println("请输入浮点数:" );
        double b = scanner.nextDouble();
        System.out.println("输入的小数是: " + b );


        System.out.println("请输入字符串:" );
        String line = scanner.next();
        System.out.println("输入的是字符串: " + line );
    }
}

day04_运算符_第1张图片

四、练习 [重点]

编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
编写一个程序,从用户输入的三个数字中找到最小的数字并显示出来。
编写一个程序,计算用户输入的3个数字的平均值并显示出来。
编写一个程序,接收用户输入的半径,并计算圆的面积和周长。
编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果。
公式: 华氏 = (摄氏温度 × 9/5) + 32
编写一个程序,计算一个数的平方和立方,并将结果显示出来。
public class Demo10 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // System.out.println("---------- 第一题 ---------- " );
        // System.out.print("请输入a = " );
        // int a = scanner.nextInt( );
        //
        // System.out.print("请输入b = " );
        // int b = scanner.nextInt( );
        //
        // String r = a > b ? "a大,a = " + a : "b大,b = " + b;
        // System.out.println(r );

        // System.out.println("---------- 第二题 ---------- " );
        // System.out.print("请输入数字1,a = " );
        // int a = scanner.nextInt( );
        //
        // System.out.print("请输入数字2,b = " );
        // int b = scanner.nextInt( );
        //
        // System.out.print("请输入数字3,c = " );
        // int c = scanner.nextInt( );
        //
        // String r = a>b?(a>c?"a大,a="+a:"c大,c="+c):(b>c?"b大,b="+b:"c大,c="+c);
        // System.out.println(r );

        // System.out.println("---------- 第三题 ---------- " );
        // System.out.print("请输入数字1,a = " );
        // int a = scanner.nextInt( );
        //
        // System.out.print("请输入数字2,b = " );
        // int b = scanner.nextInt( );
        //
        // System.out.print("请输入数字3,c = " );
        // int c = scanner.nextInt( );
        // double r = (a + b + c) / 3.0;
        // System.out.println("平均值 avg = " + r );

        // System.out.println("---------- 第四题 ---------- " );
        // System.out.print("请输入圆的半径r = " );
        // double r = scanner.nextDouble( );
        // double length = r * 2 * 3.14;
        // double area = 3.14 * r * r;
        // System.out.println("该圆的周长 = " + length );
        // System.out.println("该圆的面积 = " + area );

        System.out.println("---------- 第四题 ---------- " );
        // 公式: 华氏 = (摄氏温度 × 9/5) + 32
        System.out.print("请输入摄氏温度:" );
        double t = scanner.nextDouble( );
        double ht = (t * 9 / 5) + 32;
        System.out.println("转成华氏温度:"+ ht );     
    }
}

五、总结

算术运算符

  • 大部分都是正常使用
  • +法可以做字符串拼接
  • /法 整数相除取整
  • ++ 前++ 后++用法

关系运算

  • 字符串只能比较相等或不等,不能比较大小

逻辑运算

  • 短路 &&,|| 的用法

赋值运算

  • += 和拆开写 什么区别
  • 例如: s += 1 和 s = s + 1

三目运算

  • 数据类型 变量 = 判断式子 ?前面对执行这里 : 前面错执行这里 ;

Scanner是固定格式,照着写

敲代码的技巧: 善用idea的提示,单词不用敲完! 善用快捷键(复制一行,删除一行,注释一行,快速换行,生成变量)

费曼学习法! 讲代码!!

你可能感兴趣的:(#,java2401,开发语言,java,intellij-idea)