Java静态变量的初始化(static块的本质) 标签: javaclassstring编译器jdk工作 2010-02-06 07:23 33336人阅读 评论(16) 收藏 举报  分类: Java基础(13)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   在网上看到了下面的一段代码: public class Test { static { _i = 20; } public static int _i = 10; public static void …
求如下 java 代码的输出?? class T implements Cloneable{ public static int k = 0; public static T t1 = new T("t1"); public static T t2 = new T("t2"); public static int i = print("i"); public static int n = 99; public int j = print(&quo…
①:Java首次会自动对变量进行初始化,其顺序优于构造器: ②:如果一个域是静态的的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值,如果它是一个对象引用,那么他的默认初始化值为null; ③:Java在执行一个类时,会冲main方法入口开始,在执行main()之前,需要加载包含main()方法的类,此时编译器会先对该类的变量进行初始化,静态的优与非静态的,如果只基本类型直接初始化,如果是应用类型,则对静态的引用进行初始化, 比如: class A{ public stati…
1.静态变量.静态代码块初始化顺序级别一致,谁在前,就先初始化谁.从上而下初始化(只在类加载时,初始化一次) 2.非静态变量.非静态代码块初始化顺序级别一致,谁在前,就先初始化谁.从上而下初始化(只要对象实例化一次,就初始化一次) 3.构造方法在非静态变量.非静态代码块之后执行. 4.子类非静态变量.非静态代码块在父类构造方法之后执行. 5.子类构造方法在父类构造方法之后执行. 6.静态方法不会被子类重写.…
Java中无论创建多少对象,静态数据都只占一份存储区域. 下面程序示例静态存储区域的初始化: //: initialization/StaticInitialization.java // Specifying initial values in a class definition. class Bowl{ // 构造器 Bowl(int marker){ System.out.println("Bowl("+marker+")"); } // 方法 void f…
class className{ static{ }//静态代码块 { }//构造代码块 public className(){} //构造方法 }…
Freemarker是一种强大的web端模板技术,在当前Web开发中,SEO和客户端浏览速度尤为重要,其中将网页静态化是一个很好的解决方案.下面介绍Java中web开发结合Freemarker来实现静态化. 主要分为三步 1 准备好模板文件,如Test.ftl <html> <head> <title>${title}</title> <style type="text/css" link="${rccontextPath…
package test; class ProxyTest { public static void main(String[] args) { ProxyClass proxy = new ProxyClass(); proxy.method_1(); /* Console: This is ProxyClass.method_1() ---Before--- This is RelClass.method_1() ---After---- */ } } //代理类 class ProxyCl…
实例初始化程序块用于初始化实例数据成员. 它在每次创建类的对象时运行.实例变量的初始化可以是直接的,但是可以在初始化实例初始化块中的实例变量时执行额外的操作. 什么是实例初始化块的使用,我们可以直接分配一个值在实例数据成员? 例如: class Bike{ int speed=100; } Java 为什么要使用实例初始化块? 假设在赋值给实例数据成员时必须要执行一些操作. 如:使用for循环来填充复杂数组或错误处理等. 实例初始化程序块的示例 下面来看看实例初始化块执行初始化的简单例子. cl…
首先有三个概念需要了解: 一.静态初始化:是指执行静态初始化块里面的内容. 二.实例初始化:是指执行实例初始化块里面的内容. 三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值. 我们先来看一段程序结果: package com; class Book{ public static int booksum=0;//静态变量 static{//这是静态初始化块 print(); System.out.println("this is static block"); } {//…