数据类型
名称 | 大小 (字节) | 大小 | 默认值 |
字节型 byte | 1 | -2^7~2^7-1 | 0 |
短整型 short | 2 | -2^15~2^15-1 | 0 |
整型 int | 4 | -2^31~2^31-1 | 0 |
长整型 long | 8 | -2^63~2^63-1 | 0 |
单精度浮点型 float | 4 | -2^31~2^31-1 | 0.0 |
双精度浮点型 double | 8 | -2^63~2^63-1 | 0.0 |
字符型 char | 2 | 0~2^16-1 | '\u0000' |
布尔型 boolean | 不确定 | --- | false |
注意:
1.byte取值范围是-128-127,初始化是不能超出其范围
2.short和char都是两个字节,赋值时都需要强制类型转换。(取值范围不同)!!
3.声明(所有类型)是一定要赋初值,否则会报错的
4.long初始化时给数字后面加L
5.float初始化时给数字后面加L,否则也会报错
6.double类型和整型在底层组织数据方式不一样,可能造成精度丢失。Java中的double类型的内存布局遵守IEEE 754标准,尝试用使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差。
7.char两个字节,并且没有负数,只能表示字符
8.boolean只有两种取值true和false,默认为false
-----------------------------分割线
1.int作为局部变量没有初始化的,无法进行编译。这也体现了Java的安全性。
2.计算机中的字符本质是一个整数,在C语言中使用ASCLL表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文。
3.转义字符:
转义字符 | 解释 |
\n | 换行 |
\t | 水平制表符 |
\' | 单引号 |
\'' | 双引号 |
\\ | 反斜杠 |
4. 还有一种特殊的符号‘+’,表示字符串的拼接。当一个‘+’表达式中存在字符串的时候,都是执行字符串的拼接行为,拼接下来必定是字符串。
5.变量的命名规则:只能包含数字、字符、下划线、$,而且不以数字开头
6.常量不能在程序运行时发生改变,final修饰的变量可以在定义时不赋初值,但是赋值后不能进行二次赋值。
7.关于强制类型转换:小类型赋给大类型会发生隐式转换;大类型若要赋给小类型必须进行强制类型转换。并且boolean类型不能和其他类型进行转换。
8.算数转换:小类型和大类型之间运算,小类型会整形提升为大类型进行运算,结果仍是大类型。
byte a = 10;
byte b = 20;
// byte c = a + b; //编译报错
byte c = (byte)(a+b);
两个byte类型进行运算结果不是byte类型吗??是因为计算的时候会将a和b都提升为int类型,在进行运算,得到的结果也是int。结果赋值给c会报错。 为什么要提升为int??这是因为CPU通过以4个字节为单位从内存中读取数据,为了硬件上实现方便,会进行整形提升。
9. char和short都是两个字节,但是他们不能进行相互赋值,因为他们的取值范围不同
short s = 10;
char c = (char)s; //报错
System.out.println(c == s); //报错
运算符
位运算符分为以上几种:
1.算数运算符:+ - * / %
a.首先,众所周知0不能作为除数,否则会抛出数据异常
b.%表示取余数,不仅可以对int求余,还可以对double类型数据取余数
c.+= -= *= /= %= 明白 a += 1 相当于 a = a+1即可
d.自增自减运算符++、--
a++;++a;在没有赋值的操作中效果是一样的,都是+1的效果。而在赋值的式子中就要注意啦:
eg:
int a = 10;
int b = a++;
System.out.println(b);
int c = ++a;
System.out.println(c);
这个代码运行出来b是10,c是11。由此可以得出结轮:a++是先赋值后++,++a是先++后赋值。
2.关系运算符:== != < > <= >=
a.关系运算符返回值的都是boolean类型
3.逻辑运算符: && || !
a.逻辑运算符的操作数和返回值都是boolean类型
b.短路原则:即对于&&,如果左侧表达式为false,则结果为false
对于||,如果左侧的表达式为true,则结果为true
4.位运算符:& | ~ ^
a.表示按二进制位运算
b.& | 当操作数为boolean类型时,表示布尔运算,但是不支持短路操作,所以用&& || 还是比较好的
5.移位运算符:<< >> >>>
a.<<表示左移,最右侧补0;左移N位,相当于给原数字乘以2的N次方
b.>>表示右移,最左侧补符号位;右移N位,相当于给原数字除以2的N次方
6.条件运算符:表达式1 ? 表达式2:表达式3
a.若表达式1成立,执行表达式2,不成立则执行表达式3
b.即表达式1必须为boolean类型
。。。。。。