• java语言基础--运算符


    一、算术运算符:

           +、-、*、/、%、++(自加)、--(自减)

           对于++运算符来说:

    可以出现在变量前,也可以出现在变量后

    不管++出现在变量前还是后,总之++执行结束后,变量的值一定会自加1

     1 public class OperatorTest{
     2     public static void main(String[] args) {
     3         
     4         int a = 10;
     5         int b = 3;
     6         System.out.println(a + b);
     7         System.out.println(a - b);
     8         System.out.println(a * b);
     9         System.out.println(a / b);
    10         System.out.println(a % b);
    11         
    12         //重点掌握++和--
    13         //++可以出现在变量前,也可以出现在变量后
    14         int i = 10;
    15         //i变量自加1
    16         i++;
    17         System.out.println(i);//11
    18         
    19         int k = 10;
    20         //k变量自加1
    21         ++k;
    22         System.out.println(k);//11
    23         
    24         //语法:当++出现在变量后,会先做赋值运算,再自加1
    25         int m = 20;
    26         int n =m++;
    27         System.out.println(n);//20
    28         System.out.println(m);//21
    29         
    30         //语法规则:当++出现在变量前时,会先进行自加1的运算,然后再赋值
    31         int x = 100;
    32         int y = ++x;
    33         System.out.println(x);//101
    34         System.out.println(y);//101
    35     }
    36 }

    练习:

     1 public class Test {
     2     public static void main(String[] args) {
     3         //题目
     4         int c = 90;
     5         System.out.println(c++);//90
     6         //分解上面程序:先赋值后运算
     7         //int temp = c++;
     8         //System.out.println(temp);
     9         System.out.println(c);//91
    10         
    11         int d = 80;
    12         System.out.println(++d);//81
    13         System.out.println(d);//81
    14     }
    15 }

    二、关系运算符:

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

    规则:所有的关系运算符的运算结果都是布尔类型,不是true就是false

    在java语言中:

    =:赋值运算符

    ==:关系运算符,判断是否相等

    注意:关系运算符中如果有两个符号的话,两个符号之间不能有空格

     1 public class Test {
     2     public static void main(String[] args) {
     3         
     4         int a = 10;
     5         int b = 10;
     6         System.out.println(a > b);//false
     7         System.out.println(a >= b);//true
     8         System.out.println(a < b);//false
     9         System.out.println(a <= b);//true
    10         System.out.println(a == b);//true
    11         System.out.println(a != b);//false
    12     }
    13 }

    三、逻辑运算符:

    &(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)

          并且                 或者               取反

    特点:逻辑运算符要求两边都是布尔类型,并且最终的运算结果也是布尔类型

    1、&(逻辑与)、|(逻辑或)、!(逻辑非)

     1 public class Test {
     2     public static void main(String[] args) {
     3         
     4         //对逻辑&来说,只要有一边是false,结果就是false
     5         //只有两边同时为true结果才为true
     6         System.out.println(true & true);//true
     7         System.out.println(true & false);//false
     8         System.out.println(false & false);//false
     9         
    10         //逻辑或是只要有一边是true,结果就是true
    11         System.out.println(true | true);//true
    12         System.out.println(true | false);//true
    13         System.out.println(false | false);//false
    14         
    15         //逻辑非:取反
    16         System.out.println(!true);//false
    17     }
    18 }

    2、&&(短路与)、||(短路或)

    短路与 和 逻辑与 有什么区别?

    • 这两个运算符的运算结果没有任何区别,完全相同。
    • 只不过 短路与 会发生短路现象

    短路现象:右边表达式不执行

    什么时候使用&&,什么时候使用&

    • 从效率方面,&&比&的效率高一些
    • 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。
    • 以后的开发中,短路与&&和逻辑与&还是同时并存的
    • 大部分情况下都建议使用短路与&&,只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择逻辑与&

    什么时候发生短路或||现象?

    • 只要有一边true,结果就是true
    • 所以当左边的表达式结果是true的时候,右边的表达式不要执行,此时会短路
     1 public class Test {
     2     public static void main(String[] args) {
     3         //&,&&运行结果一样
     4         System.out.println(true & true);//true
     5         System.out.println(true & false);//false
     6         System.out.println(false & false);//false
     7         
     8         System.out.println(true && true);//true
     9         System.out.println(true && false);//false
    10         System.out.println(false && false);//false
    11         
    12         //短路现象,什么会发生短路现象
    13         int x = 10;
    14         int y = 11;
    15         //逻辑与什么时候为true(两边都为true,结果才是true)
    16         //左边 x>y表达式结果是false了,整个表达式的结果都是false
    17         //按理来说右边的表达式不应该执行
    18         System.out.println(x>y & x>y++);
    19         //通过这个测试得出:x>y++这个表达式执行了
    20         System.out.println(y);//12
    21         
    22         //测试短路与&&
    23         int m = 10;
    24         int n =11;
    25         //使用短路与的时候,当左边的表达式为false的时候,右边表达式不执行,
    26         //这种现象被称为短路现象
    27         System.out.println(m>n && m>n++);
    28         System.out.println(n);//11
    29         
    30     }
    31 }

    四、赋值运算符:

    1、赋值运算符包括:基本赋值运算符 和 扩展赋值运算符

    2、基本赋值运算符:=

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

    注意:扩展赋值运算符在编写的时候,两个符号之间不能有空格

    4、很重要的语法机制:

    • 使用扩展赋值运算符的时候,永远都不会改变运算结果类型

    byte x = 100;

    x += 1;

    x自诞生以来是byte类型,那么x变量的类型永远都是byte类型。不管后面是多大的数字

     1 public class Test{
     2     public static void main(String[] args) {
     3         //赋值运算符“=”右边优先级比较高,先执行右边的表达式
     4         //然后将表达式执行结果放到左边“盒子”中(赋值)
     5         int i = 10;
     6         //重新赋值
     7         i = 20;
     8         byte b = 10;
     9         b = 20;
    10         
    11         /*
    12            以 +=运算符作为代表,学习扩展赋值运算符
    13          其他运算符原理相似
    14          */
    15         int k = 10;
    16         k += 20;//k变量追加20
    17         System.out.println(k);//30
    18         
    19         int m = 10;
    20         //+=运算符类似于下面表达式
    21         m = m + 20;
    22         System.out.println(m);//30
    23         
    24         //研究:i += 10 和 i = i + 10真的完全一样吗?
    25         //答案:不一样,只能说相似,其实本质上并不是完全相同
    26         byte x = 100;
    27         System.out.println(x);
    28         
    29         //分析:这个代码是否能编译通过
    30         //错误:不兼容的类型:从int转换到byte可能有损失
    31         //x=x+1;//编译器检测到x+1是int类型,int类型可以直接赋值给byte类型的变量吗?
    32         
    33         //使用扩展赋值运算符可以吗?
    34         //可以,所以得出结论:x += 1;和 x = x+1;不一样
    35         //其实:x += 1 等同于:x = (byte)(x+1);
    36         x += 1; 
    37         System.out.println(x);//101
    38         
    39         //早就超出byte的取值范围了
    40         x += 199;//x = (byte)(x+199);
    41         System.out.println(x);//44(自动损失精度)
    42         
    43         
    44         int a = 100;
    45         a +=100;
    46         System.out.println(a);//200
    47         
    48         a -=100;
    49         System.out.println(a);//100
    50         
    51         a *= 10;
    52         System.out.println(a);//1000
    53         
    54         a /= 30;
    55         System.out.println(a);//33
    56         
    57         a %= 10;
    58         System.out.println(a);//3
    59         
    60     }
    61 }

    五、条件运算符:(三目运算符)

    语法格式:

    • 布尔表达式 ?表达式1 :表达式2

    执行原理:

    • 布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。
    • 布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果。
     1 public class Test {
     2     public static void main(String[] args) {
     3         
     4         //合法的java语句
     5         //表示声明一个变量,起名i
     6         int  i = 100;
     7         
     8         //错误:不是语句
     9         //The left-hand side of an assignment must be a variable
    10         //100;
    11         
    12         boolean sex = false;
    13         
    14         //分析以下代码是否存在语法错误?
    15         //错误:不是语句
    16         //Void methods cannot return a value
    17         //sex ? '男' : '女';
    18         
    19         //前面的变量的类型不能随意编写
    20         //最终的计算结果是字符型,所以变量也需要使用char类型
    21         char  c = sex ? '男' : '女';
    22         System.out.println(c);
    23         
    24         //错误:不兼容的类型:条件表达式中的类型错误
    25         //char x = sex ? '男' : "女";
    26         //System.out.println(x);
    27         
    28         //这样可以吗
    29         System.out.println(sex ? '男' : "女");//这里很牛,什么类型数据都可以放
    30         
    31         
    32     }
    33 }

    六、字符串连接运算符:

     1 /*
     2    +运算符:
     3    1、+运算符在java语言中有两个作用
     4                作用1:求和
     5                作用2:字符串拼接
     6    2、什么时候求和?什么时候进行字符串拼接?
     7                当+运算符两边都是数字类型的时候,求和
     8                当+运算符两边的任意一边是字符串类型,那么这个+会进行字符串拼接操作。
     9    3、一定要记住::字符串拼接完之后结果还是一个字符串。
    10  */
    11 public class Test1 {
    12     public static void main(String[] args) {
    13         //定义一个年龄的变量
    14         int age = 35;
    15         //+在这里会进行字符串的拼接操作
    16         System.out.println("年龄=" + age);//年龄=35
    17         
    18         int a = 100;
    19         int b = 200;
    20         //+ 加法运算
    21         int c = a + b;
    22         System.out.println(c);//300
    23         
    24         //注意:当一个表达式中有多个加号的时候
    25         //遵循自左向右的顺序依次执行(除非加小括号,小括号优先级高)
    26         //先求和后拼接
    27         System.out.println(a + b + "110");//300110
    28         System.out.println(a + (b + "110"));//100200110
    29         
    30         //在控制台上输出“100+200=300”
    31         //以下有效的运算符+一共有4个,均为字符串拼接操作
    32         System.out.println(a + "+" + b + "=" + c);
    33         
    34         //分析这个结果是多少
    35         //拼接后的结果是 100+200=100200;
    36         System.out.println(a + "+" + b + "=" + a + b);
    37         //小括号里的+是求和操作
    38         System.out.println(a + "+" + b + "=" + (a + b));//100+200=300
    39         
    40         //在java语言中怎么定义字符串类型的变量
    41         //String是字符串类型,String是引用数据类型
    42         //name是变量名,合法标识符
    43         //“jack”是字符串型字面量
    44         String name = "jack";
    45         
    46         //错误:类型不兼容
    47         //String = 100;
    48         
    49         //口诀:加一个双引号"",双引号之间加两个加号++,两个加号中间加变量名:"+变量名+"
    50         System.out.println("登陆成功欢迎"+name+"回来");
    51     }
    52 }
  • 相关阅读:
    进制的转换
    输出蛇型矩阵
    输出弓形矩阵
    找出一个数组中出现次数最多的那个元素
    开灯问题
    find your present
    核反应堆
    Box of Bricks最小移动砖块数目
    超级楼梯
    Bootstrap中的 JavaScript 特效 — 下拉菜单和滚动监听插件
  • 原文地址:https://www.cnblogs.com/llrra/p/14638231.html
Copyright © 2020-2023  润新知