强制转换
int money=10_0000_0000; int year=20; int total=money*year;//溢出 -1474836480 System.out.println(total); long total1=money*year;//在转换前 已经×出结果了 -1474836480 System.out.println(total1); long total2=(long)money*year;//20000000000 System.out.println(total2);
注意点
-
不能对布尔值进行转换
-
高到低是强制转换 int a=128; byte b=byte(a); //b=-128
-
转换可能溢出和精度出现问题
变量
-
局部变量
-
实例变量 从属对象如果不自动初始化 这个类型的默认值
布尔值是 false
-
类变量
常量
final
运算符
算术运算符+ - * / %(取余) ++ --
赋值运算符=
关系运算符< > >= <= == != instanceof
逻辑运算符 && || !
int a=10; int b=20; int c=30; int d=40; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b);// 输出0
一元运算符 ++ --
//++ -- 自增 自减 一元运算符 int a =3; int b=a++; //执行完这行代码后,先给b赋值,然后再自增 int c=++a; //执行完这行代码前,自增,然后再赋值 System.out.println(a);//输出a=5 System.out.println(b);//输出b=3 System.out.println(c);//输出c=5
int n=7; int m=7; int o=2*++n; int j=2*m++; System.out.println(n);//输出n=8 System.out.println(m);//输出m=8 System.out.println(o);//输出o=16 System.out.println(j);//输出j=14
逻辑运算符
-
与(and) 或(or)非(取反)
boolean a=true; boolean b=false; System.out.println("a&&b:"+(a&&b)); System.out.println("a||b"+(a||b)); System.out.println("!(a&&b):"+!(a&&b)); //短路测试 int c=5; boolean d=(c<4)&&(c++<4); System.out.println(d); System.out.println(c);//输出c=5
位运算符
A=0011 1100 B=0000 1101 ------------------------- A&B=0000 1100 A/B=0011 1101 A^B=0011 0001相同则为0 不同则为1 如何使2*8=16最快 << *2 >> /2 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 System.out.print(2<<3);
三元运算符
//x? y:z //如果x==ture,则结果为y,否者结果为z int s=80; String type =s>60? "及格":"不及格"; System.out.println(type);//输出 及格
-