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);

         }

}

原文地址:https://www.cnblogs.com/man-tou/p/10635875.html