6、Java运算符
运算符的分类

算数运算符
二元运算符
算术运算符中 = - * / % 属于二元运算符,二元运算符指的是需要两个操作数才能完成的运算的运算术。
整数运算规则
1、如果两个操作数有一个为Long,则结果也为Long。
2、如果没有Long,结果则为int,即使操作数为short、byte,结果也为int。
int a =1;
long b = 2;
//int c = a + b; //报错 因为有一个为Long,则结果也为Long
byte a1 = 1;
short a2 = 1;
int d = a1 + a2; //正确 因为如果没有Long,结果则为int
浮点运算规则
1、如果两个操作数有一个为double,则结果为double。
2、只有两个操作数都为float,结果才为float。
double a = 1.1;
//float b = a + 2.2f; //报错,因为操作数有一个为double,则结果为double
取模运算:其操作数可以为浮点数,一般使用整数,结果是余数,余数符号和左边操作数相同。
一元运算符
一元运算符是该类运算只需要一个操作数的时候,比如:++,--
int a = 2;
int b = a++; //先是执行,b = 3,然后运算完以后再给a自增。
System.out.println("a=" + a + "\tb=" + b);
//运行结果:a=3 b=2
a = 2;
b = ++a; //先是执行a的自增,然后再赋值给b
System.out.println("a=" + a + "\tb=" + b);
//运行结果:a=3 b=3
赋值运算符

int a = 2;
int b = 3;
a+=b; //这个相当于a = a + b;
System.out.println("a=" + a);
//结果为:a = 5
a = 2;
a *= b + 3; //这个相当于 a = a * (b + 3)
//是先运算后面的,再运算前面的
System.out.println("a=" + a);
//结果为:a = 12;
关系运算符
关系运算符号是用来比较的,所以返回值只会是boolean,只有true/false

int a = 2;
int b = 3;
boolean c = b > a;
System.out.println("c="+c);
//结果为:c=true
注意事项:
- == 和 != 是所有类型,引用和基本数据类型都可以用的。
- .>、<、>=、<=只是针对于数值类型,还有char可以使用。
逻辑运算符

Java中逻辑运算符的操作数和结果都是boolean类型的。
boolean a = true;
boolean b = false;
//逻辑与 &
//只有同时为true的时候才返回true,只要有一个为false,返回false
boolean c = a & b;
System.out.println("c=" + c);
//结果为:c=false;
//逻辑或 |
//只要有一个值为true,结果就为true
c = a | b;
System.out.println("c=" + c);
//结果为:c=true
//逻辑非
//取a的相返的值,如果a为true,c则为false,如果a为false,c则为true
c = !a;
System.out.println("c=" + c);
//结果为:c=false;
//逻辑异或
//两个值相同的时候为false,不同的时候为true
c = a ^ b;
System.out.println("c=" + c);
//结果为:true
//短路或
//因为逻辑或只要有一个值为true,结果就为true,但是还是为验证第二个值
//短路或不一样,只要第一个值为true,第二个值就不验证了,直接返回true,这样做是为了提高效率。
c = a || b;
System.out.println("c=" + c);
//结果为:c=true
//短路与
//因为逻辑与必须两个都为true,结果才为true,只要有一个为false结果就为false
//短路与不一样,只要第一个值为false,结果就为false,第二个值就不验证了,这样做是为了提高效率。
c = b && a;
System.out.println("c=" + c);
//结果为:false
位运算符

位运算符是进行二进制运算的。
int a = 3;
int b = 4;
//取返操作
System.out.println("~a=" + ~a);
//结果为:~a=-4
//按位与
System.out.println("a&b=" + (a&b));
//3的后四位二进制为 0011
//4的后四位二进制为 0100
//与 运算符是相同的为 1 不同的为 0 所以最后的结果为 0000
//结果为:a&b = 0
//按位或
System.out.println("a|b=" + (a|b));
//3的后四位二进制为 0011
//4的后四位二进制为 0100
//或 运算符是只要有一个为1,就为1 所以结果为 0111
//结果为:a|b = 7
//按位异或
System.out.println("a^b=" + (a^b));
//3的后四位二进制为 0011
//4的后四位二进制为 0100
//异或 运算符是不同的为1,相同的为0 所以最后结果为 0111
//结果为:a^b = 7
//左移运算符 <<
//这个运算符的右边是要移运的位数,左边才是要运算的值
System.out.println("a<<1=" + (a << 1));
//向左边移动一位数是把a乘以2 , 所以结果是 3 * 2
//结果为:6
//右移运算符 <<
//这个运算符的右边是要移运的位数,左边才是要运算的值
System.out.println("a>>1=" + (a >> 1));
//向右边移动一位数是把a除以2 , 所以结果是 3 / 2
//结果为应该为1.5的,但是因为是整数运算,算动取整,所以才为1
//结果为:a>>1=1
System.out.println("b>>1=" + (b >> 1));
//结果为:b>>1=2
& 、| 、^ 运算符:如果运算符,如果运算两边是boolean类型的值,那么这三个运算符就是逻辑运算符,如果是数值类型的,就是位运算符号。
字符串连接符
在我们前面的例子中,我们使用了 + 号,但是有的地方的 + 号不参与运算,是因为,这个时候, + 号变成了一个连接符号了,它变成连接符号的条件是 左右两边只要有一个String 类型的字符串,就会变成连接符号。
int a = 2;
//这里的3为字符串,由双引号引起来的都是字符串
System.out.println(a + "3");
//结果为:23
条件运算符
条件运算符号也叫三目条件运算符号。格式为:
x ? y : z
这个运算表达式,有三个参数,x只能为boolean,另外两个参数可以为任意类型。
boolean a = true;
boolean b = false;
System.out.println("第一个参数为true="+(a?"输出为true":"输出为false"));
System.out.println("第一个参数为false="+(b?"输出为true":"输出为false"));
//结果为:
//第一个参数为true=输出为true
//第一个参数为false=输出为false
这个三目运算符可以做一些小的判断,但是如果是情况复杂的最好还是用if else来进行计算。
运算符优先问题

运算符的优先级不用特地的记,只要看看就可以了,因为工作的时候,复杂的运算符号,都会有小括号来进行组织的。不会全都按照运算符号优先级来进行设计。
细节决定成败!
个人愚见,如有不对,恳请扶正!
6、Java运算符的更多相关文章
- Java笔记2-数据类型,变量,Java运算符
我们编写软件,目的是为了高效的操作(增,删,改,查)数据. 数据类型 1.基本类型(8种)byte 字节型 -128~127short 短整型 -32768~32767int 整型 -21474836 ...
- Java运算符优先级(转)
转自:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 ...
- 【转】Java运算符优先级
原文网址:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 ...
- java运算符优先级与流程控制
1. Java 的方法Method (函数 Function), 功能, 动作 1) 方法就是函数: y=f(x)=3x+6; 2) 方法的语法 (修饰词)(返回值类型)(方法名)(参数列表){ ...
- Java基本语法-----java运算符的优先级与结合性
这是本人以前的上学期间java 运算符这块知识的总结的,截图存到了word里,大家将就看下吧(不会用Markdown的表格 不然就在写一遍了 T T). [正在看本人博客的这位童鞋,我看你气度不凡,谈 ...
- Java 基本语法---Java运算符
Java 基本语法---Java运算符 0. 概述 Java中的运算符主要分为以下几种: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符 位运算符 其他运算符 1. 算术运算符 操作符 描 ...
- [转]Java 运算符的优先级
Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 &l ...
- Java运算符使用总结(重点:自增自减、位运算和逻辑运算)
Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ...
- Java 运算符及优先级
运算符 分割符: , ; [] () 算数运算符: + - * / % ++ -- 关系运算符: > < >= <= == != 逻辑运算符: ! & | ^ & ...
- 【java基础】Java运算符优先级
Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右 [ ] 方括号 从左到右 2 + 正号 从右到左 单目 - 负号 ...
随机推荐
- ubuntu18.04 编译fortran出现 ‘没有f951这个文件’处理
机器自带了gcc所以可以编译fortran文件, 使用时, gcc **.for –o ***.out 提示,没有找到f951. 然后去网上找解决方案,有的人说在其他地方找到了f951,然后把他复制到 ...
- 零基础自学Python是看书还是看视频?
很多人都碍于Python培训班的高昂费用和有限的空余时间都选择自学Python,但是没有老师帮助,显得有些迷茫,不知应该从何处学起,也不知识看书学习还是应该看视频学习.本就来谈谈这个话题. 我们先 ...
- jdbc url的若干参数
参数名称 参数说明 缺省值 最低版本要求 user 数据库用户名,用于连接数据库 无 所有版本 password 用户密码(用于连接数据库) 无 所有版本 useUnicode 是否使用Unicode ...
- 搭建GithubPages静态博客踩过的坑
前言 搭建了属于自己的GitHub Page作为个人博客,上手Hexo+Material感觉比较花哨,后改用Yilia主题效果良好.期间发现并解决了一些问题,贴出值得记录的部分作为参考: 维护 书写 ...
- OpenCV3.0 + VS2015出现“ACCESS_MASK不明确”错误
问题:Vs 使用openCV 3.0+ 出错error C2872: “ACCESS_MASK”: 不明确的符号 环境: 系统:Win7 环境:VS2015 64bit 原因: 是因为我项目中的其中一 ...
- git push出错的解决办法
今天push代码到线上的时候怎么都不行,尝试了很多办法报了好几种错比如: 反正就是各种错,然后其实不管什么错,你全部Git init 一下然后重新配置 git config --global user ...
- 运筹学学报-运行问题之新版TeX系统支持修改
<运筹学学报>的LaTeX模板基本上是CCT的典型而且是停留在LaTeX2.09 的时代,故而很多用户下载其模板无法在新TeX系统里使用,这里提供以下解决方案.源文件中的前几行:\docu ...
- SP1716 GSS3 - Can you answer these queries III - 动态dp,线段树
GSS3 Description 动态维护最大子段和,支持单点修改. Solution 设 \(f[i]\) 表示以 \(i\) 为结尾的最大子段和, \(g[i]\) 表示 \(1 \sim i\) ...
- Oracle查询当前用户和当前用户下的所有表
转载自:http://blog.itpub.net/29485627/viewspace-1246317/ Oracle查询当前用户和当前用户下的所有表 (1)查询当前用户 SQL> show ...
- mybatis-plus - 初识
一. 集成 pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid& ...