当前位置:   article > 正文

【Java】运算符详解_请写出java中所有运算符极其含义

请写出java中所有运算符极其含义

目录

前言

一、算术运算符

1、算术运算符一览

2、案例详解

1)/与%的使用

2)++与- - 

二、关系运算符

1、关系运算符一览

2、案例详解

三、逻辑运算符

1、逻辑运算符一览

2、逻辑运算规则

1)&与&&

2)|与||

3)!与^

四、赋值运算符

1、赋值运算符一览

2、案例讲解

五、三元运算符

六、运算符的优先级

七、标识命名规范

八、关键字与保留字

1、关键字

2、保留字

九、键盘输入语句


前言

运算符是构成Java语句的重要组成部分,运算符是一种特殊的符号, 用以表示数据的运算、 赋值和比较等。其分类如下:

  • 算术运算符
  • 赋值运算符
  • 关系运算符 [比较运算符]
  • 逻辑运算符
  • 位运算符
  • 三元运算符

一、算术运算符

算术运算符是对数值类型的变量进行计算的,如基本的加减乘除。

1、算术运算符一览

算术运算符
运算符运算范例结果
+正号+77
-负号b=3;-b-3
+3+811
*6*636
/5/51
%取模(取余)11%92

         ++

         ++

 自增(前):先运算后使用

 自增(后):先使用后运算

    a=2;b=++a;

    a=2;b=a++;

   a=3;b=3;

   a=3;b=2;

         - -

         - -

 自减(前):先运算后使用

 自增(后):先使用后运算

    a=2;b=++a;

    a=2;b=a++;

   a=1;b=1;

   a=1;b=2

+字符串相加“hello”+“world”“hello world”

2、案例详解

1)/与%的使用

我们见如下代码:

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. // /的使用
  5. System.out.println(10 / 4); //运算结果为2
  6. System.out.println(10.0 / 4); //运算结果为2.5
  7. double d = 10 / 4; //运行结果为2.0
  8. System.out.println(d);
  9. }
  10. }

通过上面的代码我们可以看出/操作符与我们之前在数学中的运算方式不同,比如第一个打印语句中的内容“10/4”,在我们之前的认识中其结果为2.5,但是最后的运行结果为2,这是因为对于“/”操作符来说如果左右两边的操作数都为整数其会将小数部分去除,保留整数部分,这是计算机的规则。

那么我们想要保留小数部分我们应该怎么做呢?我们只需要将其中一个或两个整数改为小数,这样就可以实现小数除法。例如第二个打印内容。

我们再来看“double d = 10 / 4;”语句,运算结果为2.0,我们一起来分析一下这个过程:先进行10/4的运算得到2,再进行隐式数据类型定义转换,将整型转换成double型。

我们再来看“%”的使用:

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. // % 取模 ,取余
  5. System.out.println(-10 % 3);
  6. System.out.println(10 % 3);
  7. System.out.println(10 % -3);
  8. System.out.println(15 % -3);
  9. }
  10. }

% 的本质其实是一个公式:

a % b = a - a / b * b

我们先来分析-10 % 3。代入公式得:-10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1

后面几条语句运算方式同上,可以自己动手算一算,语句结果如下:

2)++与- - 

这里只讲解前置++与后置++,因为++与--原理一致。看下面一段代码:

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. //++的单独使用
  5. //
  6. int i = 10;
  7. i++;
  8. ++i;
  9. System.out.println("i=" + i);//12
  10. //++的表达式使用
  11. /*前++: ++i 先自增后赋值
  12. 后++: i++先赋值后自增*/
  13. int j = 8;
  14. int k = ++j;
  15. int a = 5;
  16. int b = a++;
  17. System.out.println("k=" + k + " j=" + j);
  18. System.out.println("a=" + a + " b=" + b);
  19. }
  20. }

当++单独使用时,无论是前置还是后置,都相当于 i = i + 1;而当其作为表达式语句时,前置与后置分别等价以下情况:

int j = 8; int k = ++j   等价于  j = j + 1; k = j;

int a = 5; int b = a++  等价于  b = a;  a = a++;


二、关系运算符

1、关系运算符一览

关系运算符
运算符运算范例结果
==相等于8 == 7false
!=不等于8 != 7true
<小于8 < 7false
>大于8 > 7true
<=小于等于8 <= 7false
>=大于等于8 >= 7true
instanceof检查是否是类的对象“hhh” instanceof Stringtrue

2、案例详解

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. int a = 9;
  5. int b = 8;
  6. System.out.println(a > b); //T
  7. System.out.println(a >= b); //T
  8. System.out.println(a <= b); //F
  9. System.out.println(a < b);//F
  10. System.out.println(a == b); //F
  11. System.out.println(a != b); //T
  12. }
  13. }

关系运算符的结果都是boolean类型,也就是说结果要么是true,要么是false。关系运算符比较简单,还有一个注意的点是比较运算符“==”不要误写成赋值运算符“=”。


三、逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值

1、逻辑运算符一览

逻辑运算符
aba & ba && ba | ba || b!aa ^ b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsetruefalsefalsefalsefalsetruefalse

2、逻辑运算规则

a&b:&-逻辑与     规则:a和b同时为true,则结果为true,否则为false

a&&b : &&-叫短路与     规则:当a和b同时为 true ,则结果为 true,否则为 false
a|b : |-叫逻辑或     规则: a和b只要有一个为 true ,则结果为 true,否则为 false
a || b : ||-叫短路或     规则:a和b只要有一个为 true ,则结果为 true,否则为 false
!a : !-叫取反,或者非运算。 当 a 为 true, 则结果为 false, 当 a 为 false 是, 结果为 true
a^b: ^-叫逻辑异或,当a和b不同时,则结果为 true, 否则为 false

1)&与&&

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. //&&短路与使用
  5. int age = 50;
  6. if(age > 20 && age < 90) {
  7. System.out.println("abcdefg");
  8. }
  9. //&逻辑与使用
  10. if(age > 20 & age < 90) {
  11. System.out.println("12345678");
  12. }
  13. }
  14. }

&和&&的判断条件一致,即只要当左右两边都为true时才为true。那么&与&&之间的区别是什么呢?区别如下:

  • &&短路与: 如果第一个条件为 false, 则第二个条件不会判断, 最终结果为 false, 效率高
  • & 逻辑与: 不管第一个条件是否为 false, 第二个条件都要判断, 效率低

2)|与||

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. //||短路或使用
  5. int age = 50;
  6. if(age > 20 || age < 30) {
  7. System.out.println("abcdefg");
  8. }
  9. //&逻辑与使用
  10. if(age > 20 | age < 30) {
  11. System.out.println("12345678");
  12. }
  13. }
  14. }

|与||的判断条件也是一致的,我们来看看它们的区别:

  • ||短路或: 如果第一个条件为 true, 则第二个条件不会判断, 最终结果为 true, 效率高
  • |逻辑或: 不管第一个条件是否为 true, 第二个条件都要判断, 效率低

在开发中比较常用的是&&与||。

3)!与^

!是取反操作即当原表达式为真时,取反后即为假,若原表达式为真,则相反。

^  是逻辑异或,a^b,当a与b不同时,则结果为true,否则为false

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. //! 取反的使用
  5. System.out.println(60 > 20); //T
  6. System.out.println(!(60 > 20)); //F
  7. //a^b:逻辑异或的使用
  8. boolean b = (10 > 1) ^ ( 3 > 5);
  9. System.out.println("b=" + b);//T
  10. }
  11. }

四、赋值运算符

1、赋值运算符一览

基本赋值运算符=
复合赋值运算符+=,-=,*=,/=,%=,...

2、案例讲解

关于复合赋值运算符这里只讲解+=以及/=因为其他的运算规则一致。

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. int n1 = 10;
  5. n1 += 4;// n1 = n1 + 4;
  6. System.out.println(n1); // 14
  7. n2 /= 3;// n2 = n2 / 3;//4
  8. System.out.println(n2); // 4
  9. }
  10. }

n1 += 4其等价于n1 = n1 + 4,而n2 /= 3其等价于n2 = n2 / 3。

赋值运算符的特点:

  1. 运算顺序从右往左
  2. 赋值运算符的左边 只能是变量,右边 可以是变量、 表达式、 常量值
  3. 复合赋值运算符会进行类型转换(代码如下)
  1. byte b = 3;
  2. b += 2; // 等价 b = (byte)(b + 2);
  3. b++; // b = (byte)(b+1);

五、三元运算符

三元运算符也称为三目运算符,其基本语法为:

条件表达式 ?表达式1 :表达式2

运算规则为:若条件表达式为真则执行表达式1,为假则执行表达式2。

举例:

  1. public class CSDN {
  2. //编写一个main方法
  3. public static void main(String[] args) {
  4. int a = 10;
  5. int b = 99;
  6. int result = a > b ? a++ : b--;
  7. System.out.println("result=" + result);
  8. System.out.println("a=" + a);
  9. System.out.println("b=" + b);
  10. }
  11. }

a的值为10,b的值为99,即a>b条件表达式为假,返回b--,先返回b的值,然后在进行b-1的操作。注意:表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)。

三目运算符可以转换为if...else语句。


六、运算符的优先级

运算符有不同的优先级, 所谓优先级就是表达式运算中的运算顺序。 如下表, 上一行运算符的优先级总优先于下一行。只有单目运算符、 赋值运算符是从右向左运算的,其他都为从左向右的。

运算符优先级
.   ()   {}   ;   ,
R——>L++   --   ~   !(data type)
L——>R*   /   %
L——>R+   -
L——>R<<   >>   >>>   位移
L——>R<   >   <=   >=   instanceof
L——>R==   !=
L——>R&
L——>R^
L——>R|
L——>R&&
L——>R||
L——>R?   :
R——>L=   *=   /=   %=
+=   -=   <<=   >>=
>>>=   &=   ^=   |=

七、标识命名规范

这里只进行几个基本的规范,更加详细的见文档。

  1. 包名: 多单词组成时所有字母都小写: aaa.bbb.ccc
  2. 类名、 接口名: 多单词组成时, 所有单词的首字母大写: XxxYyyZzz [大驼峰]
  3. 变量名、 方法名: 多单词组成时, 第一个单词首字母小写, 第二个单词开始每个单词首字母大写: xxxYyyZzz [小驼峰, 简称 驼峰法]
  4. 常量名: 所有字母都大写。 多单词时每个单词用下划线连接: XXX_YYY_ZZZ

八、关键字与保留字

1、关键字

被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)。关键字中所有字母都为小写

用于定义数据类型的关键字class、interface、enum、byte、short、int、long、float、double、char、boolean、void
用于定义数据类型值的关键字true、false、null
用于定义流程控制的关键字if、else、switch、case、default、while、do、for、break、continue、return
用于定义访问权限修饰符的关键字private、protected、public
用于定义类、函数、变量修饰符的关键字abstract、final、static、synchronized
用于定义类与类之间关系的关键字extends、implements
用于定义建立实例及引用实例、判断实例的关键字new、this、super、instanceof
用于包的关键字package、import
用于异常处理的关键字try、catch、finally、throw、throws
其他修饰符关键字native、strictfp、transient、volatile、assert

2、保留字

现有 Java 版本尚未使用, 但以后版本可能会作为关键字使用。 自己命名标识符时要避免使用这些保留字: byValue、 cast、 future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、 const。


九、键盘输入语句

在编程中,我们需要提高程序的灵活性,需要接收用户输入的数据,就可以使用键盘输入语句来获取。需要一个 扫描器(对象), 就是Scanner

方法:

  1. 导入该类的所在包, java.util.*
  2. 创建该类对象(声明变量)
  3. 调用里面的功能
  1. import java.util.Scanner; //把Java.util下的Scanner类导入
  2. public class Import {
  3. //编写main方法
  4. public static void main(String[] args)
  5. {
  6. //演示接受用户的输入
  7. //步骤
  8. //Scanner类 表示 简单文本扫描器,在Java.util包
  9. //1.引入/导入Scanner类所在的包
  10. //2.创建Scanner对象,new 创建
  11. // myScanner就是Scanner类的对象
  12. Scanner myScanner = new Scanner(System.in);
  13. //3.接收用户输入的信息使用 相关的方法
  14. System.out.println("请输入名字");
  15. String name = myScanner.next();//当程序执行到next方法时,会等待用户输入~
  16. System.out.println("名字=" + name);
  17. }
  18. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/290876?site
推荐阅读
相关标签
  

闽ICP备14008679号