静态代码块特点:随着类的加载执行一次,且仅会执行一次

作用:初始化类中的static修饰的变量(static修饰的变量称为类变量。类变量和静态代码块差不多,类变量仅会被初始化一次)

一、静态代码块写法:

static{

}

非静态代码块写法:

{

}

执行顺序:静态代码块->代码块->构造函数

二、那么我们来看一下,如果子类son继承父类people,那么这些代码块执行顺序

public class smile {

    public static class people{
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类代码块");
}
public people() {
System.out.println("父类构造函数");
}
}
public static class son extends people{
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类代码块");
}
public son() {
System.out.println("子类构造函数");
}
}
public static void main(String[] args) {
son a = new son();
} }

结果:

父类静态代码块
子类静态代码块
父类代码块
父类构造函数
子类代码块
子类构造函数

三、如果你不相信静态代码块只会执行一次你可以实例化两个son类

public class smile {

    public static class people{
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类代码块");
}
public people() {
System.out.println("父类构造函数");
}
}
public static class son extends people{
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类代码块");
}
public son() {
System.out.println("子类构造函数");
}
}
public static void main(String[] args) {
son a = new son();
son b = new son();
} }
/*
* 父类静态代码块
子类静态代码块
父类代码块
父类构造函数
子类代码块
子类构造函数
父类代码块
父类构造函数
子类代码块
子类构造函数
* */

四、类中变量的隐式覆盖:

public class smile {

    public static class people{
double money;
public people(){
money=10.5;
}
public double get_money() {
return money;
}
}
public static class human extends people{
int money;
public human(){
money=5;
}
}
public static void main(String[] args) {
human a = new human();
System.out.println("现在余额为:"+a.money);
System.out.println("现在余额为:"+a.get_money());
} }

你会发现直接通过实例对象a.money访问不到父类的money

java的静态代码块和类变量的隐式覆盖的更多相关文章

  1. Java 中静态代码块初始化问题测试

    Java 中静态代码块初始化问题测试 原创 情况一:变量是 static final 修饰的"编译期常量",如 public static final String a = &qu ...

  2. Java的静态代码块是否会在类被加载时自动执行?

    JAVA静态代码块会在类被加载时自动执行? 一.先看Java静态方法,静态变量 http://www.cnblogs.com/winterfells/p/7906078.html 静态代码块 在类中, ...

  3. java中静态代码块,非静态代码块,构造函数

    关于静态代码块 静态代码块的写法: static { System.out.println("我是静态代码块"); } 静态代码块的特点: 1.执行优先级高于非静态的初始化块,它会 ...

  4. (转)java中静态代码块的用法 static用法详解

    一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来 ...

  5. java中静态代码块的用法 static用法详解(转)

    (一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

  6. 【转】java中静态代码块的用法 static用法详解

    原文网址:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)java 静态代码块 静态方法区别一般情况下,如 ...

  7. java中静态代码块的用法 static用法详解

    (一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

  8. Java误区: 静态代码块,当把类将被载入到自己主动运行?

    JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn ...

  9. [转载] java中静态代码块的用法 static用法详解

    一.java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

随机推荐

  1. 【SpringBoot1.x】SpringBoot1.x 检索

    SpringBoot1.x 检索 文章源码 概念 Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本.数字.地理空间.结构化和非结构化数据.Elasticse ...

  2. SpringBoot对静态资源的映射规则

    在WebMvcAutoConfiguration类中有相对应的方法addResourceHandlers public void addResourceHandlers(ResourceHandler ...

  3. 【Git】5、Git如何提交代码到远程仓库

    提交代码:如何把修改后的代码提交到远程仓库 文章目录 提交代码:如何把修改后的代码提交到远程仓库 1.同步远程代码 2.检查改动文件 3.添加文件到缓存 4.提交代码 5.推送代码 6.我的整个流程 ...

  4. UVA - 387 A Puzzling Problem

    题目链接: https://vjudge.net/problem/UVA-387 思路: 非常有意思的拼图,深搜+回溯, 输出硬伤:除了第一次之外,每次先输空格,再输出结果, 以及可能给的数据拼不成4 ...

  5. [Usaco2008 Mar]Cow Travelling游荡的奶牛

    题目描述 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John在某个时刻看见 ...

  6. Qt Undo Framework

    Qt undo/redo 框架 基于Command设计模式 支持命令压缩和命令合成 提供了与工具包其他部分融合很好的widgets和actions 术语(Terminology) Command - ...

  7. JavaScript学习总结(基础知识)

    js代码引入 方式1: <script> alert('欢迎来到德玛西亚!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script sr ...

  8. .NetCore 在不同位置添加过滤器

    前言 以ParaModelValidateAttribute(参数校验)和ErrorCatch(错误捕捉)为例. 在方法上添加(局部) 这种方式比较灵活 [ParaModelValidate] [Er ...

  9. Docker数据目录迁移解决方案

    场景 在docker的使用中随着下载镜像越来越多,构建镜像.运行容器越来越多, 数据目录必然会逐渐增大:当所有docker镜像.容器对磁盘的使用达到上限时,就需要对数据目录进行迁移. 如何避免: 1. ...

  10. ctfshow_djb杯

    桐桑又开始摸鱼了 ctfshow的比赛整的一手好活.djb杯. web1_veryphp 打开就是源码: 1 <?php 2 error_reporting(0); 3 highlight_fi ...