Java入门系列-06-运算符
这篇文章为你搞懂2个问题
- java 中的常用运算符有哪些?如何使用?
- 这些运算符的运算优先级是怎样的?
算数运算符
明显是做数学运算的,包括以下符号:
+加法运算
敲一敲:
public class DemoAdd {
public static void main(String[] args) {
int sum=2+3;
System.out.println(sum);//输出变量 sum 的值
int a=5;
int b=3;
int result=a+b;//将变量 a 的值与变量 b 的值相加
System.out.println(result);
result+=20;//相当于 result=result+20;
System.out.println(result);
}
}
当对一个变量本身进行算数运算可以使用
+=或-=或*=或/=或%=进行简化
int a=10;a+=2;在声明变量后进行操作
但声明变量时赋值便是非法的int x+=10;
-减法运算
敲一敲:
public class DemoMinus {
public static void main(String[] args) {
int diff=2-3;
System.out.println("差:"+diff);
double a=55.4;
double b=5.2;
double result=a-b;
System.out.println("变量a的值减变量b的值等于:"+result);//结果不一定精准
result-=10;//相当于 result=result-10;
System.out.println("结果:"+result);
}
}
*乘法运算
敲一敲:
public class DemoMultiply {
public static void main(String[] args) {
int product=2*3;
System.out.println("积:"+product);
double a=10;
double b=5;
double result=a*b;
System.out.println("变量a的值乘以变量b的值等于:"+result);
result*=10;//相当于 result=result*10;
System.out.println("结果:"+result);
}
}
/除法运算
敲一敲:
public class DemoDivide {
public static void main(String[] args) {
int product=5/2;
System.out.println("商:"+product);
double a=5;
double b=2;
double result=a/b;
System.out.println("变量a的值除以变量b的值等于:"+result);
result/=10;//相当于 result=result/10;
System.out.println("结果:"+result);
}
}
%取模、取余运算
敲一敲:
public class DemoRemainder {
public static void main(String[] args) {
//正常求余数
int result=10%3;
System.out.println("10%3="+result);
//小数在前
int result1=2%5;
System.out.println("2%5="+result1);
//其中一个是负数
int result2=-3%2;
System.out.println("-3%2="+result2);
//两个数都是负数
int result3=-2%-5;
System.out.println("-2%-5="+result3);
}
}
++--自增、自减运算符
敲一敲:
public class DemoSelf {
public static void main(String[] args) {
int a=10;
a++;//后置自增
System.out.println(a);//11
--a;//前置自减
System.out.println(a);//10
System.out.println(++a);//11
System.out.println(a++);//11
System.out.println(a);//12
}
}
自增、自减运算符是对一个变量本身进行加1或减1的操作
运算符可以防置在变量前或后
前置的运算符会先进行加1或减1的操作然后再使用,而后置则是先使用再进行操作
比较运算符
对比两者之间的关系,运算后的结果是布尔值
| 符号 | 介绍 |
|---|---|
| > | 大于 |
| < | 小于 |
| == | 等于 用于比较值和内存地址 |
| != | 不等于 |
| >= | 大于等于 |
| <= | 小于等于 |
敲一敲:
public class DemoCompare {
public static void main(String[] args) {
System.out.println(10>5);//10大于5 true
System.out.println(10<5);//10小于5 false
System.out.println(1!=1);//1不等于1 false
System.out.println(10==5);//10等于5 false
System.out.println(9>=9);//9大于等于9 true
System.out.println(5<=8);//5小于等于8 true
}
}
逻辑运算符
| 符号 | 介绍 |
|---|---|
&& |
与 运算符两边都为true运算结果为true |
|| |
或 运算符只要一边为true运算结果为true |
! |
非 取反,为true时结果为false,为false时结果为true |
敲一敲:
public class DemoLogic {
public static void main(String[] args) {
int age=50;
int money=100;
//两边都不符合条件 false
System.out.println((age<40)&&(money>100));
//只符合一个条件 false
System.out.println((age<60)&&(money>100));
//两边都符合条件 true
System.out.println((age<60)&&(money>30));
//两边都不符合条件 false
System.out.println((age<40)||(money>100));
//只符合一个条件 true
System.out.println((age<60)||(money>100));
//两边都符合条件 true
System.out.println((age<60)||(money>30));
boolean isBig=age>60;//false
System.out.println(!isBig);//取反 true
}
}
位运算符
用于对二进制数据的操作
| 符号 | 介绍 |
|---|---|
>> |
对二进制向右位移n位 |
<< |
对二进制向左位移n位 |
& |
位与运算 同位的二进制都为1时结果为1 |
| |
位或运算 同位的二进制有一个为1时结果为1 |
^ |
异或 从二进制高位开始比较,如果相同则为0,不相同则为1。 |
~ |
位非 |
敲一敲:
demo1
public class DemoBit {
public static void main(String[] args) {
System.out.println(10>>1);//5
System.out.println(7<<1);//14
}
}
位移运算符操作的是二进制,上例中 10 的二进制是
1010
向右位移1位 变成了101左边空缺将用 0 补上0101转为10进制为 5
向左位移原理一样 7 的二进制为0111向左位移后,右边补0 为1110
转为10进制为 14
demo2
public class DemoBit {
public static void main(String[] args) {
System.out.println(5|1);//5
System.out.println(3|2);//3
}
}
上例中 5 和 1 转为二进制如下
5 0101
1 0001
5 0101
对应的位中只要有1 结果为1
demo3
public class DemoBit {
public static void main(String[] args) {
System.out.println(7^4);//3
}
}
7和4的二进制如下
7 0111
4 0100
3 0011
对应位值相同为0不同为1
运算符的优先级
优先级顺符由高到低是
小括号 > 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
试一试
- 将一个整数除以2或乘2而不使用
+ - * /,如何实现?
鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题

关注公众号"享智同行"回复"006"获取答案
Java入门系列-06-运算符的更多相关文章
- Java 集合系列 06 Stack详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- java io系列06之 序列化总结(Serializable 和 Externalizable)
本章,我们对序列化进行深入的学习和探讨.学习内容,包括序列化的作用.用途.用法,以及对实现序列化的2种方式Serializable和Externalizable的深入研究. 转载请注明出处:http: ...
- Java入门系列-26-JDBC
认识 JDBC JDBC (Java DataBase Connectivity) 是 Java 数据库连接技术的简称,用于连接常用数据库. Sun 公司提供了 JDBC API ,供程序员调用接口和 ...
- Java入门系列-19-泛型集合
集合 如何存储每天的新闻信息?每天的新闻总数是不固定的,太少浪费空间,太多空间不足. 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用Java集合框架. Java 集合框架提 ...
- Java入门系列之字符串创建方式、判断相等(一)
前言 陆续从0开始学习Java出于多掌握一门语言以后的路也会更宽,.NET和Java兼顾,虽然路还很艰难,但事在人为.由于Java和C#语法相似,所以关于一些很基础的内容不会再重头讲,Java系列中所 ...
- Java基础系列--02_运算符和程序的语句
运算符: (1)算术运算符: +,-,*,/,%,++,--(加.减.乘.除.取余.自增,自减) ++和--的注意事项: a:他们的作用是自增或者自减 b:使用 1.单独使用 放在操作数据的前面和后面 ...
- Java入门系列-17-多态
这篇文章贯穿游戏中的一些功能带你掌握多态的使用 为什么要使用多态 在一款对战类游戏中(如有雷同纯属巧合),有两个不同的法师英雄:小乔.妲己. 两个法师英雄的都有攻击的方法,小乔的攻击伤害为10,消耗魔 ...
- Java入门系列之hashCode和equals(十二)
前言 前面两节内容我们详细讲解了Hashtable算法和源码分析,针对散列函数始终逃脱不掉hashCode的计算,本节我们将详细分析hashCode和equals,同时您将会看到本节内容是从<E ...
- Java入门系列之集合HashMap源码分析(十四)
前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在 ...
随机推荐
- Kotlin when 流程判断
如果学过C或者java C#等语言. 一定熟悉SWITCH这个流程判断 但是在kotlin中却没有这个.而是 使用了When来代替. 当什么时候. 下面我觉一个简单的例子: import java.u ...
- 【转】分析.net中的object sender与EventArgs e
源地址:http://blog.csdn.net/feihu19851111/article/details/7523118
- C# Winform下一个热插拔的MIS/MRP/ERP框架(通用控件)
一直对商业控件不感冒, 结合日常工作, 我写了几个常用控件. 一.下拉框控件(仿Access下拉框:F4下拉,自动输入,支持单/多列显示),可在Datagridview中使用. 1.常规: 2.Dat ...
- 对IOC的理解
我觉得 IOC 主要分两块去理解, 第一块 IOC是干什么的, 为什么需要IOC ?; 第二块,IOC 这么好,该怎么用? 一: 为什么需要IOC? 回答这个问题就要从ioc的含义入手: IOC ...
- LINUX下PHP安装VLD扩展并测试OK
首先下载安装vld压缩包,下载前一定注意区分压缩包版本和php版本是否匹配,否则很可能后面make install 失败. //下载安装包—暂时以14版本为例 wget http://pecl.php ...
- js 伪数组 arguments
/* 定义一个函数,如果不确定用户是否传入了参数, arguments可以获取到函数传入了多少个参数 和每个参数的值 */ /* 定义 */ function f1() { //获取的是函数在调用的时 ...
- Touchable类组件
Touchable /* * React Native中提供3个组件用于给其他没有触摸事件的组件,绑定触摸事件 * TouchableOpacity 透明触摸,点击时,组件会出现透明过渡的效果 * T ...
- P4578 [FJOI2018]所罗门王的宝藏
传送门 考虑一个位置答案传递性,如果某个位置的红宝石转动确定了,那么会引起连锁反应: 如图,绿色的转动确定了,那么那两个蓝色的转动也确定了 自己手玩一下,发现如果有解那么随便找一个开始然后一路玩下去最 ...
- HDU6395(分段+矩阵快速幂)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6395 给你一个式子,给出你A,B,C,D,P,n,让你求出第n项的式子Fn.(其中ABCDPn均在1e9的 ...
- BZOJ - 2648 KD树 最近点查询
省赛后躺尸几天又回来更新了,内容是说好的KD树.. 具体操作从代码中感受一下 感觉已经把KD树尽量封装好了(虽然全局的D看着极不顺眼) 需要注意的是估值函数的判断条件 #include<bits ...