第三天学习Java:运算符

简介: 运算符及常见操作

一、运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

算法运算符

正号、负号、加减乘除、取模(取余)
++自增(前),先运算后取值。
++自增(后),先取值后运算。
--自减(前),先运算后取值。
--自减(后),先取值后运算。

  • ,字符串连接。
    %取模(取余),余数符号跟被除数相同。

小程序:
class Test{
        public static void main(String[] args){
                int i1 = 12;
                int i2 = 5;
                double d1;
                double d2;
                d1=i1 / i2;
                d2=i1 / (i2+0.0);
                System.out.println(d1);
                System.out.println(d2);
System.out.println("i1 % i2=" + i1 % i2);
int i3 = 10;
int t1 = ++i3;
System.out.println("i3 = " + i3 + ",t1 = " +t1);

int i4 = 10;
int t2 = i4 ++;
System.out.println("i4 = " + i4 + ",t2 = " + t2);
int i5 = 187;
System.out.println("百位数是" + i5 / 100);
System.out.println("十位数是" + i5 % 100 / 10);
System.out.println("个位数是" + i5 % 10);
}
}
$ javac Test.java
$ java Test
2.0
2.4
i1 % i2=2
i3 = 11,t1 = 11
i4 = 11,t2 = 10
百位数是1
十位数是8
个位数是7

赋值运算符

符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
支持连续赋值
扩展赋值运算符:+=,-+,*=,/=,%=
通常写法:
i2=j2=10;
i3=10,j3=20;
int num1=10;
num1+=2; //12
int num2 = 12;
num2 % =5;//2
short s1=10;
s1 + = 2;//不会改变变量本身数据类型
s1 = s1 + 2;//报错

比较运算符(关系运算符)

运算符 运算 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
Ø 大于 4>3 true
<= 小于等于 4<=3 false

= 大于等于 4>=3 true

instanceof 检查是否是类的对象 “Hello” instaceof String true
比较运算符的结果都是boolean型,要么是true,要么是false
比较运算符“==”不能误写成“=”

逻辑运算符

& 逻辑与 | 逻辑或 ! 逻辑非
&& 短路与 || 短路或 ^ 逻辑异或
123
a b a&b a&&b a|b a||b !a a^b
true ture true true true true false false
true false fasle fasle true true false true
fasle true false false true true true true
fasle false false false fasle false true false
&与&&区分
相同点:运算结果相同;当符号左边是true时,二者都会执行右边的运算。
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行右边的运算。
同理|与||,当符号左边为true时,|继续执行右边的运算,||不再执行右边的运算。
开发中推荐使用||
例子
class Luoji{
public static void main(String[] args){
boolean b1 = false;
int i1 = 10;
if(b1 & (i1++ > 0)){
System.out.println("我现在在南京");
} else{
System.out.println("我现在在北京");
}
System.out.println(i1);

boolean b2 = false;
int i2 = 10;
if(b2 && (i2++ >0)){
                System.out.println("我现在在南京");
}               else{
                System.out.println("我现在在北京");
}
System.out.println(i2);
}
}
$ javac Luoji.java 
$ java Luoji
我现在在北京
11
我现在在北京
10

位运算符(用的很少,二进制)

操作的都是整型变量,在一定范围内每左移一位相当于*2,右移相当于/2
面试题:最高效方式计算2*8? 2<<3或8<<1
运算符 运算 范例
<< 左移(2) 3<<2=12 32*2=12

右移(/2) 3>>1=1 3/2=1

无符号右移 3>>>1=1 3/2=1

& 与运算符 6&3=2,转换2进制,01计算
| 或运算符 6|3=7,同上
^ 异或运算 6^3=5,同上
~ 取反运算 ~6=-7,包括符号位全部取反

三元运算符

格式:条件表达式?表达式1:表达式2
条件表达式为true,运算结果是表达式1;false为表达式2
表达式1和2为同种类型。
三元运算符可以嵌套使用
三元运算符与if-else的联系和区别
1、三元运算符可以简化if-else语句
2、三元运算符要求必须返回一个结果
3、if后的代码块可以有多个语句。
条件表达式为boolean类型,根据条件表达式决定执行1或者2.
例子,3个数取最大值:
$ vim SanYuan.java
class SanYuan{
public static void main(String[] args){
int n1=12;
int n2=30;
int n3=-43;
int max=((n1>n2?n1:n2)>n3)?(n1>n2?n1:n2):n3;
System.out.println("The max of n1 n2 n3 is " + max);
}
}
$ javac SanYuan.java 
$ java SanYuan
The max of n1 n2 n3 is 30

目录
相关文章
|
9天前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
17 1
|
29天前
|
安全 Java 程序员
学习Java类加载机制
在Java的世界里,每一个类或者接口,在经历编译器后,都会生成一个个.class文件。
18 0
|
1月前
|
Java
JAVA运算符
JAVA运算符
15 3
|
9天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
14 1
|
8天前
|
Java
Java 运算符
4月更文挑战第8天
|
6天前
|
Java 存储
键值之道:深入学习Java中强大的HashMap(二)
键值之道:深入学习Java中强大的HashMap
10 0
键值之道:深入学习Java中强大的HashMap(二)
|
8天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
10天前
|
Java
Java_运算符
该文档介绍了编程中的几种运算符。算术运算符包括加、减、乘、除和取余
14 1
|
27天前
|
前端开发 Java 数据库连接
五年Java学习心路历程
五年Java学习心路历程
33 0
|
28天前
|
Java
Java运算符
Java运算符
7 0