读者可订阅专栏:Java开发指南 |【CSDN@秋说】
文章目录
- Java常量
- 自动类型转换
- Java修饰符
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 块内的代码 |