Java常量
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。
实现运算的过程中,Java会将不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级,由byte,short,char—> int —> long—> float —> double
自动类型转换必须满足如下规则:
不能对boolean类型进行类型转换。
不能把对象类型转换成不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。因为容量大的数据类型(长整型)可能无法完全容纳容量小的数据类型(整型)的所有取值范围,比如长整型的10000000000L超过了int的范围,因此需要显式告诉编译器你知道可能会丢失精度,并且愿意进行这种转换。
转换过程中可能导致溢出或损失精度,必须注意数据类型的范围。例如:
int i =128; byte b = (byte)i; // 因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23; (int)-45.89f == -45
进行自动类型转换时,必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
public class ice { public static void main(String[] args){ char c1='a';//定义一个char类型 int i1 = c1;//char自动类型转换为int System.out.println("char自动类型转换为int后的值等于"+i1); char c2 = 'A';//定义一个char类型 int i2 = c2+1;//char 类型和 int 类型计算 System.out.println("char类型和int计算后的值等于"+i2); } }
下面这个例子实现了 char 与 int 间的转换:
Java修饰符
Java可以使用修饰符来修饰类中方法和属性。
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized
修饰符 含义 用途
default 默认访问级别,仅在同一包内可见 当类、方法或字段未使用其他访问修饰符时,默认为 default 访问级别
public 最高访问级别,对所有类可见 用于声明类、方法或字段可被其他类访问
protected 对同一包内的类和所有子类可见 通常用于限制字段和方法的访问范围,但同时允许子类访问
private 对本类可见 用于限制字段和方法的访问范围,仅允许同一类中的其他方法访问
final 表示不可改变 用于修饰类、方法或字段,表示其值或行为不可修改或继承
abstract 抽象类或方法,不能被实例化 用于声明抽象类或方法,必须在子类中实现具体的行为
static 静态成员,属于类而不是实例 用于声明静态字段或方法,可以直接通过类名访问,而不需要实例化
synchronized 同步方法或代码块,确保线程安全 用于声明方法或代码块,确保在多线程环境下的安全访问,同一时间只允许一个线程访问 synchronized 块内的代码