Java基础知识的几个注意点

Java基础知识的几个注意点
java中有很多的注意事项,不止是在后期的java中,在基础中也有很多注意点,下面就列举几个.
1.双与&&和双或||的短路效果
与和或在java中是很重要的连接符,在做逻辑判断的时候,基本上离不开与或非,而在使用逻辑判断的时候,我们更多的是使用双与和双或,在使用双与和双或的时候,细心的朋友会发现,有时候结果和我们想象的有点小差别,下面我以一张图举例:
在这里插入图片描述
从上图中我们可以看到,在进行三元运算时,m进行了自增,所以输出结果为2,但是n的值却没有改变,这就是双与的短路效果,因为m在自增前先进行了判断,双与前面的条件不满足,所有双与后面的条件不执行,得到的结果就是m=2,n=2;因为三元运算结果为不成立,所以f=false;
我们再来看双或,在进行三元运算时,x先进行了自增,所有输出结果为2,x自增后,双或前面的条件成立,所以双或后面的条件不执行,所以y=2,同时三元表达式运算结果成立,所以g=true.
“总结:在进行双与判断时,如果前面的表达式不成立,则双与不成立,所以双与后面的表达式不执行.在进行双或判断时,如果前面的表达式成立,则双或成立,双或后面的表达式就不执行了,这就是双与和双或的短路效果.”
2.java中"等等"和"equals"的比较
在java中, 我们经常会进行一些值的比较,这种比较主要是分两种,一种是基础数据类型的比较,一种是引用数据类型比较.
首先是基本数据类型,基本类型都是存在栈里面的,当我们去给一个变量赋值的时候,jvm虚拟机就会去栈中找是否有这个值,如果没有就创建一个新的地址,如果有,就指向这个地址,所以在基本数据类型的比较时,值相同,地址也是相同的,所以直接用"==“比较;”==“永远是比较地址值的.
但是对于引用数据类型来说,可能更多的时候地址值是不同的,那么这个时候我们想比较内容怎么办呢?很简单,我们在Objiect中定义一个方法,这个方法就是equals,当我们没有去重写这个方法是,equals还是相当于”==",比较的是地址值,当我们需要比较内容,而忽略地址值的时候,我们就可以对它进行重写,比如String,ArrayList,Date在这些类当中equals的自身的实现,这个时候比较的就是值是否相等,而不再是比较地址值了;如下图:
在这里插入图片描述
上图中我们可以看到,x和y是直接赋值的,这种情况下,jvm会去字符缓冲区帮我们去找,是否有这个字符串,如果没有,就会帮我们new一个出来,如果有,就直接从该地址中取出,所以x和y的地址就相同了,这个时候再用equals比较时,返回的结果就为true了,而在对于m和n来说,m是jvm在字符缓冲区帮我们的new的,而n则是我们自己在堆中new出来的,这个时候我们需要重写equals方法,所以它们的地址值不同,而内容相同,所以在比较时,结果是还是true;
总结:对基本数据类型来说,用"==就可以比较了,内容相同,地址值也就相同,结果就是相等,否则不等;对于引用数据类型来说,==和基本数据类型用法相同,对引用数据来说,如果没有重写equals方法,equals和=="用法相同,如果重写了equals方法,就只比较值是否相同,而不比较地址值;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值