【Java基础】Java中的代码块
什么是代码块
在Java中,用{}括起来的代码称之为代码块。
代码块分类
- 局部代码块:在局部变量位置且用{}括起来的代码,用于限制局部变量的生命周期。
- 构造代码块:在类中的成员变量位置并用{}括起来的代码,和构造方法处于同一个层级,且每次调用构造方法前会调用一次,故称之为构造代码块。
- 静态代码块:在类中的成员变量位置并用{}括起来的代码,但是{}前需要加一个static关键字
有何区别
- 局部代码块用在局部位置,用于限定生命周期。
- 构造代码块出现的目的是可以将多个构造方法中相同的代码放在一起,每次实例化对象前调用一次,多个对象有多次出现。
- 静态代码块是对类初始化时出现,多个对象共享一个。
- 代码块无法明确调用
示例代码
/**
* Created by lili on 15/10/17.
*/ class CodeArea{
//静态代码块
static {
int y = 100;
System.out.println(y);
} //构造代码块
{
int x = 10;
System.out.println(x);
} public CodeArea() {
System.out.println("------construct function 1-------");
} //构造代码块,不一定要出现在构造方法前面,可以在同一层级任何位置,但是调用的时候在构造方法之前.
{
int x = 20;
System.out.println(x);
} public CodeArea(int m) {
System.out.println("------construct function 2-------");
} {
int x = 30;
System.out.println(x);
} //静态构造方法不论出现多少次,位置如果,都是在构造代码块和构造方法之前调用.
static {
int y = 200;
System.out.println(y);
} {
int x = 40;
System.out.println(x);
}
}
public class CodeAreaTest {
public static void main(String args[]) {
{
int x = 1;
System.out.println(x);
}
System.out.println("--------split 1----------"); CodeArea codeArea0 = new CodeArea(); CodeArea codeArea1 = new CodeArea(1); }
}
运行结果
1
--------split 1----------
100
200
10
20
30
40
------construct function 1-------
10
20
30
40
------construct function 2------- Process finished with exit code 0
【Java基础】Java中的代码块的更多相关文章
- 夯实Java基础(八)——代码块
在Java中代码块指的是使用”{}”括起来的代码称为代码块.代码块一共分为4种:局部代码块,静态代码块,同步代码块,构造代码块. 1.局部代码块 局部代码块就是定义在方法体内部的代码块. public ...
- Java基础8-多线程;同步代码块
作业解析 利用白富美接口案例,土豪征婚使用匿名内部类对象实现. interface White{ public void white(); } interface Rich{ public void ...
- 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例
Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...
- java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构
- Java 中静态代码块初始化问题测试
Java 中静态代码块初始化问题测试 原创 情况一:变量是 static final 修饰的"编译期常量",如 public static final String a = &qu ...
- Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)
Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java基础(中)
面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
随机推荐
- 工作流(Workflow)学习---基础知识整理
工作流定义: 工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成. 工 ...
- CSS3 关于@font-face引用中文字体解决办法
有两种方法,一种简单的,一种比较复杂,都可以实现(注:这里的方法只适合使用少量的中文字体,如果使用的字量过大,请使用其他方法解决) 第一种:简单的 1.下载需要的中文字体的.ttf格式,这个都不难找到 ...
- hdu 1568 Fibonacci 数学公式
Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到的Fibonacci数列(f[0]=0,f[1]=1;f[i] = ...
- Linux私房菜——防火墙部分笔记
#1 分类 对单一主机,主要有两种:数据包过滤Netfilter和依据服务软件分析的TCP Wrapper. 对区域型防火墙来说,即安装防火墙的主机充当路由器的角色.防火墙类型主要有两种:数据包过滤N ...
- Pentaho Data Integration笔记 (四):Kitchen
官方网站: http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation Kitchen Kitchen是一个可以执行Spoon编辑的J ...
- ping(1)
/* ping program for learning IP protocol author: jeff date: 2014/10/25 */ #include <stdio.h> # ...
- java连接oracle数据库的实现代码
package connectionOracleDatabase; import java.sql.Connection; import java.sql.DatabaseMetaData; impo ...
- require backbone 移动
http://www.gafish.net/archives/1422 http://www.w3ctech.com/2012/mobile/schedule http://cavenfeng.ite ...
- jmeter linux使用经验小结
1. 确认务必安装了JDK,并且把路径配置OK.否则执行会报错. 2. 当做负载机时,在hosts 配置上 你的ip 你的hostname 或者使用./bin/jmeter-server ...
- 李洪强漫谈iOS开发[C语言-017]-printf函数