类型转换
Java为强类型语言,在进行有些运算时,要使用类型转换
低--------------------------------->高
byte,short,char -> int -> long -> float -> double
运算中,不同类型的数据先转换为同一类型,再进行运算
强制类型转换
由高到低,需要进行强制类型转换
// 强制转换 (类型)变量名 高->低
int i =128;
byte b = (byte) i; // -128,因为byte最大值为127(内存溢出)
自动类型转换
由低到高,会自动进行类型转换
int i = 128;
double d = i; // 自动类型转换
注意点:
- 不能对布尔值进行类型转换
- 不能把类型转换为不相关的类型
- 把高容量转换至低容量时,强制类型转换
- 转换时可能出现内存溢出或精度问题
溢出问题
操作比较大的数时,需要注意溢出问题
JDK7新特性:数字间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years; // 计算溢出
long total2 = money * years; // 在转换为long之前,已经溢出了
long total3 = money * (long)years; // 先把一个数转换为long
System.out.println(total); // -1474836480
System.out.println(total2); // -1474836480
System.out.println(total3); // 20000000000
变量
Java为强类型语言,每个变量都必须声明其类.
Java变量要素包括变量名,变量类型和作用域.
变量作用域
- 类变量:从属于类的变量
public class Variable {
// 类变量
static double salary = 1000_0000.0000_0000;
// main方法
public static void main(String[] args) {
// 类变量(static):从属于类的变量
System.out.println(salary);
}
}
- 实例变量:从属于对象
会自动初始化为默认值(0,0.0,false,null),除了基本类型
其余类型默认值都为null
public class Variable {
// 实例变量:在类中,在方法外;从属于对象
// 可以不用进行初始化,会自动初始化为默认值(0、0.0、null、false)
String name;
int age;
// main方法
public static void main(String[] args) {
// 使用实例变量:变量类型 变量名称 = new Variable
Variable variable = new Variable();
System.out.println(variable.name); // null
System.out.println(variable.age); // 0
}
}
- 局部变量:从属于当前方法
使用前必须进行声明和初始化
public class Variable {
// main方法
public static void main(String[] args) {
// 局部变量:在方法中,使用前必须声明和初始化,作用域仅在当前方法中
int i = 0;
method();
}
// 其他方法
public static void method() {
// System.out.println(i); 报错,因为 i 为局部变量
}
}
常量
初始化之后不可再改变的值
常量名一般用大写
常量修饰符:final
public class Demo03 {
// 修饰符,不区分先后顺序
static final double PI = 3.14;
final static double PI2 = 3.14;
public static void main(String[] args) {
// 常量
System.out.println(PI);
System.out.println(PI2);
}
}
命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰法:
monthSalary
- 局部变量:首字母小写和驼峰法
- 常量:全大写字母和下划线:
MAX_VALUE
- 类名:首字母大写和驼峰法:
AddClass
- 方法名:首字母小写和驼峰法:
addMethod()