我的编程空间,编程开发者的网络收藏夹
学习永远不晚

从0开始学Java:运算符(Operator)与标点符号(Separators)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

从0开始学Java:运算符(Operator)与标点符号(Separators)

文章目录



在这里插入图片描述

  • 运算符: 是一种特殊的符号,用以表示数据的运算、赋值和比较等。
  • 表达式: 用运算符连接起来的式子

在Java中,一共有38个运算符。

在这里插入图片描述

1. 运算符的分类

  • 按照功能划分:

    分类运算符
    算术运算符+-*/%++--
    赋值运算符=+=-=*=/=%=
    关系运算符>>=<<===!=
    逻辑运算符&、`
    条件运算符(条件表达式)?结果1:结果2;
    位运算符(了解)&、`
  • 按照操作数个数划分:

    分类运算符例子
    一元(单目)运算符++、–、!i++、–i
    二元(双目)运算符+、-、*、/、%、>、<=等a+b、10>=9
    三元(三目)运算符表达式1?表达式2:表达式3age>=18?“成年”:“未成年”

2. 算术运算符

算术运算符符号解释
+加法运算,字符串连接运算,正号
-减法运算,负号
*乘法运算
/除法运算,整数/整数结果还是整数
%求余运算,余数的符号只看被除数
++--自增自减运算
  1. 加、减、乘、除、模

    public class OperatorDemo01 {public static void main(String[] args) {int a = 3;int b = 4;System.out.println(a + b);// 7System.out.println(a - b);// -1System.out.println(a * b);// 12System.out.println(a / b);// 计算机结果是0,为什么不是0.75呢?System.out.println(a % b);// 3                System.out.println(5%2);//1System.out.println(5%-2);//1System.out.println(-5%2);//-1System.out.println(-5%-2);//-1//商*除数 + 余数 = 被除数//5%-2  ==>商是-2,余数时1    (-2)*(-2)+1 = 5//-5%2  ==>商是-2,余数是-1   (-2)*2+(-1) = -4-1=-5}}
  2. “+”号的两种用法

    • 第一种:对于+两边都是数值的话,+就是加法的意思

    • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思

      public class OperatorDemo02 {public static void main(String[] args) {// 字符串类型的变量基本使用// 数据类型 变量名称 = 数据值;String str1 = "Hello";System.out.println(str1); // HelloSystem.out.println("Hello" + "World"); // HelloWorldString str2 = "Java";// String + int --> StringSystem.out.println(str2 + 520); // Java520// String + int + int// String+ int// StringSystem.out.println(str2 + 5 + 20); // Java520}}
  3. 自加自减运算

    理解:++ 运算,变量自己的值加1。反之,-- 运算,变量自己的值减少1,用法与++ 一致。

    • 单独使用

      • 变量在单独运算的时候,变量前++和变量后++,变量的是一样的;

      • 变量前++ :例如 ++a

      • 变量后++ :例如 a++

        public class OperatorDemo3 {public static void main(String[] args) {// 定义一个int类型的变量aint a = 3;//++a;a++;        // 无论是变量前++还是变量后++,结果都是4System.out.println(a);}}
    • 复合使用

      • 其他变量放在一起使用或者和输出语句放在一起使用前++后++就产生了不同。

      • 变量前++ :变量先自身加1,然后再取值。

      • 变量后++ :变量先取值,然后再自身加1。

        public class OperatorDemo03 {public static void main(String[] args) {// 其他变量放在一起使用int x = 3;//int y = ++x; // y的值是4,x的值是4,int y = x++; // y的值是3,x的值是4System.out.println(x);System.out.println(y);System.out.println("==========");        // 和输出语句一起int z = 5;//System.out.println(++z);// 输出结果是6,z的值也是6System.out.println(z++);// 输出结果是5,z的值是6System.out.println(z);                int a = 1;        a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1        int i = 1;        int j = i++ + ++i * i++;        } }
    • 小结:

      • ++在前,先自加,后使用;
      • ++在后,先使用,后自加。
  4. 练习

    • (1)获取一个四位数的个位,十位,百位,千位

      public class Test01 {public static void main (String [] args) {//1.定义一个四位数,例如1234int num = 1234;        //2.通过运算操作求出个位,十位,百位,千位int ge =int shi =int bai =int qian =System.out.println(num + "这个四位数个位上的数字是:" + ge);System.out.println(num + "这个四位数十位上的数字是:" + shi);System.out.println(num + "这个四位数百位上的数字是:" + bai);System.out.println(num + "这个四位数千位上的数字是:" + qian);}}
    • (2)自增自减练习

      判断如下代码的运行结果

      public static void main(String[] args){int i = 1;int j = i++;int k = i++ * ++j + ++i * j++;System.out.println("i = " + i);System.out.println("j = " + j);System.out.println("k = " + k);}
      public static void main(String[] args){int i = 1;int j = i++;int k = i++ * ++j + --i * j--;System.out.println("i = " + i);System.out.println("j = " + j);System.out.println("k = " + k);}
      public static void main(String[] args){int i = 1;int j = ++i + i++ * ++i + i++;System.out.println("i = " + i);System.out.println("j = " + j);}
      public static void main(String[] args){int i = 0;int result = ++i/--i;System.out.println("result="+result);}

3. 赋值运算符

注意:所有的赋值运算符的=左边一定是一个变量

赋值运算符符号解释
=将符号右边的值,赋值给左边的变量
+=将符号**左边的值右边的值进行相加操作,最后将结果赋值给左边的变量**
-=将符号**左边的值右边的值进行相减操作,最后将结果赋值给左边的变量**
*=将符号**左边的值右边的值进行相乘操作,最后将结果赋值给左边的变量**
/=将符号**左边的值右边的值进行相除操作,最后将结果赋值给左边的变量**
%=将符号**左边的值右边的值进行取余操作,最后将结果赋值给左边的变量**
  1. 基本赋值运算符课堂案例

    public class OperatorDemo04 {public static void main(String[] args) {int a = 3;int b = 4;a = a + b; System.out.println(a); // 7System.out.println(b); // 4}}
  2. 扩展赋值运算符课堂案例

    public class OperatorDemo04 {public static void main(String[] args) {int a = 3;int b = 4;b += a;// 相当于 b = b + a ; System.out.println(a); // 3System.out.println(b); // 7short s = 3;// s = s + 4; 代码编译报错,因为将int类型的结果赋值给short类型的变量s时,可能损失精度s += 4; // 代码没有报错        //因为在得到int类型的结果后,JVM自动完成一步强制类型转换,将int类型强转成shortSystem.out.println(s);                int j = 1;j += ++j * j++;//相当于  j = j + (++j * j++);System.out.println(j);//5}}

    扩展赋值运算符在将最后的结果赋值给左边的变量前,都做了一步强制类型转换

  3. 练习

    交换两个变量的值
    int m = 1;
    int n = 2;

    int temp=m;m=n;n=temp;

4. 关系运算符/比较运算符

比较运算符,是两个数据之间进行比较的运算,运算结果一定是boolean值true或者false

关系运算符符号解释
<比较符号左边的数据是否小于右边的数据,如果小于结果是true。
>比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<=比较符号左边的数据是否小于或者等于右边的数据,如果大于结果是false。
>=比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是false。
==比较符号两边数据是否相等,相等结果是true。
!=不等于符号 ,如果符号两边的数据不相等,结果是true。
  • 课堂案例

    public class OperatorDemo05 {public static void main(String[] args) {int a = 3;int b = 4;System.out.println(a < b); // trueSystem.out.println(a > b); // falseSystem.out.println(a <= b); // trueSystem.out.println(a >= b); // falseSystem.out.println(a == b); // falseSystem.out.println(a != b); // true}}
  • ​ 练习:判断如下程序的运行结果

    public static void main(String[] args){int a = 1;int b = 2;int c = 0;boolean flag = false;if(flag=true){c = a++ + b;}if(flag=false){c = ++a - b;}System.out.println("a = " + a);System.out.println("b = " + b);System.out.println("c = " + c);}

5. 逻辑运算符

逻辑运算符,是用来连接两个布尔类型结果的运算符(!除外),运算结果一定是boolean值true或者false

逻辑运算符符号解释符号特点
&与,且falsefalse
``
^异或相同为false,不同为true
!falsetrue,非truefalse
&&双与,短路与左边为false,则右边就不看
``
  1. 课堂案例

    public class OperatorDemo06 {public static void main(String[] args) {int a = 3;int b = 4;int c = 5;// & 与,且;有false则falseSystem.out.println((a > b) & (a > c)); System.out.println((a > b) & (a < c)); System.out.println((a < b) & (a > c)); System.out.println((a < b) & (a < c)); System.out.println("===============");// | 或;有true则trueSystem.out.println((a > b) | (a > c)); System.out.println((a > b) | (a < c)); System.out.println((a < b) | (a > c));System.out.println((a < b) | (a < c));System.out.println("===============");// ^ 异或;相同为false,不同为trueSystem.out.println((a > b) ^ (a > c));System.out.println((a > b) ^ (a < c)); System.out.println((a < b) ^ (a > c)); System.out.println((a < b) ^ (a < c)); System.out.println("===============");// ! 非;非false则true,非true则falseSystem.out.println(!false);System.out.println(!true);}}
  2. &&和&区别,||和|区别

    短路与,短路或运算符左边表达式结果可以确定最终结果,则运算符右边表达式不再进行运算,效率高

    • &&& 区别:

      &&&结果一样,&&有短路效果,左边为false,右边不执行;&左边无论是什么,右边都会执行。

    • ||| 区别:

      |||结果一样,||有短路效果,左边为true,右边不执行;|左边无论是什么,右边都会执行。

    public class LogicExer1{public static void main(String[] args){int x = 1;int y = 1;//x==2 ,x++  false  x = 2 左边为false//右边继续//++y  y==2  y=2  y==2成立  右边为true//false & true 结果falseif(x++==2 & ++y==2){x =7;}System.out.println("x="+x+",y="+y);//x=2,y=2}}
    public class LogicExer2{public static void main(String[] args){int x = 1,y = 1;//x==2,x++  左边条件为false,x=2//因为短路与,右边不算//false && ? 结果是falseif(x++==2 && ++y==2){x =7;}System.out.println("x="+x+",y="+y);//x=2,y=1}}
    public class LogicExer3{public static void main(String[] args){int x = 1,y = 1;//x==1,x++  左边为true,x=2//因为是逻辑与,右边继续  //++y, y==1  y=2 右边为false//条件true | false,最终为trueif(x++==1 | ++y==1){x =7;}System.out.println("x="+x+",y="+y);//x=7,y=2}}
    public class LogicExer4{public static void main(String[] args){int x = 1,y = 1;//x==1,x++  左边为true,x=2//因为是短路或,左边为true,右边就不看了//整个条件为trueif(x++==1 || ++y==1){x =7;}System.out.println("x="+x+",y="+y);//x=7,y=1}}
    public class LogicExer5{public static void main (String []  args)  {boolean x = true;boolean y = false;short z = 42;//如果if((z++==42)&&(y==true))条件成立,执行z++,不成立,就不执行z++//左边的条件:z==42,z++  z==42成立,z++变成43//中间虽然是短路与,因为左边现在是true,右边还要看//右边 y==true   不成立//true && false 结果为falseif((z++==42)&&(y==true))z++;//左边为x=false,赋值  结果就为false//中间虽然为短路或,因为左边是false,右边继续看//++z,z==45  ++z变成44,z==45是否成立,不成立//false || false  结果为falseif((x=false) || (++z==45))  z++;System. out.println("z="+z);//44}}
    class  Test4_2  {public static void main (String []  args)  {boolean x = true;boolean y = false;short z = 42;//如果if(y=true)条件成立,接着判断if((z++==42)&&(y==true))z++;//如果不成立,if((z++==42)&&(y==true))z++;不看的//标准//y=true赋值,y就被修改为true,if(true)成立if(y=true){//左边:z==42,z++  成立,z变成43//&&短路与,不满足短路的情况,右边继续//y==true 成立//true && true,结果为trueif((z++==42)&&(y==true)){//z++变成44z++;}}//左边:x=false不成立//中间虽然是短路或,但是没满足短路的情况,右边继续//++z,z==45  ++z变成45,z==45成立if((x=false) || (++z==45)){//z++,变成46z++;}System. out.println("z="+z);//46}}

6. 条件运算符

  • 条件运算符格式:
条件表达式?结果1:结果2
  • 条件运算符计算方式:
    • 条件判断的结果是true,条件运算符整体结果为结果1,赋值给变量。
    • 判断条件的结果是false,条件运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) {    int i = (1==2 ? 100 : 200);    System.out.println(i);//200    int j = (3<=4 ? 500 : 600);    System.out.println(j);//500}
练习

声明三个整型的变量,a,b,c,要求找出最大值
2、声明一个整型的变量,判断它是正数还是负数,还是0


7. 位运算符(了解)

位运算符符号解释
&按位与,当两位相同时为1时才返回1
``
~按位非,将操作数的每个位(包括符号位)全部取反
^按位异或。当两位相同时返回0,不同时返回1
<<左移运算符
>>右移运算符
>>>无符号右移运算符
  • 位运算符的运算过程都是基于补码运算,但是看结果,我们得换成原码,再换成十进制看结果
  • 从二进制到十进制都是基于原码
  • byte,short,char在计算时按照int类型处理
  • 位运算直接对二进制进行位移操作实现数值运算,所以运算效率高

如何区分&,|,^是逻辑运算符还是位运算符?

如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符。

  1. 左移:<<

    运算规则:左移几位就相当于乘以2的几次方

    **注意:**当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位

    byte,short,char在计算时按照int类型处理

    3<<4  类似于  3*24= 3*16 = 48
    -3<<4  类似于  -3*24= -3*16 = -48
  2. 右移:>>

    快速运算:类似于除以2的n次幂,如果不能整除,向下取整

    69>>4  类似于  69/24= 69/16 =4
    -69>>4  类似于  -69/2的4次 = -69/16 = -5
  3. 无符号右移:>>>

    运算规则:往右移动后,左边空出来的位直接补0,不看符号位

    正数:和右移一样

    负数:右边移出去几位,左边补几个0,结果变为正数

    69>>>4  类似于  69/2的4次 = 69/16 =4
    -69>>>4   结果:268435451
  4. 按位与:&

    运算规则:对应位都是1才为1

    1 & 1 结果为1

    1 & 0 结果为0

    0 & 1 结果为0

    0 & 0 结果为0

    9&7 = 1
    -9&7 = 7
  5. 按位或:|

    运算规则:对应位只要有1即为1

    1 | 1 结果为1

    1 | 0 结果为1

    0 | 1 结果为1

    0 & 0 结果为0

    9|7  结果: 15
    -9|7 结果: -9
  6. 按位异或:^

    运算规则:对应位一个为1一个为0,才为1

    1 ^ 1 结果为0

    0 ^ 1 结果为1

    0 ^ 0 结果为0

    9^7  结果为14
    -9^7 结果为-16
  7. 按位取反

    运算规则:

    ​ ~0就是1

    ​ ~1就是0

    ~9  结果:-10
    ~-9  结果:8

8. 运算符优先级

提示说明:

(1)表达式不要太复杂

(2)先算的使用()

  1. 大体的排序:算术 > 位 > 比较 > 逻辑 > 三元 > 赋值

9. 标点符号

在Java中一共有12个标点符号。(后面再一一学习)

  • 小括号()用于强制类型转换、表示优先运算表达式、方法参数列表
  • 大括号{}用于数组元素列表、类体、方法体、复合语句代码块边界符
  • 中括号[]用于数组
  • 分号;用于结束语句
  • 逗号,用于多个赋值表达式的分隔符和方法参数列表分隔符
  • 英文句号.用于成员访问和包目录结构分隔符
  • 英文省略号…用于可变参数
  • @用于注解
  • 双冒号::用于方法引用

各个标点符号的使用在后续章节中一一揭晓。




在这里插入图片描述



来源地址:https://blog.csdn.net/m0_60915009/article/details/133811052

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

从0开始学Java:运算符(Operator)与标点符号(Separators)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录