学习类与对象的收获(代码块和修饰符)

一 代码块

Java中用{ }括起来的代码段就是代码块,他分为如下几种类型

  位置 作用
局部代码块 再main方法里面 给变量限定生命周期,局部代码块的变量的变量在执行结束后会被java回收
构造代码块 在类的成员位置

在每次执行构造方法前先执行构造代码块,可以将多个构造方法中的相同代码放到构造代码块中,

对对象进行初始化

静态代码块 在类的成员位置 一般用于给类初始化,被静态修饰的代码块仅执行一次


注意构造代码块,构造方法,静态代码块的优先级为:

    静态代码块>构造代码块>构造方法;

对象调用方法的时候先检查类中是否有静态代码块,先执行静态代码块,再检查是否有构造代码块,最后执行构造方法

举例:

class Block{
	{
		System.out.println("我是构造代码块"); //每次被新对象调用时都执行,优先级在静态代码块之后
	}
	static {
		System.out.println("我是静态代码块");  //只在第一次调用的时候执行,优先级最高
	}
	public void method() {
		System.out.println("我是成员方法"); 	
	}
	public Block() {
		super();
		System.out.println("我是无参构造方法");
	
	}
	
}
public class ARRTEXT {
	public static void main(String[] args) {
		{
			String a="我是局部代码块";
			System.out.println(a);
		}
		//System.out.println(a);  报错局部代码块内的变量在代码块外不能访问,代码块执行完后就会被回收
		System.out.println();
		Block b=new Block();
		b.method();
		System.out.println();
		Block c=new Block();
		c.method();	
		  
	}
}

/*
输出为:
我是局部代码块
我是静态代码块
我是构造代码块
我是无参构造方法
我是成员方法
我是构造代码块
我是无参构造方法
我是成员方法
 * */
--------------------- 
原文:https://blog.csdn.net/liuchonghua/article/details/79977496 
 

二 static、final

static:

静态变量,被类的所有实例共享

静态方法,不依赖于某个特定的对象。

静态常量(final static),被所有类的实例共享且不可再改变

静态内部类,类中所有成员都是静态成员,不能产生实例

静态代码块,static {…} 相当静态构造函数

final:

可以看看我的另一篇文章:谈谈java的final关键字的学习

发布了43 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Hitmi_/article/details/90450282
今日推荐