暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java-操作符

初始化 2021-02-28
222

简要认识操作符

操作符接受一个或多个参数,操作符作用于操作数,生成一个新值,此外,几乎所有的操作符都只能作用于“基本数据类型”,此外还有操作符是“=”、“==”、“!=”,这些操作符能操作所有对象,除此以外,String类支持“+”和“+=”


优先级

当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序,最简单的规则就是先乘除后加减,


运算符的优先级往往记忆起来很生涩,使用括号明确规定计算顺序,代码可读性也会更好


注:输出语句包含“+"操作符,此时的”+“意味着字符串的连接


赋值(=)


赋值使用操作符“=",取右边的值将其赋值给左边,右值可以是任何常数、变量或者表达式,但左值必须是一个明确的、已命名的变量。


对基本数据类型的赋值很简单,基本数据类型存储了实际的数值,而并非指向一个对象的引用,但是在为对象进行赋值时,真正的操作的是对象的引用,将一个对象赋值给另一个对象,实际是将该引用指向到同一个堆空间中同一个地址


Tank类非常简单,t1和t2是它的对象实例,将t2赋值给t1后,它们指向了在堆里分配存储对象的一块相同地址(绑定了相同对象),t1之前指向的那块空间,会被回收,所以该改变t1的值,也会改变t2


这种现象称作”别名现象“,如果想避免这种现象,可以这样写:t1.level = t2.level;

这样便能保证两个对象的相对独立,而不是将t1和t2绑定在相同的对象


自动递增和递减

递减符号“--”,意为“减少一个单位”,递增操作符是“++”,这两个操作符有两种使用方式,前缀式和后缀式,前缀式先执行运算,再生成值,后缀式先生成值后执行运算


关系操作符

关系操作符生成一个boolean结果,它们计算的是操作数的值之间的关系,如果关系为真,关系表达式会生成ture,关系不为真,则生成false,关系操作符==和!=也适用于所有对象


测试对象的等价性


结果并不是ture和false,尽管对象的内容相同,然而对象对象的引用却是不同的,而==与!=比较的就是对象的引用是否指向同一个对象实体(堆空间的地址值是否相同),比较两个对象的实际内容使用equals()方法。


逻辑操作符

逻辑操作符“与“(&&)、”或”(||)、“非“(!),能根据参数的逻辑关系,生成一个布尔值truefalse

逻辑运算符只能应用于布尔值,这是与C和C++所不同的地方


程序的短路

当使用逻辑操作符时,会遇到一种短路现象,即一旦能够明确无误的确定一个布尔值的情况时,就不再计算剩余部分的逻辑表达式

输出显示的结果并无test3()方法内容,test1()方法返回结果为true,所以表达式会继续执行,但test2()方法返回值为false,则返回结果必为false,所以没必要继续计算剩余的表达式,短路也能潜在的将程序性能得到提升。


按位运算符

按位操作符用来操作整数基本类型数据中的单个比特,即二进制位,按位运算符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果


首先让我们来了解一个数的二进制转化

将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零

小数

负数

位运算符



实用青年




部分内容来源Thinking in java

文章转载自初始化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论