新人初学java,以下是关于近期学习的一个小总结,便于督促随时总结记录,如有错误,请指正
目录
一、变量和类型
我们所讨论的 "变量" 主要和我们的 "内存" 这样的硬件设备密切相关
- 1.基本数据类型:8种,包括:byte、short、int、float、double、long、char、boolean(8种)
- 2.字节:计算机中表示空间大小的基本单位.
- 其中,1Byte = 8bite, 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB.
二、基本数据类型
序号 | 基本类型 | byte | bite | 取值范围 | |
1 | byte: | 1 | 8 | -2^7 ~ 2^7 -1 | |
2 | 字符 | char | 2 | 16 | -2^15 ~ 2^15 -1 |
3 | 整型 | int | 4 | 32 | -2^31 ~ 2^31 -1 |
4 | short | 2 | 16 | -2^15 ~ 2^15 -1 | |
5 | long | 8 | 64 | -2^63 ~ 2^63 -1 | |
6 | 浮点型 | float | 4 | 32 | |
7 | double | 8 | 64 | ||
8 | boolean | true 、 false |
注意事项:
- 1.char中 ,单引号+单个字母表示字符字面值
- 2.float:4字节,取值范围同long,(由于取值范围较小,一般不推荐使用)
- 3.浮点型:内存布局遵守 IEEE 754 标准(和C语言一样), 即不能使用2^n表示取值范围,(使用有限的内存空间表示无限的小数存在精度误差)
- 4.boolean类型和int不能相互转换
- 5.计算过程中,若数据超过类型本身取值范围,会出现溢出现象
2.2 包装类数据类型
8种:int----->Integer、char----->Character、其余对应包装类为首字母大写对应的该类
1.string字符串:双引号+若干字符表示(引用类型)
2.转义字符:
- \n :换行
- \t :制表符
- \' :单引号
- \" :双引号
- \\:反斜杠
3. 字符串之后的+号都是拼接,若+号出现在字符串之前则可执行加法操作
4.变量命名规则:
- 一个变量名只能包含数字, 字母, 下划线
- 数字不能开头.
- 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量.
- 注意: 虽然语法上也允许使用中文/美元符($)命名变量, 不推荐
- 推荐小驼峰(maxNum)形式命名
- 类名:首字母大写
注意!!! 常量不能在程序运行过程中发生修改
2.3类型之间的相互转换
- int字面值常量 给 byte 赋值
- int给 long,double 赋值
- boolean不能强制转换
- 强制转换可能会出现精度丢失(范围大的类型赋值给范围小的,例如long--->int)
不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.(也即是:4个字节int赋值给8字节long, 4--->8字节,类似小数点补000,不改变原值;反之原值小数位数减少,精度发生变化)
2.4数值提升
- 不同类型的数据混合运算, 范围小的会提升成范围大的.
- 2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算,如下:
byte a = 10;
byte b = 20;
byte c = a+b;(会报错)
byte c = (byte)(a+b);(编译通过)
三、运算符
- int / int 结果还是 int, 需要使用 double 来计算(计算结果可能会有小数)
- 0 不能作为除数
- %表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模
- 增量赋值运算符 += -= *= /= %= ( int a = 1; a += 1; 若a为其他数据类型,使用“a +=1”形式会自动完成强制类型转换,若写作a=a+1不可完成强制类型转换)
- 自增/自减运算符 ++ --(若用自增自减给其他变量b赋值,遵循a++ 先使用,后++,++a 先++,后使用)
- 关系运算符:== != < > <= >= (值为布尔类型boolean :true、false)
1.逻辑运算符
- 逻辑与&&:表达式1 && 表达式2 均为布尔表达式, 2个为真则为真
- 逻辑与&&:支持短路模式:表达式1为false则不执行表达式2,整个返回值为false,即使表达式2不成立也不会发生异常
- 逻辑或||:支持短路模式:表达式1为true则不执行表达式2,整个返回值为true,即使表达式2不成立也不会发生异常
2.移位运算符:
左移:(乘法)
0000 1011(11) <<1位 ---> 0001 0110 ---> 16+6=22 11*2^1
0000 1011 <<2位 ---> 0010 1100 ---> 32+12=44 11*2^2
右移:(除法)
0000 1011 >>1位 ---> 0000 0101 ---> 5 11/2^1
0000 1011 >>2位 ---> 0000 0010 ---> 2 11/2^2