八种基本数据类型
浮点数的误差问题
float f = 0.1f
double d = 1.0 / 10
System.out.println(f == d) //false,使用BigDecimal类进行精确的浮点运算,使用BigInteger类进行精确的整形运算
类型转换
- 自动类型转换
int也可以转换成byte,short,char,但是int的范围必须在byte(-128~127),short,char(0~65535)可以表示的范围之内 - 强制类型转换
//测试类型提升
public class TypePromotionTest {
public static void main(String[] args) {
int a = 3;
long b = 4;
double d = 5.3;
//int c = a + b; //a+b会变成long类型,类型自动提升
//float f = a + d; //a+d会变成double类型,类型自动提升
//常见错误
int money = 1000000000; //10亿
int year = 20;
long total = money * year; //返回负数,要进行强制类型转换
System.out.println(total);
//一个人70年心跳多少次
long times = 70L * 60 * 24 * 365 * 70; //提前转换成long类型
System.out.println(times);
}
}
JDK7.0的新特性
- 二进制整数
- 下划线分割符
//二进制整数
public class Test {
public static void main(String[] args) {
int a = 0b00000000000000000000000000000011; //int占4个字节,所以占用32位
int b=1_3435_0564
System.out.println(a); //3
System.out.println(a); //134350564
}
}
成员变量,局部变量和常量
局部变量在使用前一定要初始化
final关键字定义常量,一般大写,加下划线分隔单词
变量命名规范
- 变量和方法名
首字母小写和驼峰原则run runRun run() runRun() - 类名
首字母大写和驼峰原则Man GoodMan - 常量
大写加下划线分隔MAX_VALUE
运算符
- 算术运算符(+,-,*,/,%,++,–)
注意:浮点数也可以使用%,+号在操作字符串的时候,只要+有一边为字符串,+就变为连接符 - 赋值运算符(=)
- 关系运算符(>,>=,<,<=,==,!=,instanceof)
- 逻辑运算符(&&,||,!)
- 位运算符(&,|,^,~,>>,<<,>>>)
~取反
&位与
|位或
^位异或
>>>无符号右移,忽略符号位,空位都以0补齐 - 条件运算符(? :)
- 扩展赋值运算符(+=,*=,-=,/=)