文章目录
变量 = 变量名 + 值 + 数据类型
数据类型
整型的类型
浮点型的类型
关于计算机中的浮点数可见:计算机系统基础(四)浮点数
- 关于浮点数在机器中存放形式的简单说明:浮点数 = 符号位 + 指数位 + 尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)。
字符类型
字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),多个字符我们用字符串 String。
https://tool.chinaz.com/Tools/Unicode.aspx
ASCII码
Unicode编码
UTF-8编码
boolean类型
true false
boolean 类型占一个字节
基本数据类型转换
自动类型转换
自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型。
注意,(byte,short) 和 char 之间不会相互自动转换,
但是它们三个都可以转换为 int 类型。
boolean 不参与转换。
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。
基本数据类型和String类型的转换
基本数据类型转 String
int n1 = 100;
System.out.println(String.valueOf(n1));;
System.out.println(n1 + "");
适用于 int \ float \ double \ boolean
String 转基本数据类型
System.out.println(Integer.parseInt("123"));
System.out.println(Double.parseDouble("123.1"));
基本数据类型的包装类
成员变量与局部变量的区别?
- 语法形式:从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被
public
,private
,static
等修饰符所修饰,而局部变量不能被访问控制修饰符及static
所修饰;但是,成员变量和局部变量都能被final
所修饰。 - 存储方式:从变量在内存中的存储方式来看,如果成员变量是使用
static
修饰的,那么这个成员变量是属于类的,如果没有使用static
修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。 - 生存时间:从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。
- 默认值:从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被
final
修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。
为什么成员变量有默认值?
- 先不考虑变量类型,如果没有默认值会怎样?变量存储的是内存地址对应的任意随机值,程序读取该值运行会出现意外。
- 默认值有两种设置方式:手动和自动,根据第一点,没有手动赋值一定要自动赋值。成员变量在运行时可借助反射等方法手动赋值,而局部变量不行。
- 对于编译器(javac)来说,局部变量没赋值很好判断,可以直接报错。而成员变量可能是运行时赋值,无法判断,误报“没默认值”又会影响用户体验,所以采用自动赋默认值。