1. 变量的作用域
变量的作用域分为4个级别:类级、对象实例级、方法级、块级,如果不同作用域中变量重名,遵循就近原则;
- 类级变量又称全局变量或静态变量,需要用 static 关键词修饰,类定义后便存在,占用内存空间,可以通过类名来访问,不需要实例化;
- 对象实例级变量又称成员变量,实例化后会分配内存空间,有默认初始值,String 类型默认 null,int 类型默认0;
- 方法级变量又称局部变量,在方法内部定义,没默认初始值,必须定义和赋值才能使用;
2. 基本数据类型
8种基本数据类型:byte,short,int,float,long,double,boolean,char;
按内存占用级数:
- bit(b) 位是计算机存储设备的最小信息单元(1B = 8 bit,1KB = 1024B 同理 MB GB TB);
- byte(B) 字节(-128—127)是计算机中最基本的存储单元;
boolean; - short(-215—215-1);
char 字符(0-65545),‘’中只能有一个字符,不能没有字符,可以空格因为一个空格对应一个字符; - int(-231—231-1);
float(1.401298e-45 ~ 3.402823e+38)表示float的后面建议加F(一般大写,可以小写);
-System.out.println()里和运算后都是默认int,所以定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写); - long(-263—263-1)表示long的数据后面建议添加L(一般大写,可以小写);
double(4.9000000e-324 ~ 1.797693e+308),e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方;
-默认浮点数是double,所以定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写);
a. 自动类型转换
- byte,short,char 在进行运算时会先提升为 int再计算 ;
char 到 int,按 ASCII 码表转换,如‘a’对应97; - 取值范围小的和取值范围大的进行运算时,会将小的提升为大的之后再进行运算;
数据范围:bit < byte < short = char < int < long < float < double;
浮点数占内存一样但范围更大因为用 IEEE754 来压缩了的科学计数法,丢失精确度,例如 int 到 double 小数位会被直接舍弃; - boolean不能与其他类型相互转换;
i. 十进制转二进制
b. 强制类型转换
i. (XXX)
ii. parseXXX()
8种基本类型对应8个包装类:Byte,Short,Integer,Float,Long,Double,Boolean,Character;
- 自动装箱:系统会自动把"基本数据类型"转换为其对应的"包装类型";
- 自动拆箱:系统会自动把"包装类型"转换为其对应的"基本数据类型";
String s = "123";
byte b = Byte.parseByte(s);
System.out.println(b);
short sh = Short.parseShort(s);
System.out.println(sh);
int i = Integer.parseInt(s);
System.out.println(i);
Long l = Long.parseLong(s);
System.out.println(l);
double d = Double.parseDouble(s);
System.out.println(d);
//没有Boolean.parse和Character.parse
3. 引用数据类型
除基本类型外所有数据类型,包括 String 与包装类,StringBuilder 等;
详见:Java String 与 StringBuilder