• 02_运算符与分支


    课程内容

    1、变量剩余内容

    2、运算符

    3、键盘录入

    4、分支结构

    变量剩余内容

    变量的注意事项

    1、变量是有作用域(起作用的范围)的。变量在哪个大括号中声明定义的,作用域就在哪个大括号中。

            1、声明定义:带着数据类型的变量名称,就是在声明定义变量

            2、使用:不带着数据类型的变量名称,就是在使用变量

            3、在某个作用域中一旦出现了同名变量的声明,就会报错

            4、某个变量的作用域结束之后,就不能继续使用这个变量了

    2、变量必须先赋值,后使用

    3、变量可以赋值和声明分离

    4、同类型的变量,可以在一个语句中,声明多个,每个声明之间使用都好分隔,格式如下:

            数据类型 变量名1 = 变量值1, 变量名2, 变量名3, 变量名4 = 变量值4, 变量名5;

            例如:int a, b, c = 20, d = 100, e = 666;

            建议不要这么写

    代码示例

    class Demo01_变量注意事项 {

             public static void main(String[] args) {

                      //对变量的声明

                      int a = 10;

                      //对变量的使用

                      System.out.println(a);

     

                      //编译报错

                      //int a = 20;

                     

     

                      {

                               int b = 100;

                               System.out.println(b);

                      }

                      //编译报错,b的作用域已经结束

                      //System.out.println(b);

     

                      int c;

                      //变量必须先赋值后使用

                      //System.out.println(c);

     

                      int d;

                      d = 100;

                      System.out.println(d);

     

                      int x, y, z = 888;//可以在同一行声明多个相同数据类型的变量

                      System.out.println(z);

                     

             }

    }

    数据类型转换之隐式转换(自动转换)

    1、当小范围的数据的数据类型,和大范围的数据的数据类型,这两种数据类型的数据,在互相运算时,会先把小范围类型的数据,提升为大范围类型,然后再进行运算;运算的结果,还是大范围的数据类型。

    2、数据类型范围排行

            byte < short = char < int < long < float < double

    3、注意事项:

            byte、short、char、int在相互运算时,不是转换成较大范围的数据类型,而是统统转换为int

    代码示例

    class Demo02_隐式转换 {

             public static void main(String[] args) {

                      int i = 100;

                      long g = 1000;

     

                      //int result = i + g;编译报错,因为相加结果是long

     

                      byte b = 10;

                      short s = 20;

                      //byte r = b + s;编译报错,因为相加结果是int

             }

    }

    数据类型转换之强制转换

    1、从大范围类型的数据,转成小范围类型的数据的过程,就是强制转换

    2、强制转换的格式:

            转换后的类型 转换后的变量 =  (要转成的类型)需要转换的变量

    3、注意事项:

            强制转换的运算结果,可能和正确结果不一致

    代码示例

    class Demo03_强制转换 {

             public static void main(String[] args) {

                      int i = 100;

                      long g = 1000;

                      long lResult = i + g;

                     

                      int result = (int)lResult;

                      System.out.println(result);

     

                      byte b1 = 10;

                      byte b2 = 20;

                      byte b = (byte)(b1 + b2);

                      System.out.println(b);

     

     

                      byte by1 = 126;

                      byte by2 = 3;

                      byte by = (byte)(by1 + by2);

                      System.out.println(by);

             }

    }

    字符

    1、使用单引号引起来的单个的字母、汉字、数字以及其他的特殊符号,使用char关键字表示。

    2、计算机中存储、计算任何数据,都是使用数字的形式来去完成,字符类型也需要变成数字来进行存储和计算。字符到数字的过程,称为【编码】,给计算机去处理;从数字到字符的过程,称为【解码】,用于给人类阅读。

    3、数字和字符相互转换的对应规则、对应映射关系,称为【编码表】、【字符集】

    4、英文状态的所有符号,都可以通过ASCII码表来找到对应的数字。

    5、ASCII码表图示:

     

    6、其他语言的国家也需要使用计算机,例如欧洲ISO8859-1、GB2312、GBK

    7、为了统一编码形式,出现万国码Unicode,统一使用2个字节来表示一个字符,表示范围是0-65535

    8、改进Unicode为UTF-8,使用1-3个字节来表示一个字符,其中1个字节表示一个英文状态的字符,3个字节表示一个中文状态的字符

    9、无论是哪种编码形式,都兼容ASCII编码表(对于数字0-127,所有的编码表对应的字符都是一样的),所以在英美编程不会碰到任何乱码,但是在其他语言的国家,都会碰到乱码的情况

    10、Java语言中,使用的编码形式Unicode表示字符,声明一个字符类型,统一使用2个字节表示

    11、Java中的字符类型,使用char,可以使用’uxxxx’表示一个字符,u表示使用Unicode编码值,xxxx表示使用4个十六进制数表示Unicode码值(一个十六进制数可以表示为4个二进制数,4个十六进制数正好就是16个二进制数,char类型使用两个字节,16二进制位位)

    代码示例

    class Demo04_字符类型 {

             public static void main(String[] args) {

                      char c1 = 'a';

                      System.out.println(c1 + 0);

     

                      char c2 = 'a';

                      System.out.println(c2 + 5);

     

                      char c3 = (char)(c2 + 5);

                      System.out.println(c3);

     

                      char c4 = '呵';

                      System.out.println((int)c4);

     

                      char c5 = (char)21621;

                      System.out.println(c5);

     

                      char c6 = 'u0061';

                      System.out.println(c6);

     

                      char c7 = 'u5475';

                      System.out.println(c7);

             }

    }

    字符串类型

    1、是一种引用数据类型,变量中存储的是字符串的地址,而不是字符串本身

    2、声明字符串类型变量,使用的单词是一个jdk中定义好的类型,不是一个关键字,String

    3、字符串类型的拼接:

            1、使用“+”来拼接字符串

            2、任意数据类型都可以和字符串进行拼接,先把其他的数据类型转换成字符串类型,然后再和另外一个字符串拼接,结果是一个更长的字符串

    代码示例

    class Demo05_字符串类型 {

             public static void main(String[] args) {

                      //声明一个字符串类型的变量

                      String str = "HelloWorld";

                      System.out.println(str);

     

                      String str1 = "Hello";

                      String str2 = "Java";

                      System.out.println(str1 + str2);

     

                      System.out.println("我的年龄是" + 66);

     

                      System.out.println("正确与否:" + false);

     

                      int a = 1001;

                      int b = 2002;

                      //a = 100, b = 200

                      System.out.println("a = " + a + ", b = " + b);

             }

    }

    字符串练习

    代码示例

    class Demo06_字符串练习 {

             public static void main(String[] args) {

                      System.out.println("5 + 5 = " + 5 + 5);

                      System.out.println("5 + 5 = " + "5" + 5);

                      System.out.println("5 + 5 = 5" + 5);

                      System.out.println("5 + 5 = 5" + "5");

                      System.out.println("5 + 5 = 55");

             }

    }

    变量练习

    定义两个变量,分别int a = 10; int b = 20;

    写代码,交换两个变量的值。

    代码示例

    class Demo07_变量交换 {

             public static void main(String[] args) {

                      int a = 10;

                      int b = 20;

                      //打印两个变量的值

                      System.out.println("a = " + a + ", b = " + b);

                     

                      //交换两个变量的值,声明一个第三方变量

                      int temp = a;

                      a = b;

                      b = temp;

     

                                       

                      //打印交换之后的两个变量的值

                      System.out.println("a = " + a + ", b = " + b);

     

                      int x = 10;

                      int y = 20;

                      System.out.println("x = " + x + ", y = " + y);

                      x = x + y;

                      y = x - y;

                      x = x - y;

                      System.out.println("x = " + x + ", y = " + y);

     

     

                      //使用位运算符交换(m连续^两次n,结果还是m)

                      int m = 10;

                      int n = 20;

                      System.out.println("m = " + m + ", n = " + n);

                      m = m ^ n;

                      n = m ^ n;

                      m = m ^ n;

                      System.out.println("m = " + m + ", n = " + n);

     

                      System.out.println(10 ^ 20 ^ 20);

             }

    }

    运算符

    概述

    1、运算符:用于运算常量和变量的符号,就是运算符

    2、分类:

            算数运算符

            赋值运算符

            比较运算符

            逻辑运算符

            位移运算符

            三元运算符

    基本的算数运算符

    1、用于做基本的数字运算的符号

    2、+          -        *       /        %

    3、+:

            1、表示正数

            2、表示普通的加法

            3、表示字符串的拼接

    4、-:

            1、表示负数

            2、用于减法

    5、/:

            1、整数除以整数,运算结果还是整数,是除法之后的商

            2、如果需要得到小数结果,那么需要将其中一个操作数,写成double类型

    6、%:取余运算符、取模运算符

            1、两个整数相除,不要得到的商,运算结果是相除的余数

            2、运算的结果的符号,只和%前面的操作数的正负有关

            3、作用:1、判断一个数字的奇偶;2、获取一个整数各个位上的数字

    代码示例

    class Demo08_普通的算数运算符 {

             public static void main(String[] args) {

                      System.out.println(7 / 2);

                      System.out.println(7.0 / 2);

                      System.out.println(7 / 2.0);

     

                      System.out.println(7 % 2);

                      System.out.println((-7) % 2);

                      System.out.println(7 % (-2));

                      System.out.println((-7) % (-2));

     

                      //获取135各个位上的数字

                      int n = 135;

                      int ge = n % 10;

                      int shi = n / 10 % 10;

                      int bai = n / 100;

                      System.out.println("个位是:" + ge + ", 十位是:" + shi + ", 百位是:" + bai);

             }

    }

     

    ++、--算数运算符

    1、++:自增运算符

    2、操作的数据:只有变量

    3、效果:在某个变量的基础上,自增1

    4、注意事项:

            1、++可以写在变量的前面、也可以写在变量的后面,单独使用的时候,没有任何区别

            2、如果a++或者++a作为一个表达式,作为一个运算结果来输出、计算的时候,就有区别了:a++先取出原来a的值,然后a再去自增;++a先把a的值自增,然后再取出自增之后的值。

    代码示例

    class Demo09_自增运算符 {

             public static void main(String[] args) {

                      int a = 10;

                      a++;//a = a + 1

                      System.out.println(a);

     

                      ++a;

                      System.out.println(a);

     

     

                      int x = 10;

                      System.out.println(x++);//10,取到的是自增之前的x

                      System.out.println(x);//x毕竟是自增了,所以打印的结果是11

     

                      int y = 100;

                      System.out.println(++y);//101,获取的是自增之后的y

                      System.out.println(y);//101

             }

    }

    练习

    声明两个变量,分别为int x = 10;

    int y = (++x) + (x--) + 10 * (--x);

    不要运行代码,判断代码执行完之后,x和y分别是多少

    代码示例

    class Demo10_自增运算符练习 {

             public static void main(String[] args) {

                      int x = 10;

                      int y = (++x) + (x--) + 10 * (--x);

                      //                 11   11             9

                      //               x=11    x=10                    x=9

                      System.out.println("x = " + x + ", y = " + y);

             }

    }

    赋值运算符

    1、用于给变量赋值的操作符号,就是赋值运算符

    2、作用:把符号右边的值,给了左边的变量

    3、分类:

            基本的赋值运算符:=

            扩展的赋值运算符:+=  -=  *=  /=  %=

                    先将符号左右两边的数据进行算数运算,将运算的结果,赋值给符号左边的变量

    4、注意事项:

            赋值运算符也是运算符,也有运算结果,运算结果就是赋值之后的变量的值

    代码示例

    class Demo11_赋值运算符 {

             public static void main(String[] args) {

                      int a = 10;

                      System.out.println(a);

     

                      System.out.println(a = 20);

     

                      int b = 100;

                      b += 10;

                      System.out.println(b);

     

                      int c = 200;

                      c -= 100;//c = c - 100

                      System.out.println(c);

     

                      int d = 1000;

                      System.out.println(d *= 2);

     

                      int e = 7;

                      System.out.println(e %= 2);

             }

    }

    比较运算符

    1、用于比较数据是否相等以及大小关系的运算符

    2、==  !=  >  <  >=  <=

    3、分类:

            比较相等的运算符:==   !=            可以比较任意数据类型

            比较大小的运算符:>  <  >=  <=          可以比较数值类型:整数、小数和字符

    4、运算结果:

            比较的结果全都为boolean类型,要么是true,要么是false

    代码示例

    class Demo12_比较运算符 {

             public static void main(String[] args) {

                      System.out.println(2 == 3);//false

                      System.out.println(2 != 3);//true

                      System.out.println(2 == 2);//true

                      System.out.println(2 != 2);//false

     

                      System.out.println(12.34 == 12.35);//false

     

                      System.out.println('a' == 'b');//false

                      System.out.println('a' == 97);//true

     

                      System.out.println(true == false);//false

     

                      System.out.println("Hello" == "World");//false

     

                      System.out.println(3 > 3);//false

                      System.out.println(3 >= 3);//true

     

                      System.out.println('a' > 'A');//true

             }

    }

    逻辑运算符

    1、用于处理逻辑数据的运算符

    2、逻辑数据:boolean类型的数据

    3、罗列:&  |  ^  !  &&  ||

    4、&:逻辑与,全真为真,否则为假

            true & true                          true

            true & false                          false

            false & true                          false

            false & false                         false

    5、|:逻辑或,全假为假,否则为真

            true | true                           true

            true | false                           true

            false | true                           true

            false | false                          false

    6、^:逻辑异或,相同为假,不同为真

            true ^ true                           false

            true ^ false                          true

            false ^ true                          true

            flase ^ false                          false

    7、!:逻辑非,遇真为假,遇假为真

            !true                                      false

            !false                                     true

    代码示例

    class Demo13_逻辑运算符 {

             public static void main(String[] args) {

                      boolean tickets = true;

                      boolean onTime = false;

                      boolean result1 = tickets & onTime;

                      System.out.println(result1);

     

                      boolean road1 = false;

                      boolean road2 = true;

                      boolean result2 = road1 | road2;

                      System.out.println(result2);

     

                      boolean age4 = true;

                      boolean age14 = true;

                      boolean result3 = age4 ^ age14;

                      System.out.println(result3);

     

                      boolean age18 = true;

                      boolean isChild = !age18;

                      System.out.println(isChild);

     

             }

    }

    短路逻辑运算符

    1、短路运算符:如果第一个表达式的运算结果,可以决定整个表达式的结果,那么就不去计算第二个表达式的值

    2、短路与:&&

            如果第一个表达式的值,计算结果为false,就不计算第二个表达式的值了,因为无论值是多少,最终结果都是false

    3、短路或:||

            如果第一个表达式的值,计算结果为true,就不计算第二个表达式的值了,因为无论第二个表达式值是多少,最终整体表达式的值都是true

    代码示例

    class Demo14_短路运算符特点验证 {

             public static void main(String[] args) {

                      int m = 10;

                      int n = 20;

                      boolean result1 = (m > 100) & (n++ > 0);

                      System.out.println(n);//21,说明第二个表达式执行了

     

     

                      int x = 10;

                      int y = 20;

                      boolean result2 = (x > 100) && (y++ > 0);

                      System.out.println(y);//20,说明第二个表达式没有执行

     

             }

    }

    练习

    自己验证短路运算符的运算特点

    位移运算符

    1、对数字的二进制形式进行按位移动

    2、<<:左移运算符

            效果:向左移动一位,计算结果是该数字的2倍

    3、>>:右移运算符

            效果:向右移动一位,计算结果是该数字的二分之一

    4、>>>:无符号右移

            效果:确保操作数字是正数,使用无符号右移结果才正确,效率高于右移运算符

    5、位移运算符特点:

            如果乘以除以的数字是2的整数次幂,使用位移运算符的运算效率,远高于乘法运算符和除法运算符

    代码示例

    class Demo15_位移运算符 {

             public static void main(String[] args) {

                      System.out.println(3 << 3);//3左移3位,相当于称了3次2

     

                      System.out.println(7 >> 1);//7右移一位,相当于除以2

     

                      System.out.println(7 >>> 2);//1

     

                      System.out.println((-7) >>> 1);

             }

    }

    三元运算符

    1、可以同时操作三个表达式的运算符

    2、格式:

            表达式1 ? 表达式2 : 表达式3

    3、三个表达式类型:

            表达式1:必须是boolean类型的运算结果

            表达式2和表达式3:可以是任意类型

    4、运算规则和步骤:

            1、计算表达式1的值,true、false

            2、如果表达式1的值为true,就选择表达式2的值作为整个三元表达式的值

            3、如果表达式1的值为false,就选择表达式3的值作为整个三元表达式的值

    代码示例

    class Demo16_三元运算符 {

             public static void main(String[] args) {

                      int a = 100;

                      int b = 20;

                      int max = a > b ? a : b;

                      System.out.println(max);

             }

    }

  • 相关阅读:
    Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)
    纵观 ActiveX 平台的兴衰史,看开发控件的技术演变
    mysql函数
    SQL Server 连接字符串和身份验证
    http Content type
    C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】
    带头结点和不带头结点的链栈基本操作
    小程序开发日记-14悼篮球兄弟
    小程序开发日记-13 NetworkTimeout
    小程序开发日记-12 SSL证书及相关
  • 原文地址:https://www.cnblogs.com/man-tou/p/10635875.html
Copyright © 2020-2023  润新知