Java进阶的第二天

Java进阶的第二天大集合

final关键字

  • 概述:Java提供了final 关键字,用于修饰不可改变内容。
  • final:
    • 类:被修饰的类,不能被继承
    • 方法:被修饰的方法,不能被重写
    • 变量:被修饰的变量,不能被重新赋值

final的使用方法

  • 修饰类:
final class 类名 {
  
}
  • 修饰方法:
修饰符 final 返回值类型 方法名(参数列表){
    //方法体
}
  • 修饰变量

    • 局部变量—基本数据类型
    public class FinalDemo1 {
        public static void main(String[] args) {
            // 声明变量,使用final修饰
            final int a;
            // 第一次赋值 
            a = 10;
            // 第二次赋值
            a = 20; // 报错,不可重新赋值
        }
    }
    
    • 局部变量—引用类型
    public class FinalDemo2 {
        public static void main(String[] args) {
            // 创建 User 对象
            final   User u = new User();
            
            // 创建 另一个 User对象
            // u = new User(); // 报错,指向了新的对象,地址值改变。
    
            // 调用setName方法
            u.setName("张三"); // 可以修改
        }
    }
    

    说明:引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的修改

    • 成员变量:

      显示初始化:

    public class User {
        final String USERNAME = "张三";
        private int age;
    }
    
    • 构造方法初始化:
    public class User {
        final String USERNAME ;
        private int age;
        public User(String username, int age) {
            this.USERNAME = username;
            this.age = age;
        }
    }
    
    
  • 小结:final修饰类,则类不能被继承。final修饰方法,则方法不能被重写。final修饰变量,变量不能被该值

static关键字

  • 概述:static是静态修饰符,一般修饰成员。被static修饰的成员属于类,不属于这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。
  • 类变量
  • 使用 static关键字修饰的成员变量。
定义格式:
static 数据类型 变量名; 
  • 静态方法
  • 类方法:使用 static关键字修饰的成员方法,习惯称为静态方法
修饰符 static 返回值类型 方法名 (参数列表){ 
	// 执行语句 
}

静态方法调用的注意事项:

  1. 静态方法可以直接访问类变量和静态方法。
  2. 静态方法不能直接访问非静态成员变量或成员方法。非静态成员方法可以直接访问类变量或静态方法。主要是因为先加载类到方法区,直接使用类名调用静态方法了,而此时还没有对象,而非静态方法必须有对象才可以运行。所以静态方法中不能使用非静态成员。但是非静态方法可以使用静态成员,因为对象已经有了,说明类肯定存在了(先有类后有对象)
  3. 静态方法中,不能使用this关键字
  • 调用格式:
// 访问类变量
类名.类变量名;

// 调用静态方法
类名.静态方法名(参数)

枚举

  • 枚举的概念:枚举是一种特殊类。枚举是有固定实例个数的类型,我们可以把枚举理解成有固定个数实例的多例模式。
enum 枚举名 {
    第一行都是罗列枚举实例,这些枚举实例直接写大写名字即可。
}

枚举的补充

public enum Sex {
    BOY("柳岩"), GIRL(18);

    public int age;
    public String name;

    private Sex(int age) {
        System.out.println("有参构造"+age);
        this.age = age;
    }
	private Sex() {
        System.out.println("无参构造");
    }
    private Sex(String name) {
        System.out.println("有参构造"+name);
        this.name = name;
    }
    public void showAge() {
        System.out.println("年龄是: " + age);
    }
    public void showName() {
        System.out.println("姓名是: " + name);
    }
   
}
public class Demo03 {
    public static void main(String[] args) {
        //Person p1 = new Person("张三", Sex.BOY);
       // Person p2 = new Person("张三", Sex.GIRL);
		//使用枚举类型获取枚举类型中的元素即对象
        Sex b = Sex.BOY;
        b.showName();
        Sex g = Sex.GIRL;
        g.showAge();
    }
}

运行结果:
有参构造柳岩
有参构造18
姓名是: 柳岩
年龄是: 18

说明:枚举的本质是一个类,所以枚举中还可以有成员变量,成员方法等。

​ 1)枚举的属性上面不能书写任何代码,如果属性下面有代码,需要使用分号结束属性的编写
​ 2)只要我们使用枚举类型,那么属性属于静态的,并且给属性赋值,会创建对象,执行无参构造方法
​ 3)如果想执行有参构造,可以给属性后面添加小括号,并赋值实际参数
​ 4)枚举中的构造函数必须是私有的

  • 枚举的小结:
    1. 枚举类在第一行罗列若干个枚举对象,是常量。(多例)
    2. 枚举是不能在外部创建对象的,枚举的构造方法默认是私有的。
    3. 枚举通常用于做信息的标志和分类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值