Java学习笔记:运算符

时间:2023-02-16 16:27:23

Java运算符

Java中有进行运算的运算符,不仅仅可以进行数值处理,其中加号还可以用于连接字符串,下面就开始介绍这些运算符的使用要点。

1、算术运算符:

算术运算符分以下几类(对一个数值进行处理的运算符称为一元的运算符,其他类似):

  一元运算符:+(取正)-(取负) 

用法:放在数值前面,用来表示数值是大于0还是小于0,如+6,-5;

  二元运算符:+ (加)、-(减)、 * (乘)、/(除)、 %(取余)

用法: 处理两个数值,和通常数学上的运算符作用相同,假设先声明一个int类型的变量x,那么就可以计算以下语句了:

如:x = 6 + 5;将两个数值相加,这条语句执行完成后,x等于11

x = 6 - 5;一个数值减去另一个数值,这条语句执行完成后,x等于1

x = 6 * 5;求两个数的乘积这条语句执行完成后,x等于30

x = 6 / 5;一个数除以另一个数。这条语句执行完成后,x等于1,这里要说明下为什么是1。因为x必须是个整数(声明x时,x为int类型),可以理解为,如果x是个整型,那么执行除法的时候,x只能取结果的整数部分。如果x为double类型,那么x可以取完整的结果,包括整数部分和小数部分。;

x = 6 % 5;一个数除以另一个数,求其余数(模),这条语句执行完成后,x等于1

public class Test1 {

public static void main(String[] args) {
// 进行数值计算
int a,b,c,d,e,f;
a = 6 + 5;
b = 6 - 5;
c = 6 * 5;
d = 6 / 5;
e = 6 % 5;
System.out.println(+15);//取正的15;
System.out.println(-15);//取负的15;
System.out.println("6 + 5等于 "+a);//输出6 + 5的数值
System.out.println("6 - 5等于"+b);//输出6 - 5的数值
System.out.println("6 * 5等于"+c);//输出6 * 5的数值
System.out.println("6 / 5等于"+d);//输出6 / 5的数值
System.out.println("6 % 5等于"+e);//输出6 % 5的数值
}

}

注意, 最好的情况下,等号(暂且这样称呼吧,在Java中,其实应该是赋值号)左右的类型必须相等。如上述例子,左边声明的是int类型,右边计算得到的结果,也必须是int类型,不然会出现与预期不同的结果,如6 / 5在代数上应该得到一个double类型的1.2,但左边是个int类型的x,且右边是两个整型想除,所以x只能取1,小数部分被省去。 如果想获得带有小数部分的,那么必须把x声明称double类型,且右边除数和被除数至少要有一个是double类型的(带有小数点的就是double类型)。有些情况下,左右两边的类型不相等。那么要进行类型转换,如果左边的 数值类型级别高于右边的优先级,那么运行时会进行隐性转换,且 代码运行不会出错,但这样可能会得到非预期的计算结果。如果左边的数值级别低于右边的,那么会报错,这时就需要进行强制类型转换。关于强制类型转换,参考 这篇文章的2.7节

可能你已经注意到在上一段话中将数值类型加重了,这是因为这里只是计算数值类型,如int、double,而不考虑char类型。数值类型的级别从低到高排列为:byte---> short---> int---> long---> float---> double

  三元运算符:c = a > b? a:b 格式说明:判断语句?语句1:语句2。当判断条件为真,即a大于b的时候,执行语句1,c就等于a(也就是冒号之前的值),否则执行语句2,c等于b;这整个运算符包括一个关系运算符(可以是“>”"<""!="等,详见下一小节),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。

递增与递减运算符:++(自增1) - -(自减1)。这个运算符是Java由C++继承而来的。因为在编程时,加1或减1的操作是很常见的。注意:递增和递减运算符只能用于变量,不能用于常量或算术表达式本身。如果在算术表达式中对变量使用递增和递减运算符,运算符放在变量之前,是先对变量进行计算,然后在计算算术表达式;如果运算符放在变量之后,先计算算术表达式,再对变量进行自增或自减操作。演示代码如下。

public class Test2 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 5,b = 6,c,n = 3,x = 4, y = 4;
int result1, result2;
c= a > b? a : b;
result1 = n * (++x);
result2 = n * (y++);
System.out.println("c的值为"+c);
System.out.println("result1的值为"+result1);
System.out.println("result2的值为"+result2);
}

}
输出结果为:

c的值为6
result1的值为15
result2的值为12

二、关系运算:
  等于符号:==(注意,这是Java中判断 数值是否相等的符号,且不能用于判断字符串是否相等),不等于符号: != ,大于符号:>, 小于符号:<,大于等于符号: >= ,小于等于符号: <= 。
三、位运算符 逻辑运算符:
  位运算符
用于对二进制数进行处理,有: 与(&)、非(~)、或(|)、异或(^)
  &:当两边相同操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
  | :当两边相同操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
  ~:0变1,1变0
  ^:两边相同的位不同时,结果为1,否则为0.如1100^1010=0110
   逻辑运算符用于对一个boolean值进行操作。

  与(&&)、非(!)、或(||)。一个&&的例子,表达式:(number >= 80)&& (number < 90)。假设number为95,那么先计算第一个子表达式(number >= 80)为true,计算第二个子表达式(number < 90)得false,那么上式可写成:true && false。计算机会根据下面的真值表来得出总表达式最终的值。另外两个运算符的用法类似。

A的值        B的值          A&&B的值
               true                true true
true false false
false true false
false false false
A的值        B的值            A||B的值   
               true                true true
true false true
false true true
false false false
            A的值                         !A的值         
true false
false true

四、赋值运算符

  赋值号 = 用于将一个赋值号右边的值赋给左边,如: x = 6。而+=是将自身与一个值相加,并将新结果赋给自己,如x += 6等同于x = x + 6。 -= 、*=、 /=、%=、 &= 、^=、 |= 、<<=、 >>=与之类似。

五、instanceof运算符

  该运算符是双目运算符,左面的操作元是一个对象,右面是一个类(Object instance Class)。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。如先定义个整型int  x。使用x instanceof int,则该表达式为真(true),如果这个表达式的int改为double,那么该表达式为假。

六 、位移运算符

  位移运算符用于二进制数值的处理。处理时将数值以二进制的形式进行处理,有<< 带符号左移 >>带符号右移 >>> 无号右移三种。
  例子: int a1 = 8; // 0000 0000 0000 1000
  System.out.println(a1>>>2); //// 0000 0000 0000 0010
  输出为 2
七、运算符优先级
  按优先级 从高到低排列如下:

第一优先级 +、-、 ++、--、!
第二优先级 *、/、%
第三优先级 +、-
第四优先级 <、>、<=、>=
第五优先级 ==、!=
第六优先级 &、|
第七优先级 &&、||


注意第一优先级中的为 取正和取负不是加和减。加和减在第三优先级。且&和|是 位运算符,而&&和||是 逻辑运算符。优先级不必强记, 强烈建议在表达式中全部 用括号来告诉计算机你的运算顺序。

Sunny,To be continue......