这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
今天继续~
常量
- 在运行时常量不可被修改
- 使用final关键字来定义
- 例子:
final double a = 0.01
ps:常量名一般为大写,以便于区分
类型转换
- 不能对boolean值进行类型转换
- 把容量大的类型转换为容量小的类型需要强制转换
- 浮点数转换为整数是通过舍弃小数的进行转换的
自动类型转换
- 转换之前的数据类型位数要小于转换后的数据类型位数,如float -> double,byte -> int
public class LeiXingZhuanHuan{
public static void main(String[] args){
float a = 1.2;
int b = a;// 输出1
char c = 'A';
int d = c+1;// 输出66,A是65
}
}
复制代码
强制类型转换
通过在值前的括号以及括号内的类型进行强转:
public class QiangZhuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;
}
}
复制代码
java的变量类型
public class Variable{
static int allClicks = 0; // 类变量
String str = "hello world"; // 实例变量
public void method(){
int i = 0; // 局部变量
}
}
复制代码
类变量
- 也称静态变量,必须用static来声明
- 静态变量一般用在声明常量的时候,初始化后不可改变
- 在程序第一次访问的时候被创建,在程序结束时销毁
- 大部分的静态变量均为public类型
- 静态变量可以通过类名+变量名的形式访问
public class Test {
private static double number;// 这就是一个类变量
public static final String name = "程序员";
public static void main(String[] args){
}
}
复制代码
实例变量
- 声明在类中,但是在构造方法,方法或语句块之外
- 在对象实例化的时候才会确定实例变量
- 在对象创建的时候创建,对象销毁的时候销毁
- 所有的实例变量应该都需要被引用
- 访问修饰符可以修饰实例变量(public,private等)
public class Test{
public String name;// 这就是一个实例变量
private double age;// 私有变量,只在本类可见
public static void main(String[] args){
}
}
复制代码
局部变量
- 声明在构造方法,方法或者语句块中
- 局部变量在方法执行时创建,结束时销毁
- 局部变量没有默认值,所以必须声明
public class Test{
public void Local(){
int age = 0;// 这就是局部变量
}
public static void main(String[] args){
}
}
复制代码
java修饰符
访问修饰符
public修饰符
- 声明为公有的变量,方法和构造方法可以在任何类中被访问
- 类中的所有公有方法和变量都会被子类继承
public static void main(String[] args) {
}
复制代码
private修饰符
- 被声明为私有的变量,方法和构造方法只能在类内部访问
- 主要用处在于保护类的数据
- 可以通过类中的getter方法进行外部调用
public class Private {
private String format;
public String getter() {
return this.format;
}
public void setter(String format) {
this.format = format;
}
}
复制代码
protect修饰符
- 被声明为保护的变量,方法和构造器能被同一个包中的类访问
- 子类可以访问继承与基类的方法
- 如果只想让该方法所在的子类可见,则使用protect
class Protect {
protected boolean Method(String name) {
}
}
class Protect_son extends Protect {
protected boolean Method(String name) {
}
}
复制代码
访问控制与继承
- 父类中声明为public的方法在子类中也要为public
- 父类中声明为protect的方法在子类中要为public或protect
- 父类中声明为private的方法不能被继承
非访问修饰符
static修饰符
- 静态变量:一个类中无论有多少实例化对象,静态变量只有一份,也称类变量
- 静态方法:静态方法中不能使用类中的非静态变量
public class Static{
private static int number = 0;
protected static int getCount(){
return number;
}
private static void addCount(){
number++;
}
Static(){
Static.addCount();
}
public static void main(String[] args){
for(int i=0;i<500;i++){
new Static();
}
System.out.println(Static.getCount());
}
}
复制代码
final修饰符
- 一般与static连用用于创建类常量
- final方法:父类中的final方法可以被继承,但是不能被重写
- final类:不能被继承
public final class Test{
static final String TITLE = "final";
}
复制代码
abstract修饰符
- 抽象类不能实例化对象,唯一的目的就是对现有类的扩充
- 一个类不能同时被abstract和final修饰,一个类包含抽象方法就必定是抽象类
- 抽象方法:
- 具体内容又子类提供
- 不能被声明为final与static
- 任何继承抽象类的子类必须实现父类的所有抽象方法,除非子类也是抽象类
- 抽象方法声明以分号结尾
public abstract class SuperClass{
abstract void test(); //抽象方法
}
class SubClass extends SuperClass{
void test(){
}
}
复制代码
synchronized修饰符
- 被此关键字声明的方法在同一时间只能被一个线程访问
public synchronized void showDetails(){ }
复制代码
ps:让程序按顺序执行的时候有奇效
transient修饰符
- 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量
public transient int limit = 55;
复制代码
ps:用途一般在密码上,获取密码获取不到
volatile修饰符
- 成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值
public class MyRunnable implements Runnable {
private volatile boolean active;
public void run() {
active = true;
while (active) // 第一行
{
// 代码
}
}
public void stop() {
active = false; // 第二行
}
}
复制代码
ps:这段代码使用了volatile修饰符,会在每次访问的时候强制获取变量值,active变量在执行stop的时候变为了false,所以在run方法调用的时候active会突然变为false,然后终止循环
今天就学到这里吧,晚安~
近期评论