- 浏览: 748059 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (419)
- 杂软粉墨 (2)
- 创意灵感 (3)
- 经验记录 (137)
- 开源轨迹 (2)
- sip-communicator (2)
- 闲侃杂谈 (8)
- 问题交流 (24)
- 概念模式 (32)
- 难点备案 (5)
- JwChat (1)
- 中国象棋 (1)
- 教育探索 (6)
- 英语研究 (58)
- 星际争霸 (1)
- 电信知识 (1)
- 软件架构 (3)
- 哲学探索 (26)
- 算法灵魂 (8)
- 近视探索 (6)
- 数学数学 (3)
- 牛角钻尖 (23)
- 至强文言 (3)
- 数据结构 (1)
- 宇宙物理 (2)
- 网络架构 (3)
- 游戏领域 (4)
- 图形处理 (2)
- 修炼之路 (8)
- 读书天地 (20)
- 编解乱码 (2)
- 概念探索 (8)
- 格物致知 (1)
- 其它语言 (1)
- 测试领域 (3)
- 文化风流 (1)
- JQuery (1)
- 網頁領域 (1)
- Unix/Linux (1)
- Inside JVM (1)
- 异常分析 (1)
最新评论
-
suyujie:
引用
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
iamzhoug37:
您能说一下"局部变量不受文本顺序限制" 是 ...
声明前为什么能赋值却不能输出,都是使用
public class Test { private int k = printInit("Beetle.k initialized"); int j; public Test() { System.out.println("k = " + k); System.out.println("j = " + j); } private static int x2 = printInit("static Beetle.x2 initialized"); static int printInit(String s) { System.out.println(s); return 47; } public static void main(String[] args) { System.out.println("Beetle constructor"); new Test(); } }
结果:
static Beetle.x2 initialized
Beetle constructor
Beetle.k initialized
k = 47
j = 0
可见访问构造方法时同时也执行了静态初始化,根据《Thinking in Java 4》,类加载和静态成员初始化是等价的,而类加载的触发条件几乎就是but loading also occurs when a static field or static method is accessed.
由此得出:构造方法就是static method了。
另一例:
public class Test1 { static { RuntimeException ex = new RuntimeException(); ex.fillInStackTrace(); ex.printStackTrace(); } public Test1() { throw new RuntimeException(); } public static void main(String[] args) throws Exception { new Test1(); } }
结果:
java.lang.RuntimeException
at Test1.<clinit>(Test1.java:4)
Exception in thread "main" java.lang.RuntimeException
at Test1.<init>(Test1.java:9)
at Test1.main(Test1.java:13)
以上Test1.<init>是发生在 throw new RuntimeException(); 一行,但不清楚实质是否如形式所标示的那样类似一个init静态方法调用,还是暗藏对象对init方法的调用?
因为再看:
public class Test1 { static { RuntimeException ex = new RuntimeException(); ex.fillInStackTrace(); ex.printStackTrace(); } public Test1() { //throw new RuntimeException(); } public void hello() { throw new RuntimeException(); } public static void main(String[] args) throws Exception { Test1 t = new Test1(); t.hello(); } }
结果:
java.lang.RuntimeException
at Test1.<clinit>(Test1.java:4)
Exception in thread "main" java.lang.RuntimeException
at Test1.hello(Test1.java:13)
at Test1.main(Test1.java:18)
非静态方法hello抛异常的表示形式也是如此 类名.方法名
发表评论
-
RuntimeException为啥不用声明抛出?
2012-11-13 15:04 7466异常,错误都是同一种父类:java.lang.Throwabl ... -
why null is allocated on java stack
2012-06-05 11:45 1191提问: 恩。。。俺的意思是, String str = n ... -
关于Java 泛型 ?extends T 的问题
2012-05-21 11:05 4361http://topic.csdn.net/u/2012051 ... -
HashSet的contains方法de解释是不是有问题
2011-02-20 22:27 3269first of all, exhibits the code ... -
hashcode中选择31因子的原因
2010-12-24 13:57 1481源自<<effective java 2nd> ... -
为什么AnonymousInnerClass只能访问final型非同一方法局部变量
2010-09-13 09:39 1448import java.io.IOException; im ... -
URLConnection访问servlet无反应
2010-07-26 09:28 2679这样完整的回路是ok的 客户端 import jav ... -
This is how scientists see the world
2010-07-14 15:36 1014有些东西不清楚,比如右上角什么东东,中间那个看似压强C, ... -
接口能描述成has-a吗
2010-07-10 10:19 1335接口has a什么呢? 如果说接口当作具备某种能力来用,比如X ... -
关于java.util.ResourceBundle
2010-07-05 14:17 4354import java.util.ResourceBundle ... -
ArrayList,Vector线程安全性测试
2010-06-18 09:43 3214import java.util.ArrayList; im ... -
SortedSet去重
2010-06-13 17:06 1338import java.util.Iterator; imp ... -
这个静态内部类实现的单例是迟加载且线程安全的吗?
2010-05-28 13:10 1633public class JiveProperties { ... -
double-checked locking实现的单例模式之volatile
2010-05-26 17:23 3512private volatile static Singlet ... -
死锁的例子描述对吗
2010-05-10 11:20 1106public class Deadlock { stati ... -
java中Adapter是什么概念
2010-04-06 11:30 4945Adapter乃适配器, ... -
编码转换会丢失信息吗
2010-03-09 13:13 1256编码转换会丢失信息吗? 这是个命题,根 ... -
文本文件在系统中的存储与展现方式
2010-02-04 09:38 1136碰到了一个问题,同样的一个properties ... -
servlet如何实现多线程访问同一个实例的多个service方法
2009-12-09 11:22 1625如题,这是我现在想的一个问题,暂存于此,它同一个方法的 ... -
关于JTextPane读取RTF多出一行的问题
2009-11-11 11:20 2469代码如下: import java.io.FileInput ...
相关推荐
在C#编程中,面向对象是核心特性之一,它提供了静态类、构造方法以及静态方法等概念,这些是创建高效、可维护代码的关键元素。让我们深入探讨这些知识点。 首先,静态类是C#中不能被实例化的类,它们只包含静态成员...
java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....
在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...
本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...
在创建一个对象时,Java首先初始化类中的静态成员,然后是实例成员,最后才是构造方法。这意味着如果一个类中有多个成员变量,它们的初始化顺序将按照代码中声明的顺序进行。 #### 八、总结 构造方法是Java编程...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
虽然不是必须的,但在某些情况下(如对象池、私有构造方法等)静态工厂方法可能更为合适。 总结起来,Java构造方法是初始化类实例的关键工具,它们允许我们在创建对象时定制初始化过程,确保对象的正确状态。理解并...
- 构造方法不能被声明为`static`,因为静态成员属于类,而构造方法是用于初始化对象的。 - 构造方法不能返回任何值,包括`void`。其返回类型始终是隐含的`void`。 - 构造方法在对象创建时自动调用,程序员不能...
在Java中,除了单态模式,构造方法私有化还常用于其他设计模式,如工厂模式(Factory Pattern)和抽象工厂模式(Abstract Factory Pattern),以及作为静态工具类(Static Utility Class)的实现方式,防止这些类被...
静态构造函数是用于初始化静态数据成员或者执行静态初始化的特殊方法。它在程序首次引用该类的静态成员时执行,并且只会执行一次。在 `Cow` 类的示例中,静态构造函数 `static Cow()` 被用来初始化静态变量 `count`...
构造方法在创建对象时由系统自动调用,通常用于初始化类的非静态成员变量。下面详细解析Java构造方法的特性和使用方法。 构造方法的特性: 1. 方法名与类名相同:构造方法的名字必须与类名完全相同,这是Java语法...
在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...
由于对分析对象有严格的限制且开发难度大,传统的重量级...首先分析比较了两种静态分析器,详细介绍了已有的轻量级静态分析器构造方法;分析了已有方法的优缺点,并指出现存的问题;最后展望了本领域研究的发展趋势。
3. **权限修饰符**:构造方法可以拥有公共(public)、受保护(protected)、私有(private)或默认(包级私有)的访问修饰符,但不能包含抽象(abstract)、最终(final)、本地(native)、静态(static)或同步...
在IT行业中,构造方法是面向对象编程中的一个关键概念,特别是在Java、C#等语言中。这个概念对于理解和实现类的实例化至关重要。"论构造方法的方法论.zip"的文件标题暗示了这是一个深入探讨构造方法设计策略的资源,...
理解并熟练运用构造方法,包括其重载、基类构造方法的调用、静态构造方法等特性,将有助于编写出更高效、更具可维护性的代码。通过观看常老师的视频教程,初学者可以深入掌握这些概念,为后续的C#学习打下坚实的基础...
下面我们将深入探讨静态方法、静态变量以及静态类等相关的知识点。 1. 静态方法 静态方法是与类关联,而不是与类的实例关联的方法。这意味着我们不需要创建类的实例就可以调用静态方法。它们在内存中只有一份,且在...
### JAVA技术专题综述之构造方法篇 #### 构造方法概述 构造方法是一种特殊的方法,主要用于初始化新创建的对象。每个类都有一个或多个构造方法,如果没有显式地定义构造方法,Java会自动提供一个默认的无参构造...
一个简短的控制台程序,使用了构造函数,虚方法 静态类,静态字段,接口,抽象类,继承,适合刚入门的人看
除了构造方法,Ext类还涉及其他重要概念,如配置对象(config object)、混入(mixins)和静态方法(statics)。配置对象允许我们在创建组件实例时传递配置,如大小、样式等。混入可以将一组方法或属性添加到多个类...