博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记:运算符
阅读量:4155 次
发布时间:2019-05-25

本文共 3730 字,大约阅读时间需要 12 分钟。

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类型)。有些情况下,左右两边的类型不相等。那么要进行类型转换,如果左边的
数值类型级别高于右边的优先级,那么运行时会进行隐性转换,且
代码运行不会出错,但这样可能会得到非预期的计算结果。如果左边的数值级别低于右边的,那么会报错,这时就需要进行强制类型转换。关于强制类型转换,参考。

可能你已经注意到在上一段话中将数值类型加重了,这是因为这里只是计算数值类型,如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......

转载地址:http://errti.baihongyu.com/

你可能感兴趣的文章
大数据抓取采集框架
查看>>
html-webpack-plugin用法全解
查看>>
前端的异步解决方案之Promise和Await-Async
查看>>
Angularjs中的$Http与$resource
查看>>
async和await简化回调函数嵌套
查看>>
Js类和继承的实现
查看>>
开发自己的 yeoman 脚手架(generator-reactpackage)
查看>>
echarts重写图例点击事件
查看>>
生成某个范围内N个不重复随机数与生成固定长度数组
查看>>
Angularjs启动过程
查看>>
Angular 组件间通信
查看>>
base64转blob Ajax上传文件,服务器端接收不到
查看>>
改写ui-grid headerCellTemplate
查看>>
一劳永逸的搞定 flex 布局
查看>>
pm2常用的命令用法介绍
查看>>
消息不能及时回复,见谅
查看>>
基于MMX指令集的程序设计简介
查看>>
Intel CPU发展历程和多媒体指令集
查看>>
从Pentium III到扣肉 SSE指令集发展历程回顾
查看>>
来自ITU-T的官方消息,H.265标准将在2008-2010推出
查看>>