一、算术运算符
+、-、*、/、%、++、--
public class Test{
public static void main(String[] args){
int num1=10;
int num2=20;
int result=num1+num2;
System.out.println(result);//30
System.out.println(num1-num2);//-10
System.out.println(num1*num2);//200
System.out.println(num1/5);//2
System.out.println(num1%3);//1
}
}
++与--
++:自增1 --:自减1
public class Test{
public static void main(String[] args){
//++a先自增1,在使用
int a=10;
System.out.println(++a);//11
System.out.println(a);//11
//b++先使用,在自增1
int b=10;
System.out.println(b++);//10
System.out.println(b);//11
//--自减
int c=11;
System.out.println(c--);//11
System.out.println(c);//10
int d=21;
System.out.println(--d);//20
System.out.println(d);//20
}
}
1、算术运算符的深入
特殊点一:
public class Test{
public static void main(String[] args){
//byte类型做运算,会先向上转型成int类型(10是int类型)
//向上转型使用最高位补位(补到最高位)
//向下转型从高位开始舍弃
byte b1=10;
//b1---10----1010
// int----0000,0000,0000,0000,0000,0000,0000,1010
byte b2=20;
//b2----20----0001,0100
// int-----0000,0000,0000,0000,0000,0000,0001,0100
//结果:10与20的二进制表示结果互补
// 0000,0000,0000,0000,0000,0000,0000,1010
// 0000,0000,0000,0000,0000,0000,0001,0100
// 0000,0000,0000,0000,0000,0000,0001,1110
byte result=(byte) (b1+b2);
System.out.println(result);//30
//特殊点二:
short s1=10;
// s1----10----1010
// short----0000,0000,0000,1010
// int---0000,0000,0000,0000,0000,0000,0000,1010
short s2=20;
// s2-----20----1,0100
// short----0000,0000,0001,0100
// int------0000,0000,0000,0000,0000,0000,0001,0100
// 结果:
// s1:0000,0000,0000,0000,0000,0000,0000,1010
// s2:0000,0000,0000,0000,0000,0000,0001,0100
// 结果:0000,0000,0000,0000,0000,0000,0001,1110
// (short):0000,0000,0001,1110
short result=(short) (s1+s2);
System.out.println(result);
//特殊点三:
//除了btye、short类型做运算会向上转型成int类型外,其他的类型会向高看齐
//为什么btye、short类型做运算会向上转型成int类型呢?
//因为系统取数据时,都按32位取,btye类型是1个字节,占8位,不够32位,补成32位,short同理
byte b=10;
short s=10;
int i=10;
long l=10;
float f=10;
double d=10;
System.out.println(b+b);//结果的类型:int
System.out.println(s+s);//结果的类型:int
System.out.println(b+s);//结果的类型:int
System.out.println(b+i);//结果的类型:int
System.out.println(b+l);//结果的类型:long
System.out.println(i+l);//结果的类型:long
System.out.println(i+f);//结果的类型:float
System.out.println(d+l);//结果的类型:double
//特殊点四:char类型可以做算数运算,获取的是Unicode码
char c='a';//Unicode--97
int i=c+1;
System.out.println(i);//98
//特殊点五:小数做运算可能损失精度,后续会用BigDecimal,去解决小数运算损失精度问题
double d1=0.5;
double d2=0.4;
System.out.println(d1-d2);//0.09999999999999998
//特殊点六:++a;与b++;效果是一样的,分号表示执行语句的结束,不管先加还是后加,都得加
int a=10;
++a;
System.out.println(a);//11
int b=10;
b++;
System.out.println(b);//11
//特殊点七::num=(byte)(num+1);公示为了处理特殊点byte、short
byte num=10;
//研究++num的底层实现:num=(byte)(num+1);公示为了处理特殊点byte、short
++num;
System.out.println(num);//11
//特殊点八:
int i=0;
i=++i;
//底层实现:
i=(int)(i+1);
i=i;
System.out.println(i);//1
//特殊点九: i=i++;是特殊且固定的写法
int i=0;
i=i++;
//底层实现:
int temp=i;//temp记录了i的最初值0
i=(int)(i+1);//i---->1
i=temp;//i=0
System.out.println(i);//0
}
}
二、赋值运算符
=、+=、-=、*=、/=、%=
public class Test{
public static void main(String[] args){
int num=10;
num+=5;//num=(int)(num+5);
num-=5;//num=(int)(num-5);
num*=5;//num=(int)(num*5);
num/=5;//num=(int)(num/5);
num%=3;//num=(int)(num%3);
System.out.println(num);//1 前边都抵消掉了,只算最后的取余
//特殊点一:
short s=1;
s=s+1;
System.out.println(s);
//特殊点二:+=里边有强制类型转换---->s=(short)(s+1)
short s=1;
s+=1;
System.out.println(s);
}
}
三、关系运算符
==、!=、>、>=、<、<=
public class Test{
public static void main(String[] args){
boolean bool=10==20;
System.out.println(bool);//false
System.out.println(10!=20);//true
System.out.println(10>20);//false
System.out.println(10>=20);//false
System.out.println(10<20);//true
System.out.println(10<=20);//true
}
}
注意:
==是判断两个值是否相等
!=是判断两个是是否不相等
!=里的!是英文符号
关系运算符的结果都是boolean类型
四、Scanner
理解:接收从键盘输入的数据
//导包
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//创建Scanner类的对象
Scanner sc=new Scanner(System.in);
System.out.println("请输入int类型的数据");
int i=sc.nextInt();//输入数据赋值给变量i
System.out.println("请输入double类型的数据");
double d=sc.nextDouble();
System.out.println("请输入字符串类型的数据");
String str=sc.next();
System.out.println(i);
System.out.println(d);
System.out.println(str);
}
}