第三天学习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天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
78 43
Java学习十六—掌握注解:让编程更简单
|
17天前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
20 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
2天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
7天前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
20 7
|
8天前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
12 3
|
9天前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
16 1
|
17天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
27 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
19天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
29 2
|
21天前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
43 4
|
20天前
|
安全 Java 测试技术
🌟 Java 零基础 | 详解 instanceof 运算符
【10月更文挑战第1天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
23 1