java负数怎么表示什么意思 java怎么让一个正数变成负数
老铁们,大家好,相信还有很多朋友对于java负数怎么表示什么意思和java怎么让一个正数变成负数的相关问题不太懂,没关系,今天就由我来为大家分享分享java负数怎么表示什么意思以及java怎么让一个正数变成负数的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
JAVA 中的 -> 是什么意思
本文主要是讲解 Java中的运算符。对于运算符而言是编程参与计算的基础核心内容。最基础的加减乘除取余。到后面的逻辑运算大于小于等于不等于。
本文内容思维导图
先从最简单的算术运算符说起。
算术运算符
算术运算符又分为:一元运算符和二元运算符,并且在 Java中包含三元运算符,就是条件运算符或者叫作三目运算符只是名字不同,含义相同。
一元运算符
一元运算符只有一个变量就可以进行操作。常用的一元运算符就是自加,自减。一共四个一元运算符。
示例代码,这里使用 JShell快速查看结果。
需要注意其中的自加和自减的规则。当运算符在前的时候++ a;运算符的优先级比较高,所以会先处理这个代码,所以可以看到代码里面直接返回了结果 4。但是 a++的时候却没有直接返回结果,因为他的运算符比价低。所以重新调用该变量就会打印出来当前的值。
代码定义如下:
运行查看结果:
二元运算符
二元运算符一共5个。分辨是加减乘除取余(+、-、*、/、%)。
其中,在进行除法运算的时候,遵守除数不能为 0;
如果除数为 0就会报错,错误如下:
代码示例如下:
运行查看结果,编译,运行:
赋值运算符
对于赋值运算符基本上贯穿了整个类的周期。常用的=赋值。和简写赋值和算术运算符的使用方式。赋值运算符有如下图所示的使用方式。
使用 JShell进行测试代码如下:
代码示例如下:
inta=0;
a=3;
System.out.println(a);// 3
a+=3;
System.out.println(a);// 6
a-=3;
System.out.println(a);// 3
a*=3;
System.out.println(a);// 9
a/=3;
System.out.println(a);// 3
a%=2;
System.out.println(a);// 1
比较运算符
比较运算符,也可以说是布尔运算符。主要是比较两个表达式的结果。(表达式)操作符(表达式)
根据上面的运算符进行案例演示,一定要动手练习。更能加深印象。
只要知道比较运算是最终得到一个布尔类型的值。并且在进行比较运算的时候,一定要注意其优先级。代码这次自己动手做吧。有上面的演示,应该很容易就搞定。
逻辑运算符
对于逻辑运算符,主要就是 3个。逻辑与、逻辑或、逻辑非。和数学中的与或非意思一致。
格式:表达式1逻辑运算符表达式2
逻辑运算符大多数情况下会和其他的运算符一起使用,主要做一些简单或复杂的逻辑运算。并且通常都是和 if, for等逻辑表达式一起使用。
简单的说一说,对于逻辑与和逻辑或不同点。逻辑与为第一个表达式和第二个表达式都等于真值的情况下才会表达式成立。逻辑或是第一个表达式为真值的情况下,就不会在执行第二个表达式。因为不管第二个表达式是否成立,该逻辑运算都是真值了。
位运算符
对于任何编程语言而言,最终的操作都是二进制表示,因为计算机只认识二进制,而八进制,十进制或者十六进制都是为了让开发人员方便开发。对于 Java来说,也可以针对数的某个值进行运算。这就需要位运算符的参与了。也是为了方便对二进制进行操作。
位运算符主要有一下运算符:
位与&
按位与和逻辑运算符的逻辑与很类似,一个比较的表达式,一个是按照位来进行判断。在二进制中,位与的判断为都为 1的记做 1否则记做 0。
按位与规则如下:
0& 0= 0;
0& 1= 0;
1& 0= 0;
1& 1= 1;
先看一个都是正整数的值 10& 2。
最终得出结果 0000 1010& 0000 0010= 0000 0010转换成十进制就是2。
对于负值的位与运算有点区别的地方就是参与运算的是补码。
举例说明: 10&-2
具体如何得到补码,可以参考我之前写的文章基础类型的相互转换。这里对于负值的情况需要了解什么是原码,反码和补码。参与运算的是补码。-2的原码是 1000 0010反码是 1111 1101补码在反码的基础最后一位加 1得到1111 1110。
最终结果得到 0000 1010& 1111 1110= 0000 1010十进制也就是 10。
这个时候怎么校验结果是否正确呢?直接写 Java代码就好了,打开 jshell:
位或|
按位或,和逻辑或很类似,只要二者有一位 1结果就是 1。
按位或规则如下:
0| 0= 0;
0| 1= 1;
1| 0= 1;
1| 1= 1;
根据上面的运算得到了 10| 2= 10。
负值有略有不同。
还是要灵活运用原码反码和补码,特别是负数的情况下,因为正数的原码和补码一致。
位反~
按位反,和逻辑非类似。是对位进行直接取反。
按位反规则如下:
~1= 0;
~0= 1;
先用 2进行运算处理:
在进行-2的运算操作
-2的原码需要转换成补码,用补码进行取反运算。得到 1的二进制。
代码演示如下:
位异或 ^
位异或是基于二进制的位运算。采用符号 XOR在 Java中使用 ^进行表示。两个值相同取 0,不同的取 1。
按位异或规则如下:
1 ^ 1= 0;
0 ^ 0= 0;
1 ^ 0= 1;
0 ^ 1= 1;
举例 10 ^ 2
举例 10 ^-2
代码演示结果的准确性:
异或在代码优化和实际的工作中会经常用到。后续实战中用到了在详细分析用法,现在知道进行异或运算即可。
位左移<<
将一个操作数进行二进制位往左移,移动后空出来的低位用 0进行填充。移除的高位舍去。高位丢弃,低位补零。
操作数<<移动的位数
举例说明 10<< 2
位左移代码演示:
位右移>>
将一个操作数进行二进制往右移,移动后,有两种情况,一种有无符号一种是有符号。也就是最高位为 0移动后高位补 0,如果最高位(符号位)为 1,移动后空缺位都为 1.
操作数>>移动的位数
举例说明 10>> 2
对于负数举例-2>> 2空缺位补 1:
位右移代码演示:
注意这两者的区别。
无符号位右移>>>
这个是和右移操作上是一致的,但是不管是否最高位(符号位)为 1,空缺位都使用 0进行补齐。
操作数>>>移动的位数
举例说明 10>>> 2
对于负数来说。这里有点区别,因为对于负值来说,上面其实都是 32位,为了让大家看起来舒服转换成了对应的 8位的。因为无符号位右移会改变正负值,所以 32位的负值和 8位的负值是不一致的。
并且 Java在处理 byte, short, char等值进行移位操作前,会先将类型转换成 int因为 int占用 32位。
所以-2>>> 2的时候,8位运算应该是如下:
因为会先转换成 32位。所以 32位的-2等于如下:
也就是结果: 1073741823
无符号位右移代码如下:
理解原理。更能发现问题。
类型比较运算符
这里说的类型比较是对象的比较。判断每个定义的变量是否是某个类。该类可以是(接口、抽象类)。
语法规则:
boolean=变量 instanceof类
举例说明:
运行查看结果:
这里需要注意:
null值是没有引用的,所以和任何值都不相等。
instanceof比较的是引用类型,不能用于基础类型的比较。
条件(三目)运算符
三目运算在 Java中只有一个就是?:
三目运算的语法格式:
`布尔表达式?表达式1:表达式2`大部分情况下,对于三目运算是 if和 else的简写。举例说明:
inta=1;intb=2;Stringmsg=a>b?"a比 b大":"a比 b小";
System.out.println(msg);
//上面的结果和下面一致
if(a>b){
msg="a比 b大!";
}else{
msg="a比 b小!";
}
//msg是"a比 b小!"
运算符的优先级
所有的数学运算都是从左向右进行运算的,对于 Java来说大部分运算也是遵守从左向右的规则。但是一元运算符,赋值运算符和三目运算符例外。他们是从右向左进行运算。
运算符的内容告一段落,接下来就是开始逻辑表达式的学习。教程编写不易。希望各位大看官点赞收藏加关注。更多内容大放送。
java怎么让一个正数变成负数
你这个问题过于模糊啊,负数变正数Math.abs(),获取绝对值。
但是负数变正数,Math里貌似没有,这种情况下,可以自己定义一个函数,这里说下大致思路:将该数取出来,判断是否大于0,大于0则为正数,这时候下一步就是:将其变负数,根据数学的性质,正数与其相反数之和为0,假设一个正数 int a=5,要将其变为负数,只要a-2a它就是为一个负数了
java中如何判断获取的值是负值
我晕啊,判断值正负的标准不就是是否大于0吗?这道理在哪里都通用,在你这里也只能通过这个方法来判断!不管你想在哪里进行运算,只要在你想进行判断的地方加上判断就可以了:
if(value< 0){//在这里填入代码,进行负值的处理,比如你想在是负值的时候输出警告信息,那么就直接用System.out.println输出字符串;如果你想在负值的时候不做任何处理,这里不要写任何代码}
else{//在这里填入代码,进行正值的处理,比如你想在正值的时候才能进行加减运算。}
关于java负数怎么表示什么意思和java怎么让一个正数变成负数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。