Java Review (三、运算符),java面试技巧和注意事项

本文详细介绍了Java中的各种运算符,包括除法、求余、自加自减、赋值、位运算、比较和逻辑运算,以及在面试和学习中的重要性。还提到了一份针对Java开发者的学习资源,涵盖了基础知识、算法、数据库、框架和技术深度等内容。
摘要由CSDN通过智能技术生成
  • /: 除法运算符。

除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果 也是整数,就是将自然除法的结果截断取整,例如19/4的结果是4,而不是5。如果除法运算符的两个操作数都是整数类型,则除数不可以是0,否则将引发除以零异常。

但如果除法运算符的两个操作数有一个是浮点数,或者两个都是浮点数,则计算结果也是浮点数, 这个结果就是自然除法的结果。而且此时允许除数是0,或者0.0,得到结果是正无穷大或负无穷大。

  • %: 求余运算符。

求余运算的结果不一定总是整数,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数。由于求余运算也需要进行除法运算,因此如果求余 运算的两个操作数都是整数类型,则求余运算的第二个操作数不能是0,否则将引发除以零异常。如果 求余运算的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或。.0,只是求余运算 的结果是非数:NaN= 0或0.0对零以外的任何数求余都将得到。

  • ++:自加。

该运算符有两个要点:①自加是单目运算符,只能操作一个操作数;②自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或表达式。运算符既可以出现在操作 数的左边,也可以出现在操作数的右边。但出现在左边和右边的效果是不一样的。如果把++放在左边, 则先把操作数加1,然后才把操作数放入表达式中运算;如果把++放在右边,则先把操作数放入表达式 中运算,然后才把操作数加1。

int a = 5;

//让a先执行算术运算,然后自加 ,b的值是11

int b = a++ + 6;

int a = 5;

//让a先自加,然后执行算术运算,b的值是12

int b = ++a + 6;

  • - -:自减。也是单目运算符,用法与"基本相似,只是将操作数的值减1。

Java并没有提供其他更复杂的运算符,如果需要完成乘方、开方等运算,则可借助于java.lang.Math 类的工具方法完成复杂的数学运算。

赋值运算符

=======================================================================

赋值运算符用于为变量指定变量值,与C类似,Java也使用 =作为赋值运算符。通常,使用赋值运 算符将一个直接量值赋给变量。

int a=5;

也可使用赋值运算符将一个变量的值赋给另一个变量。

int a=5;

int b=a;

位运算符

======================================================================

Java支持的位运算符有如下7个。

  • &: 按位与。

  • |: 按位或。

  • 〜:按位非。

  • ^:按位异或。

  • << : 左移运算符。

  • >>:右移运算符。

  • >>>:无符号右移运算符。

位运算符的基本运算规则

设A = 0011 1100(2) 60(10)    B = 0000 1101(2) 13(10)

| 操作符 | 描述 | 例子 |

| — | — | — |

| & | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |

| | | 如果相对应位都是 0,则结果为 0,否则为 1 | (A |

| ^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |

| 〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |

| << | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |

| >> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |

| >>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |

比较运算符

=======================================================================

比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值(true或false),Java 支持的比较运算符如下:

  • >:大于,只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值,则返回true。

  • >=:大于等于,只支持左右两边操作数是数值类型。如果前面变量的值大于等于后面变量的值, 则返回true。

  • <:小于,只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回trueo

  • <=:小于等于,只支持左右两边操作数是数值类型。如果前面变量的值小于等于后面变量的值, 则返回true。

  • ==/=:等于,如果进行比较的两个操作数都是数值类型,即使它们的数据类型不相同,只要它们 的值相等,也都将返回true——例如97 = 'a’返回true, 5.0 = 5也返回true;如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象才会返回true;Java也支持两个boolean类型的值进行比较,例如,true = false 将返回false 0

基本类型的变量、值不能和引用类型的变量、值使用==进行比较;boolean类型的变量、值不能与其他任意类型的变量、值使用=进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用=进行比较.

  • !=:不等于,如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要 它们的值不相等,也都将返回true;如果两个操作数都是引用类型,只要两个引用指向的不是同一个对象就会返回true。

逻辑运算符

=======================================================================

  • && :与,当且仅当两个操作数都为真,条件才为真。

  • & :不短路与,作用与&&相同,但不会短路。

  • | | : 或,如果任何两个操作数任何一个为真,条件为真。

  • |:不短路或,作用与||相同,但不会短路

  • !: 非,用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。

对短路逻辑或||而言,如果第一个操作数返回true, ||将 不再对第二个操作数求值,直接返回true;不短路与|则两边都要判断。

int a = 5;//定义一个变量;

boolean b = (a>4)||(a++<10);

//使用短路逻辑运算符的结果为5

System.out.println(a);

boolean c = (a>4)&(a++<10);

System.out.println(“a的结果为”+a);

boolean c = (a>4)&(a++<10);

//使用不短路逻辑运算符的结果为6

System.out.println(“a的结果为”+a);

&与&&的区别与此类似:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数。

int a = 5;//定义一个变量;

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

  • Java基础部分

  • 算法与编程

  • 数据库部分

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

[外链图片转存中…(img-INysZi6n-1711136628260)]

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值