目录
1.算术运算符
小数有可能会不精确,整数除以整数得整数
例子
package demo1;
public class Hello {
public static void main(String[] args) {
System.out.println(1+2);
System.out.println(1-2);
System.out.println(5/2);
System.out.println(5.0/2);
System.out.println(5%2);
System.out.println(1.1+1.01);
}
}
练习
从键盘输入一个三位数,将三个位拆分打印
package demo1;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter Number");
int n=sc.nextInt();
int baiwei=n/100;
int shiwei=n/10%10;
int gewei=n%10;
System.out.println(n);
System.out.println(baiwei);
System.out.println(shiwei);
System.out.println(gewei);
}
}
不同种类型运算
类型的取值范围
byte<short<int<long<float<double
类型不一样,要转换,取值范围小的会转为取值范围大的,然后运算
byte,short,char三种类型运算会提升为int,再运算
char会转成ASCII表对应的值
隐式转换
系统自动提升
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
double b=a;
System.out.println(b);
}
}
b的结果是10.0,隐式转换,转成范围大的数据
package demo1;
public class Hello {
public static void main(String[] args) {
byte a=10;
byte b=6;
System.out.println(a+b);
}
}
结果是int
显示转换
把取值范围大的,赋值给取值范围小的变量
数据比较大,强转可能会错误
package demo1;
public class Hello {
public static void main(String[] args) {
double a=10.9999;
int b=(int)a;
System.out.println(b);
}
}
package demo1;
public class Hello {
public static void main(String[] args) {
byte a=100;
byte b=100;
byte result=(byte)(a+b);
System.out.println(result);
}
}
结果超过byte的取值范围了,取值范围出错
字符串的"+"
当+符号有字符串,那就是拼接了
package demo1;
public class Hello {
public static void main(String[] args) {
String a="100";
int b=100;
System.out.println(a+b);
}
}
连续加,从左到右执行
package demo1;
public class Hello {
public static void main(String[] args) {
System.out.println(1+99+"年");
}
}
易错
package demo1;
public class Hello {
public static void main(String[] args) {
System.out.println(1+99+"年"+1+99);
}
}
2.自增自减运算符
符号在前,就先运算
在后,就后运算
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
a++;
System.out.println(a);
++a;
System.out.println(a);
a--;
System.out.println(a);
--a;
System.out.println(a);
}
}
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=a++;
System.out.println(a);
System.out.println(b);
}
}
a++,先赋值给b,再自增,所以b是10,a是11
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=++a;
System.out.println(a);
System.out.println(b);
}
}
++a,先自增,再赋值给b,所以a是11,b是11
3.赋值运算符
运算后赋值,记得有转换类型,之前提到的规则不要忘
4.关系运算符
结果是布尔类型
==不要写成=,两个不一样
==是判断等不等
=是赋值的意思
5.逻辑运算符
1.&
有一个false,就为false
左右两边都要满足
2.|
有一个true,就为true
左右两边满足一个就可以
3.^
异或异或,异才是true
左右两边不一样
4.!
取反
5.&&
结果与&是一样的,区别是左边如果确定了结果,就不用执行右边了
用&&
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=20;
boolean result=a<0&&++b>10;
System.out.println(result);
//a<0为false,所以resul为false,因此不会执行右边,b为20
System.out.println(a);
System.out.println(b);
}
}
用&
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=20;
boolean result=a<0&++b>10;
System.out.println(result);
//a<0为false,所以resul为false,执行右边,b为21
System.out.println(a);
System.out.println(b);
}
}
6.||
用||
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=20;
boolean result=a<30||++b>10;
System.out.println(result);
//a<30为true,所以resul为true,不执行右边,b为20
System.out.println(a);
System.out.println(b);
}
}
用|
package demo1;
public class Hello {
public static void main(String[] args) {
int a=10;
int b=20;
boolean result=a<30|++b>10;
System.out.println(result);
//a<30为true,所以resul为true,不执行右边,b为20
System.out.println(a);
System.out.println(b);
}
}
6.三元运算符
package demo1;
public class Hello {
public static void main(String[] args) {
int a1 = 10;
int b1 = 120;
int result1 = a1 > b1 ? a1 : b1;
System.out.println(result1);
int a2 = 10;
int b2 = 20;
int c2 = 30;
int temp;
temp=a2>b2?a2:b2;
int result2=temp>b2?temp:b2;
System.out.println(result2);
}
}