字符型:char 数值型:byte,short,int,long,float,double 布尔型:booleanjava
类型 | 字节数 | 取值范围 |
---|---|---|
byte | 1 | -128-127 |
char | 2 | 0-65535 |
short | 2 | -2^15 - 2^15-1 |
int | 4 | -2^31 - 2^31-1 |
long | 8 | -2^63 - 2^63-1 |
float | 4 | |
double | 8 | |
boolean | true/false |
java中没有byte和short的表示法。
整数数值默认是 int 使用long类型在数值后面加l或者L
浮点类型默认是 double 使用float类型在数值后面加 d或者D
char类型用单引号
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)
java中负数表示方法:
以负数-5为例:
1.先将-5的绝对值转换成二进制,即为0000 0101;
2.而后求该二进制的反码,即为 1111 1010;
3.最后将反码加1,即为:1111 1011bash
java中默认使用十进制
二进制: 0b* (0,1)
八进制: 0* (0-7) 十六进制: 0X* (0-f)
相比二进制和八进制 十六进制用的较多spa
不一样的类型计算时,自动向上转型
如:int i=1;
short s=2;
float f=1.3f;
double d=1.2;
long l=10L;
i+s 自动转型为 int
i+f 自动转型为float
i+d 自动转型为doulbe
i+l 自动转型为long
i+s+f+d+l 自动转型为double
两个整数相除时只会保留整数部分code
int a=1;
a++ 表示 a=a+1
a-- 表示 a=a-1
注意 short 自增长或自减小时 结果仍是short
同时支持 --a ++a
a++和++a不一样在于第一种是先计算后自增 第二种是先自增再计算string
int a=1;
int b=1;
System.out.println("(b + a++)="+(b + a++)+" a="+a);//(b + a++)=2 a=2
a=1;
b=1;
System.out.println("(b + ++a) ="+(b + ++a)+" a="+a);//(b + ++a) =3 a=2
复制代码
& 位与
将两个数值对应的二进制,每一位进行与运算 1 1 为 1, 1 0 为 0 ,0 0 为 0 | 位或
将两个数值对应的二进制,每一位进行或运算 1 1 为 1, 1 0 为 1 ,0 0 为 0 ^ 异或
将两个数值对应的二进制,每一位进行异或运算 1 1 为 0, 1 0 为 1 ,0 0 为 0 一个数值异或两次一样的数后为自己table
符号 | & | | | ^ |
---|---|---|---|
1:1 | 1 | 1 | 0 |
1:0 | 0 | 1 | 1 |
0:0 | 0 | 0 | 0 |
~ 取反
一元运算符 将数值对应的二进制每一位取反
<< 左位移
将数值对应的二进制向左移动 移动后用0补齐 使用方式
int a=3;
int b=a<<2;//12 即0000 0000 0000 0011 -> 0000 0000 0000 1100
>> 右位移
将数值对应的二进制向右移动 若是第一位是1 则用1 补齐 若是是0 则用0补齐
int a=9;
int b=a>>2;//2 即 0000 0000 0000 1001 -> 0000 0000 0000 0010
int a=-6;
int b=a>>2; //-2 即 1111 1111 1111 1010 ->1111 1111 1111 1110
>>> 无符号右位移
将数值对应的二进制向右移动 不过第一位是几 都用0 补齐 对于正数没有影响,负数的话就会变为正数
int a=-6;
int b=a>>>2;// 即 1111 1111 1111 1010 -> 0011 1111 1111 1110 ##逻辑运算符 & 与
两边都为true时为true
&& 短路与
两边都为true时为true 与 & 区别 && 在左侧条件为false时不会再判断右侧条件 而 & 左侧为false时还会判断右侧条件
| 或
两边至少有一个true 即为 true 都为false才为false
|| 短语与
两边至少有一个true 即为 true 都为false才为false 与 | 区别 || 在左侧条件为true时,即已经判断结果true不会再判断右侧条件 而 |左侧即使为true还会继续判断右侧条件 #修饰符 类和方法修饰符访问权限范围class
符号 | 父子类关系 | 同一个包 | 外部类 |
---|---|---|---|
public | 是 | 是 | 是 |
protected | 是 | 是 | 否 |
default | 否 | 是 | 否 |
private | 否 | 否 | 否 |