- 浏览: 463111 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
class Nolization{ static{ System.out.println("Nolization init"); } public static int value = 123; } class Contant extends Nolization{ static{ System.out.println("Contant init"); } } public class ContantClass { public static void main(String[] args) { System.out.println(Contant.value); } }
上面这段代码的执行结果是 Nolization init
123
并没有输出 Contant init,这是因为 jvm 对于 静态字段,只有直接定义这个字段的类才会被初始化。
再看下面这段代码
class Nolization{ static{ System.out.println("Nolization init"); } public static final int value = 123; } class Contant extends Nolization{ static{ System.out.println("Contant init"); } } public class ContantClass { public static void main(String[] args) { System.out.println(Contant.value); } }
相比于上段代码,仅仅是将value 从public static int 改为 public static final int ,输出的结果变成了 123,不再输出任何类的初始化信息。
这是因为 jvm 在编译阶段 将常量 123 存储到了 ContantClass 的常量池中,对 Contant.value 的引用实际都转化为 ContantClass 对自身常量的引用了,也就是说 ContantClass 的class文件中并不存在 Nolization 的任何调用入口,在编译成class文件之后,这两个字节码文件已经不存在任何联系了。
发表评论
-
实现虚拟机VMware上linux与windows互相复制与粘贴
2014-11-17 13:15 1351实现虚拟机VMware上linux与windows互相复制 ... -
java 虚拟机线程与操作系统内核线程之间的关系
2014-09-23 15:13 4691java jdk 中 线程操作与虚拟机中线程操作之间的关系映射 ... -
java 语法糖 分析(一,泛型与类型擦除)
2014-09-18 11:14 542语法糖是一种计算机术语,是为了更加方便理解计算机语言或者说 ... -
Java 读写锁demo
2014-09-11 15:27 734java 读写锁 原理 和 实例 package thread ... -
java 语言的静态多分派和动态单分派 的特性
2014-09-10 18:23 1110Java 语言的静态多分派和动态单分派特性。 先来熟悉概念: ... -
字节码验证 的高度对jvm的优化
2014-09-09 16:08 1169程序员对虚拟机的优化 ... -
接口与类的真正区别
2014-09-09 14:50 441接口与类不存在区别,除了字面修饰符不同外,其真正区别是: 当 ... -
java static 类型变量定义技巧
2014-09-05 18:33 887java 变量的定义非常重要,在一定程度上可以减轻服务 ... -
eclipse 启动参数配置
2014-09-05 16:44 402参数见附件 -
too many open files 异常
2014-09-05 14:08 553每个Socket 连接都有 Receive 和 s ... -
堆转储快照(dump)的分析
2014-09-05 13:50 1099dump ,堆转储快照的详细分析,后面分析啊,现在没时 ... -
高性能硬件上的程序部署策略
2014-09-04 18:12 513一个15万pv、天左右 ... -
jsp 页面 查看线程堆栈状况
2014-09-04 15:53 670jsp 页面 查看线程堆栈信息状况 具体见 附件 -
jvm 本地方法栈(native Method stacks) 基本概念
2014-09-03 15:38 1116Java 虚拟机 运行时数据区域 一般可区分为 :方法区,堆 ... -
jvm 栈 基本概念
2014-09-03 15:10 546java 程序员 通常把java程序运行时的内存 分为 堆内存 ...
相关推荐
Java中,类变量(static变量)的初始化顺序遵循以下规则: 1. 首先,执行父类的静态初始化块(方法),如果有的话。 2. 然后,执行子类的静态初始化块。 3. 静态变量的初始化顺序取决于它们在代码中声明的顺序,而...
- 静态初始化块(static{}):如果类中存在静态初始化块,该块的代码会在类加载后的准备阶段执行,用于初始化静态变量或执行其他静态设置任务。 - 静态变量的赋值:接着,静态变量会被赋予它们的初始值,这可以是...
1. **静态成员变量的初始化**:当类被加载到JVM中时,静态成员变量首先被初始化。 2. **静态初始化块的执行**:紧随静态成员变量之后,静态初始化块被执行。 3. **父类静态成员变量及初始化块**:如果当前类继承自另...
静态初始化块是以`static`关键字标识的代码块,它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态初始化块常用于设置类级别的变量,或者执行只应执行一次的初始化操作。例如,如果一个类需要在程序运行前...
Static变量 `static`变量,亦称为静态变量或类变量,与实例变量相对。其最显著的特点在于,无论创建多少个该类的实例,`static`变量在内存中仅存在一份拷贝,这意味着所有实例共享同一份变量值。这不仅节约了内存...
类的静态变量初始化是有序的,遵循类文件中的顺序,从上到下依次初始化。这一点在面试中可能会被问及,例如在给定的代码片段中: ```java public class Test { public static int a = 0; public static int b ; ...
静态初始化块主要用于初始化类级别的变量,即静态变量。由于它是在类加载时执行,所以它总是在任何对象创建之前运行。静态初始化块不能访问非静态成员,包括实例属性和实例方法,因为它们依赖于对象实例,而静态初始...
- 在类加载阶段,按顺序初始化静态成员变量、静态初始化块。 - 在实例化过程中,按顺序初始化实例成员变量、实例成员函数,最后调用构造函数。 了解这个顺序对于理解和调试涉及多层继承和复杂初始化逻辑的Java代码...
`static`静态初始化块是用来初始化类级别的变量,也就是说,这些变量是属于类本身,而不是类的实例。当我们讨论“Java static静态初始化块”时,我们关注的是如何在类加载时执行特定的初始化代码。 首先,让我们...
实验将结合具体的Java程序实例,运用单例模式对静态变量和对象进行初始化,以此来加深对类加载机制的理解。 #### 实验环境设置 为了确保实验的顺利进行,需要搭建合适的硬件和软件环境。硬件方面,建议使用一台...
3. **静态代码块(Static Blocks)**:在类加载时执行,可以用于初始化静态变量或执行其他类级别的初始化操作。它可以放在类的任何位置。 尽管`static`有很多用途,但也有一些限制: 1. 静态成员只能访问其他静态...
5. 初始化(Initialization):在这个阶段,JVM会执行类的静态初始化代码,例如static块和静态变量的赋值。 类加载的顺序是按照父类到子类的顺序进行的,即父类的静态变量会先被初始化,接着是子类的静态变量。然后...
- **实例变量**:实例变量的初始化顺序与它们在类声明中的顺序一致,同时考虑初始化块。在`InitOrder`的例子中,`c1`的初始化块在`d1`之前,所以`c1`先被初始化。 5. **错误和限制**: - 当尝试在初始化块中引用...
在实际开发中,了解静态初始化块的执行顺序非常重要,否则可能会导致类的静态变量和静态方法不能正确地初始化。 下面是一个简单的示例代码,用于演示Java中静态初始化块的执行顺序: ```java public class Test1 { ...
总结来说,Java类的执行顺序涉及到类加载、验证、准备和初始化四个关键步骤,这些步骤在JVM内部协同工作,确保代码的正确性和安全性。理解这些基础知识对于编写高效、可靠的Java程序至关重要,也是面试中常见的技术...
在本例中,由于`Singleton`类中`singleton`变量的初始化发生在类初始化阶段之前,这意味着在`Singleton`对象被创建时,静态变量`a`和`b`尚未被初始化。因此,`a++`和`b++`实际上是在默认值的基础上进行的,即`a`的...
静态块,也被称为静态初始化器,是在类加载时自动执行的一段代码,用于初始化类的静态变量或执行一次性的设置工作。静态块可以包含任意的Java语句,并且会在类的任何实例被创建之前执行。与静态方法不同,静态块不是...
此外,如果类中有final static变量,它们在准备阶段已经初始化。 4. 类的生命周期: 类的生命周期包括加载、验证、准备、初始化和卸载。卸载通常发生在JVM运行时内存资源紧张时,会回收无用的类,但这在标准Java...
静态初始化通过`static`关键字标记,可以用于声明静态变量、静态方法或静态代码块。 #### 二、静态初始化的过程 1. **静态初始化的时机**: - 当类首次被加载到JVM中时。 - 当第一次访问该类的静态成员(字段或...
2. 随后初始化`B`类的静态变量,包括`ss2`和`a`,这会间接触发`A`类的静态初始化,打印出"A的static代码块..."和"A的static变量..."。 3. 接下来,`A`类的成员变量`s1`和`s2`被初始化,分别调用`prtString`并打印...