代码块与final关键字【Java】

目录

一、代码块的作用

二、代码块的分类:静态代码块和非静态代码块

        2.1静态代码块

        2.2非静态代码块

三、代码块的具体实现

四、final关键字

        4.1 final关键字的实现 

一、代码块的作用

用来初始化类、对象。(要修饰代码块的话,就只能使用static修饰)

二、代码块的分类:静态代码块和非静态代码块

        2.1静态代码块

①  内部可以有输出语句

②  随着类的加载而执行,并且只执行一次

③  作用:初始化类的信息

④  当一个类中有多个静态代码块,则这些代码块会按照声明的先后顺序执行

⑤  静态代码块的执行,优先于非静态代码块的执行

⑥  静态代码块内只能调用静态的属性、静态的方法,无法调用非静态的结构

        2.2非静态代码块

①  内部可以有输出语句

②  随着对象的创建而执行

③  每创建一个对象,就执行一次非静态代码块

④  作用:可以在创建对象时,对对象的属性等进行初始化

⑤  如果一个类中,定义了多个非静态代码块,则按照声明的先后顺序执行

⑥  非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法。

三、代码块的具体实现

package cn.spilt_charging.contact;

public class BlackTest {
	public static void main(String[] args) {
		black black1 = new black();
		
		System.out.println(black1.toString());
	}
}

class black{

	//构造器
	public black(){
		super();
	}
	public black(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	//属性
	String name;
	int age;
	static String content = "我是一个爱国青年";
	
	@Override
	public String toString() {
		return "Person[name = " + name + ",age = " +age + "]";
	}
	
	//方法(非静态)
	public void eat() {
		
		System.out.println("吃东西");
	}
	
	//静态的方法
	public static void test() {
		
		System.out.println("我爱我的祖国");
	}
	
	//static的代码块(静态代码块)
	
	static {
		
		System.out.println("first");
		
		//调用静态结构
		content = "我是一名中国人";
		test();
		
		//不能调用非静态结构
		//eat();
		//name = "Tom";
	}
	
	static {
		
		System.out.println("second");
	}
	
	//非static的代码块(非静态代码块)
	
	{
		System.out.println("third");
	}
	
	{
		System.out.println("four");
		
		//调用非静态结构
		age = 1;
		eat();
		//调用静态结构
		content = "我为我是中国人而自豪";
		test();
	}
}

输出结果: 

四、final关键字

final可以修饰:类、方法、变量。

       ①  final修饰一个类:该类不能被其他类所继承。如:String类、System类

       ②  final修饰一个方法:final标记的方法不能被子类重写。如:Object类中的getClass()。

       ③  final修饰变量:此时的变量(成员变量或局部变量)就是一个常量。名称大写,且只能被赋值一次。

       ④  final修饰属性,可以考虑赋值的位置:显示初始化、代码块中初始化、构造器中初始化

       ⑤  final修饰局部变量:在使用final修饰形参时,表示此形参是一个常量,当我们调用此方法时,给常量形参赋值一个实参,一旦赋值后,就只能在方法体内使用此形参,但不能进行重新赋值。

       ⑥  static final 用来修饰:全局变量。

        4.1 final关键字的实现 

package cn.spilt_charging.contact;

public class FinalTest {
	
	final int WIDTH = 0;
	final int LEFT;
	final int RIGHT;
	
	{
		LEFT = 1;
	}
	
	public FinalTest() {
		RIGHT = 2;
	}
	
	public FinalTest(int n) {
		RIGHT = n;
	}
	
	public void dowidth() {
		//WIDTH = 20;  //无法修改
	}
	
	public void show() {
		final int NUMBER = 100;  //常量
		//NUMBER += 100;  //无法修改
	}

}

final class AAA{
	
}

//class BBB extends AAA{  //无法继承
//}

class CCC{
	final public void something(){
		
	}
}

class DDD extends CCC{
	
//	final public void something() {   //无法重写	
//	}
	
}

 最后到这里,文章就结束了,如果在内容上有问题,恳请各位大佬指出。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值