类型与运算
字面量和常量
常量:固定不变得值;
字面量:直接给出得值
变量
表示存储空间,用来存放某一类型的变量,无固定值。
定义变量
int age;
注意:变量必须初始化。
变量的分类
-
成员变量/字段(Field):直接定义在类的{}中的变量(方法外)
定义成员变量都使用static修饰
-
局部变量:定义在方法中的变量,变量除了成员变量就是局部变量
-
作用域: 成员变量:在所定义的类中起作用
局部变量:从定义的那个地方到就近{}结束
同一作用域内变量名不能重复定义
数据类型和分类
在Java中数据类型分两大类:
-
基本数据类型/原生数据类型:
数值型:
整数类型:byte,short,int,long(占用内存不同)
小数类型:float,double
字符型:char
布尔型:boolean
-
引用数据类型/对象数据类型:类/接口/
数据类型
Java中char占2个字节
boolean:boolean类型的值只能是true和false;
整数类型:二进制整数以0B或者0b开头(Java7以后允许在数字间用"_")
八进制整数以0开头
十六进制以0x开头
Long类型:用值用L结尾;
小数类型:默认为double类型(小数精度不准确)
科学计数的形式3.14e2(3.14*10^2);
float pi = 3.14是错误的。应该为float pi = 3.14F;
BigDecimal表示任何精度的数据
字符类型:
注意:用十六机制数来表示字符要用\ux的格式(并且至少凑到4位),如 char c = ‘\ux0041’;
最常用引用类型
String:String是一个类
字符串用+连接
数据溢出
数据超过数据类型临界范围,为溢出。
基本类型的自动转换
强制类型转换可能会导致溢出或者精度损失
如果是 byte = 125; 底层会自动转换,因为125在byte范围里面
表达式中数据类型会自动提升,最终结果的类型是表达式中数据类型最高的那一个
char byte short会自动转换为int类型
例如:byte b = 25;
b = b + 3; 是不行的,因为表达式中b会自动转化为int。而int不能赋值给byte类型
String和任意数据连接后都是字符串
自增自减
++和–都只能对变量操作。
前后之分:++前置
a变量自身加1再运算
++后置
a变量自身先加1,把递增之前的原始值去做运算
赋值运算符
+=、-=等都隐式类型转换
比较运算符
比较运算符的结果都是Boolean类型
判断一个数的奇偶判断除2余数是否为0(不能判断余数是否为1,因为负数);
逻辑运算符
与: & 位与
&& 短路与
& 和 &&的区别:&&如果A表达式为false则不判断B直接返回false。但是&如果A表达式为false但任然继续判断B再返回false
或:类似同上
移位运算
负数的二进制是原码求反码再求其补码