Java 基础学习之 代码块 小咪咪 2024-04-18 04:56 14阅读 0赞 所谓代码块是指使用“\{ \}” 括起来的代码块,根据位置不同,代码块可以分为 4 种:普通代码块、构造代码块、静态代码块、同步代码块。同步代码块在多线程中常用。详情看我另一篇博客:[Java 基础学习之多线程五 (同步与死锁)][Java _] # 1 普通代码块 # #### 实例 1 代码: #### package self.learn.codeblock; public class CodeDemo { public static void main(String[] args) { { // 定义一个普通代码块 int x = 30; // 定义局部变量 System.out.println("普通代码块 ---> x="+x); } int x = 100; // 与局部变量名称相同 System.out.println("代码块之外 ---> x="+x); } } #### 运行结果截图: #### ![在这里插入图片描述][20190903113409196.png] 本程序利用了普通代码块对一个方法中的结构进行了分割,这样即使定义有重名变量 x, 但是由于其处于不同的范围,也不会互相影响。所以普通代码块的主要作用是进行分割使用。 # 2 构造代码块 # #### 构造代码块是直接写在类中的代码块 #### #### 实例 2 代码: #### package self.learn.codeblock; public class CodeDemo { { System.out.println("1、构造块"); } public CodeDemo() { System.out.println("2、构造方法"); } public static void main(String[] args) { new CodeDemo(); // 实例化对象 new CodeDemo(); // 实例化对象 new CodeDemo(); // 实例化对象 } } #### 运行结果截图: #### ![在这里插入图片描述][20190903114023275.png] 从输出结果中可以发现,构造块优于构造方法执行,而且每次实例化对象都会执行构造块中的代码。 # 3 静态代码块 # #### 静态代码块,是使用 static 关键字声明的代码块。 #### #### 实例 3 代码: #### package self.learn.codeblock; public class CodeDemo { { // 定义构造块 System.out.println("1、构造块"); } static { // 定义静态代码块 System.out.println("0、静态代码块"); } public CodeDemo() { // 定义构造方法 System.out.println("2、构造方法"); } } #### 运行结果截图: #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDkxNjY0MQ_size_16_color_FFFFFF_t_70] 从程序的运行结果可以发现,静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次 #### 实例 4 代码:子类和父类的各种代码块执行顺序 #### package self.learn.test1; public class A { public A() { System.out.println("class A"); } { System.out.println("I'm A class"); } static { System.out.println("class A static"); } } package self.learn.test1; public class B extends A { public B() { System.out.println("class B"); } { System.out.println("I'm B class"); } static { System.out.println("class B static"); } public static void main(String[] args) { new B(); } } #### 运行结果截图: #### ![在这里插入图片描述][20190910150456487.png] #### ①父类静态变量和静态代码块(按照声明顺序); #### #### ②子类静态变量和静态代码块(按照声明顺序); #### #### ③父类成员变量和代码块(按照声明顺序); #### #### ④父类构造器; #### #### ⑤子类成员变量和代码块(按照声明顺序); #### #### ⑥子类构造器。 #### [Java _]: https://blog.csdn.net/weixin_40916641/article/details/100050345 [20190903113409196.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/17/41b161c8f9bd48c7a6632f68873b5b11.png [20190903114023275.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/17/02ad9f438cfb4adcb5db83c4d03c7e4f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDkxNjY0MQ_size_16_color_FFFFFF_t_70]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/17/73f1ab7002b4407abb8fa81ad784a23a.png [20190910150456487.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/17/7266f1b59b8949e2b6f9f796f152e124.png
还没有评论,来说两句吧...