第三天学习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

目录
相关文章
|
1月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
250 0
|
2月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
152 1
|
1月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
180 0
|
1月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
214 7
|
1月前
|
Java Go 开发工具
【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
125 1
|
2月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
72 5
|
2月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
136 5
|
2月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
174 3
|
2月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
79 1
|
2月前
|
设计模式 存储 Java
Java基础学习day07
本节讲解Java中的final关键字、单例设计模式、枚举类、抽象类与接口。涵盖常量定义、单例写法(饿汉式/懒汉式)、枚举特点及应用场景,以及抽象类与接口的使用与区别,助力掌握核心面向对象编程思想。
136 1
下一篇
oss云网关配置