Java变量和数据类型
变量
基本概念
用来记录程序中的单个数据内容(本质是向内存申请的一个存储单元),由于数据内容可以发生变化,故称为“变量”
声明方式
数据类型 变量名 ( = 初始值);
注意事项
- 必须声明
- 必须指定数据类型(java是强类型语言)
- 必须初始化
- 必须唯一
数据类型
基本数据类型
类型 | 名字 | 所占内存(/字节) | 数据范围 | 备注 |
---|---|---|---|---|
整数 | byte | 1 | -128 ~ 127(-2^7 ~ 2^7-1 ) | |
整数 | short | 2 | -32768 ~ 32767 (-2^15 ~ 2^15-1) | |
整数 | int | 4 | -2147483648 ~ 2147483647(21亿) (-2^31 ~ 2^31-1) | 推荐使用,程序中直接给出的整数类型常量(直接量/字面量),默认为int类型 |
整数 | long | 8 | -2^63 ~ 2^63-1 (92亿个亿) | 常量后面加上 l 或 L 表明为long |
浮点型 | float | 4 | -3.403E38 ~ 3.403E38 | 单精度浮点数,表示7位有效数字,直接量后面加 f 或者 F 表示float类型 |
浮点型 | double | 8 | -1.798E308 ~ 1.798E308 | 推荐使用,双精度浮点数,表示15位有效数字,程序中直接给出的小数类型默认为double类型 |
布尔类型 | boolean | 1 | true / false | |
字符类型 | char | 2 | 0 ~ 655355 | 占两个字节且无符号位;需使用ASCII或者Unicode字符集编码对应数据的存储 |
常用的ASCII码
空字符 - 0
换行符 - 10
空 格 - 32
‘0’ - 48
‘A’ - 65
‘a’ - 97
引用数据类型
数组、类、接口、枚举、标注(注解)
类型转换
- 自动类型转换(小类型到大类型转换,也叫向上转型)
基本数据类型:
引用数据类型:
子类转父类 - 强制类型转换(大类型到小类型的转换,也叫做向下转型或显示类型转换)
基本数据类型:
目标类型变量名= (目标类型)源类型变量名;
强转会造成数据损失,具体根据具体值和数据类型的存储大小计算
引用数据类型:
父类转子类
注:
- 引用数据的转换必须发生在父子类直接,否则编译保错
- 若强转的目标类型并不是该引用真正指向的数据类型时编译通过,但在运行阶段发生类型转换异常,可通过判断 引用变量 instanceof 数据类型 避免该错误发生
标识符命名法则
- 由数字、字母、下划线以及$组成,但数字不能开头(数字开头会被默认认为是int类型,导致出错)
- 不能使用Java关键字
- 区分大小写
作用
可以给变量、类、属性、方法、包命名
进制
常见进制
- 十进制:逢十进一,十进制权重是:10^0、 10^1、 10^2、…
- 二进制:逢二进一,二进制的权重是2^0、 2^1、 2^2、…,二进制中的最高位(最左边)用于代表符号位,若该位是0则表示非负数,若该位是1则表示负数
- 八进制和十六进制其实都是二进制的简写
进制转换
-
正十进制转二进制
- 除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序
- 拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0
-
正二进制转十进制
- 加权法,使用二进制中的每个数字乘以当前位的权重在累加起来
-
负十进制转二进制
- 将绝对值转为二进制,按位取反再加1(这里需要理解补码,参考这个博客:https://blog.csdn.net/zl10086111/article/details/80907428/)
-
负二进制转十进制
- 先减1再按位取反,合并为十进制后添负号
单个字节(8个二进制位)表示的整数范围
- 非负数范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
- 负数范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
- 单个字节的整数范围:-2^7 ~ 2^7-1 => -128 ~ 127