1.算术运算符
1.1运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符对常量或变量进行操作的符合java语法的式子就可以称为表达式
例子:int a=50;
int b=50;
int c=a+b;
这里的+叫运算符并且是算术运算符;a+b叫表达式,因为+是算术运算符,所以这个表达式叫算术表达式。
1.2算术运算符
符号 | 作用 | 说明 |
+ | 加 | |
- | 减 | |
* | 乘 | |
/ | 除 | 获取的是两个数据做除法的商 |
% | 取余 | 获取的是两个数据做除法的余数 |
整数相除只能得到整数,要想得到小数必须有浮点数参与运算
例如:int a=10;
int b=3;
int c=a/b;
Systm.out.println(c);
结果为3而不是3.3333,因为除法运算得到的结果是两个数据做除法的商。
1.3字符的“+”操作
拿字符在计算机底层对应的数值来计算的
‘A'-------->65,A-Z是连续的
'a'--------->97,a-z是连续的
'0'-------->48,0-9是连续的
算术表达式在包含多种数据类型时,整个算术表达式的类型会自动进行提升
提升规则:
byte、short、char类型自动转换为int类型
整个表达式饿类型自动提升为表达式中等级最高的类型
byte、short、char----->int----->long----->float----->double
1.4字符串的"+"操作
①当"="出现在两个字符串中间时,它代表的是一个连接符,而不是运算符,
例如:String s1="zbc";
String s2="123";
Systm.out.println(s1+s2);
输出结果是zbc123
②当“+”出现在字符串中时,就是连接运算符,否则就是算术运算符,当连续执行"+"操作时,从左到右依次执行
例如:“我”+“爱你”+1+99+“年”
大家认为这个代码运行的结果是什么?我爱你100年?结果应该是我爱你199年。
例二:1+99+“年”+“前”’“我”+“爱你”
这个代码的运行结果是100年前我爱你
/*
字符串的“+”操作
*/
public class OperatorDemo03{
public static void main(String[] args){
System.out.println("I"+"LOVE"+1000+0+"year");
System.out.println(1000+9000+"ago"+"I"+"LOVE"+"year");
}
}
2.赋值运算符
符号 | 作用 | 说明 |
= | 赋值 | a=10,将10赋给变量a |
+= | 加后赋值 | a+=b,将a+b的值赋给a |
-= | 减后赋值 | a-=b,将a-b的值赋给a |
*= | 乘后赋值 | a*=b,将a*b的值赋给a |
/= | 除后赋值 | a/=b,将a/b的商赋给a |
%= | 取余后赋值 | a%=b,将a%b的余数赋给a |
/*
赋值运算符
*/
public class OperatorDemo{
public static void main(String[] args){
//把10赋值给int类型的变量i
int i = 10;
System.out.println("i:"+i);
//+=把左边和右边的数据做加法操作,结果赋值给左边
i += 20;
//i = i+20;
System.out.println("i:"+i);
//注意:扩展的赋值运算底层隐含了强制类型转换的含义
short s = 20;
//s += 20;
//s = (short)(s+20);
System.out.println("s:"+s);
}
}
3.自增自减运算符
符号 | 作用 | 说明 |
++ | 自增 | 变量的值加1 |
-- | 自减 | 变量的值减1 |
i++与++i的区别:
i++是先将i参与运算,后进行自增操作;++i是先进行自增操作,用自增后的i去运算;
例如:int i=0;
int a =i++;
这里的a是0;如果把上面的i++换成++i,那么a的值就是1。
/*
自增自减运算符
*/
public class OperatorDemo04{
public static void main(String[] args){
//定义变量
int i =1;
System.out.println("i:"+i);
//单独使用
i++;
//++i;
System.out.println(i);
//参与操作使用
int j = i++;
int j =++i;
System.out.println("i:"+i);
System.out.println("j:"+j);
}
}
4.关系运算符
符号 | 作用 |
== | a==b,判断a是否等于b,成立为true,不成立为false |
!= | a!=b,判断a是否等于b,不成立为true,成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
注意:关系运算符的结果都是boolean类型,只有true和false,千万不要把"=="误写成"="
/*
关系运算符
*/
public class OperatorDemo05{
public static void main(String[] args){
//定义变量
int i =100;
int j =200;
int k =300;
//==
System.out.println(i==j);
System.out.println(i==k);
System.out.println("-----------");
//!=
System.out.println(i!=j);
System.out.println(i!=k);
System.out.println("-----------");
//>
System.out.println(i>j);
System.out.println(i>k);
System.out.println("------------");
//<
System.out.println(i<j);
System.out.println(i<k);
System.out.println("------------");
//<=
System.out.println(i<=j);
System.out.println(i<=k);
System.out.println("------------");
//>=
System.out.println(i>=j);
System.out.println(i>=k);
System.out.println("------------");
//不小心把==写成=
//把j的值赋值给了i,然后输出i的值
System.out.println(i=j);
}
}
5.逻辑运算符
在数学中有3<x<8,但是在java中应该如何表示呢?
先拆解这个算式为:x>3和x<8
合并后就是:x>3&&x<8
&&就是一个逻辑运算符
我们可以说逻辑运算符就是连接关系表达式的运算符,当然逻辑运算符也可以直接连接布尔类型的常量或变量
符号 | 作用 | 说明 |
& | 逻辑与 | a&b,a和b都为true,结果为true,否则是false |
! | 逻辑非 | !a,结果与a相反 |
^ | 逻辑异或 | a^b,a和b的结果不同为true,相同为false |
| | 逻辑或 | a|b,a和b都是false,否则是true |
/*
逻辑运算符
*/
public class OperatorDemo06{
public static void main(String[] args){
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& 有false则false
System.out.println((i<j)&(i<k));//true & true
System.out.println((i>j)&(i<k));//false & true
System.out.println((i<j)&(i>k));//true &false
System.out.println((i>j)&(i>k));//false & false
System.out.println("---------------");
//| 有true则true
System.out.println((i<j)|(i<k));//true | true
System.out.println((i>j)|(i<k));//false | true
System.out.println((i<j)|(i>k));//true |false
System.out.println((i>j)|(i>k));//false | false
System.out.println("---------------");
//^ 相同为false,不同为true
System.out.println((i<j)^(i<k));//true ^ true
System.out.println((i>j)^(i<k));//false ^ true
System.out.println((i<j)^(i>k));//true ^false
System.out.println((i>j)^(i>k));//false ^ false
System.out.println("---------------");
//!与原值相反
System.out.println(!(i<j));//true
}
}
6.短路逻辑运算符
符号 | 作用 | 说明 |
&& | 短路与 | 与逻辑&作用相同,但是有短路效果 |
|| | 短路或 | 与逻辑或作用相同,但是有短路效果 |
注意事项:
- 逻辑与&,无论左边真假,右边都要执行
- 短路与&&,如果左边为真,执行右边;如果左边为假,右边不执行
- 逻辑或|,无论左边真假,右边都要执行
- 短路或||,如果左边为假,执行右边;如果左边为真,右边不执行
7.三元运算符
格式:关系表达式?表达式1:表达式2
范例:a>b?a:b
计算规则:①先计算关系表达式的值
②如果关系表达式的值为true,则输出a
③如果关系表达式的值为false,则输出b
/*
三元运算符
格式:
关系表达式?表达式1:表达式2
范例:
a>b?a:b;
执行流程:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
*/
public class OperatorDemo08{
public static void main(String[] args){
//定义两个变量
int a = 100;
int b = 200;
//获取两个数据中的最小值
int min = a<b?a:b;
//输出结果
System.out.println("min:"+min);
}
}
8.数据输入
调用Scanner类步骤:
①导包:import java.util.Scanner;
②创建对象:Scanner sc = new Scanner(System.in);
③接收数据:int x = sc.nextInt();
/*
数据输入:
导包:
import java.util.Scanner;
创建对象:
Scanner sc = new Scanner(System.in);
接收数据:
int x = sc.nextInt();
*/
import java.util.Scanner;
public class ScannerDemo{
public static void main(String[] args){
//创建对象
System.out.println("请输入数据:");
Scanner sc = new Scanner(System.in);
//接收对象
int x = sc.nextInt();
//输出数据
System.out.println("x:"+x);
}
}
9.案例
9.1 两只老虎
需求:动物园里有两只老虎,一只老虎重200kg,另一只老虎重180kg,请用程序实现两只老虎体重是否相同。
/*
两只老虎案例
需求:
动物园里有两只老虎,已知两只老虎体重分别为180kg、200kg
请用程序实现判断两只老虎的体重是否相同?
*/
public class TwoTiger{
public static void main(String[] args){
//定义变量
int t1=180;
int t2=200;
//比较体重
boolean value=t1==t2?true:false;
System.out.println("value:"+value);
}
}
9.2三个和尚
需求:一座寺庙里有3个和尚,已知他们的身高分别是150cm、210cm、165cm,请用程序实现他们的最高身高。
/*
三个和尚
需求:
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm
请用程序实现获取这三个和尚的最高身高。
*/
public class ThreeMonks{
public static void main(String[] args){
//定义变量
int a=150;
int b=210;
int c=165;
//获取身高
int max1=a>b?a:b;
int max2=max1>c?max1:c;
System.out.println("the highest is:"+max2+"cm");
}
}
9.3三个和尚升级版
需求:一座寺庙里住着三个和尚,他们的身高必须经过测量得出,请用程序实现获取这三个和尚的最高身高。
/*
三个和尚
需求:一座寺庙里住着三个和尚,他们的身高必须经过测量得出,
请用程序实现获取这三个和尚的最高身高。
*/
import java.util.Scanner;
public class ThreeMonks02{
public static void main(String[] args){
//从键盘获取三个和尚的身高,并赋值给变量m1,m2,m3
System.out.println("请输入和尚1的身高:");
Scanner sc = new Scanner(System.in);
int m1 = sc.nextInt();
System.out.println("请输入和尚2的身高:");
int m2 = sc.nextInt();
System.out.println("请输入和尚3的身高:");
int m3 = sc.nextInt();
//比较三个和尚的身高
int max1 = m1>m2?m1:m2;
int max2 = max1>m3?max1:m3;
//输出三个和尚的最高身高
System.out.println("三个和尚的最高身高是:"+max2);
}
}