数据类型
数据类型 | 字节数 | 默认值 |
---|---|---|
整形(int) | 4 | 0 |
长整型(long) | 8 | 0 |
双精度(double) | 8 | 0.0 |
单精度(float) | 8 | 0.0 |
字符型(char) | 2 | \u0000 |
字节型(byte) | 1 | 0 |
短整型(short) | 2 | 0 |
布尔类型(boolean) | 1字节/1比特位 | false |
**包装类和基本类型的区别:
1)包装类型可以为null,而基本类型不可以;
2)包装类可以用于泛型,而基本类型不可以,泛型在编译时会进行类型擦除,最后只保留原始类型object,但基本类型不是object的子类;
3)基本类型比包装类更高效,首先基本类型直接储存数据,但包装类则存储堆中的引用,占内存,某些情况运算时用包装类会面临大量的拆箱装箱操作,耗时;
4)自动装箱和拆箱(基本类型转包装类叫装箱,反之未为拆箱)
类型转换分为两种,范围小的赋值给范围大的隐式转换和强制类型转换,但boolean类型与其他区类型不兼容,无法强转。
public static void main(String[] args) {
int a=1;
long b=2;
double c=3.0;
float d=4.0f;
char f='5';
byte g=6;
short h=7;
boolean j=true;
a=b;
b=a;//long>int
b=c;//double>long
c=b;
c=d;d=c;
c=f;
f=a;f=b;a=f;b=f;//int>char
f=g; g=f;
g=h;h=g;//short>byte
j=g;g=j;//boolean不可与其他类型发生强转
运算符
1、基本四则运算
+ - * / %
2、关系运算符
== != > < >= <=
3、逻辑运算符
&& || !
&& 与(前为假不判断后)
|| 或(前卫镇不判断后)
4、移位运算符
<< 左移
>> 右移
>>>无符号右移
左移原数*2,右移原数字/2
5、位运算符
& 按位与
| 按位或
~ 按位取反
^ 按位异或
6、条件运算符
三目运算符 a>b?a:b;