- 浏览: 308153 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
当有时候回忆JAVA的基础的时候,有些东西一下子会变得十分的模糊,不是很清楚一个JAVA类从硬盘中怎么到内存,内存后又是怎样就得执行了。
今天理了一下思路:一个类经过加载,连接(检查、准备、解析),初始化。初始化后这个类就可以随便被使用了。使用也就是可以调用它的静态方法,创建它的实例。
不过,这里想思考一下初始化点,什么情况会被初始化,什么时候不会被初始化。
一般来讲,一个类被首次使用的时候会初始化,首次使用有6种情况(创建新例,调用类中声明的静态方法,操作类或接口中声明中声明的非常量静态字段,调用API中的特定反射方法,初始化一个类的子类,指定一个类作为java虚拟机启动的初始方法)。
看一个有不是首次使用的例子(读一读,看看输出是怎样的?):
interface tested{ String greeting = "tested" ; int a = T.show() ; } class P implements tested{ static{ System.out.println("p's static") ; } } class T{ static int i = 999 ; static final String greeting = "TTTTTTTT" ; static{ System.out.println("T's static") ; } static int show(){ System.out.println("show method") ; return 1 ; } } class Tson extends T{ static{ System.out.println("Tson's static") ; } } public class Test{ static{ System.out.println("Test's static") ; } public static void main(String arg[]){ System.out.println(tested.greeting) ; System.out.println(T.greeting) ; System.out.println(P.greeting) ; System.out.println(Tson.greeting) ; System.out.println(Tson.i) ; } }
输出结果为:
评论
2 楼
美丽的小岛
2012-10-07
w156445045 写道
问下博主 为什么调用
System.out.println(T.greeting) ;
T.greeting的时候,
class T{
12. static int i = 999 ;
13. static final String greeting = "TTTTTTTT" ;
14. static{
15. System.out.println("T's static") ;
16. }
17. static int show(){
18. System.out.println("show method") ;
19. return 1 ;
20. }
21.}
为什么不初始化
static {
syso("T's static");
}
呢?同理:System.out.println(Tson.greeting); 谢谢。
System.out.println(T.greeting) ;
T.greeting的时候,
class T{
12. static int i = 999 ;
13. static final String greeting = "TTTTTTTT" ;
14. static{
15. System.out.println("T's static") ;
16. }
17. static int show(){
18. System.out.println("show method") ;
19. return 1 ;
20. }
21.}
为什么不初始化
static {
syso("T's static");
}
呢?同理:System.out.println(Tson.greeting); 谢谢。
因为这里的greeting为常量静态字段,调用的时候类不会被初始化的。后面那个是一个子类调用父类的常量静态字段,也不会被初始化的。初始化是在首次调用的时候会被初始化(前面的6种情况),其它的情况不会。
1 楼
w156445045
2012-10-06
问下博主 为什么调用
System.out.println(T.greeting) ;
T.greeting的时候,
class T{
12. static int i = 999 ;
13. static final String greeting = "TTTTTTTT" ;
14. static{
15. System.out.println("T's static") ;
16. }
17. static int show(){
18. System.out.println("show method") ;
19. return 1 ;
20. }
21.}
为什么不初始化
static {
syso("T's static");
}
呢?同理:System.out.println(Tson.greeting); 谢谢。
System.out.println(T.greeting) ;
T.greeting的时候,
class T{
12. static int i = 999 ;
13. static final String greeting = "TTTTTTTT" ;
14. static{
15. System.out.println("T's static") ;
16. }
17. static int show(){
18. System.out.println("show method") ;
19. return 1 ;
20. }
21.}
为什么不初始化
static {
syso("T's static");
}
呢?同理:System.out.println(Tson.greeting); 谢谢。
发表评论
-
推荐!国外程序员整理的Java资源大全
2015-12-15 10:14 665本文由 ImportNew - 唐 ... -
jsoup select 选择器
2015-12-09 14:03 982问题 采用CSS或类似jquery 选择器(selecto ... -
xmlbeans问题(深刻)
2015-11-12 23:08 1189运行scomp,路径永远是一个问题; 1.Program ... -
spring配置一个简单的数据连接池(dbcp)
2015-11-12 14:16 8201.文件结构 2.包结构 3.spring.x ... -
java泛型之通配符的使用
2015-11-12 12:15 707转自: http://blog.csdn.net/lone ... -
Ubuntu下安装JDK
2015-05-02 18:42 558安装JDK: 1.下载 http://www ... -
Delphi开发DLL,Java调用DLL
2014-01-01 16:40 1322用一个小例子来示范一下,不写文件字。 第一步 第二步, ... -
如何在Java中调用DLL方法<转>
2013-12-30 13:36 718Java语言本 ... -
Java对存储过程的调用方法
2013-05-14 09:29 796//一:Java如何实现对存储过程的调用: // A ... -
谈谈对象和XML文件的转换 <转>
2013-04-12 14:18 1043很多时候,我们开发 ... -
详解Java解析XML的四种方法<转>
2013-04-12 14:01 968XML现在已经成为一种通用的数据交换格式,它的平台无关性, ... -
URLClassLoader例子
2012-11-22 15:22 1405学着写一个servlet服务器,里面对servlet的处理就得 ... -
关于JAVA配置文件的小记录
2012-11-20 15:16 1007配置文件一般会为编写编程提供方便与灵活的特点,最近看tomca ... -
关于Channel学习
2012-10-07 15:12 1113java的新I/O流,有点意思,看看相关的类,其实就这几个就能 ... -
Buffer类与ByteBuffer类(来自JDK)
2012-10-07 10:10 12401. 类 Buffer(public abst ... -
运行控制台命令(java)
2012-10-07 08:30 2914有时候我们想用java去调用系统的命令实现一些功能,这个功能 ... -
匿名内部类是怎么回事
2012-10-05 13:12 1095匿名内部类真的很神秘的,不过,这种类就喜欢做一些神秘的东西。想 ... -
内部类链接到外部类
2012-10-05 10:45 736java中的内部类可以无条件地使用外部类的资源,这是怎么一回事 ... -
关于对象初始(java)
2012-10-04 20:31 1115有时,对JAVA实例化的顺序会忘记,现在记录一下。 1.调用 ... -
JVM指令集
2012-10-04 15:13 970指令码 助记符 功能描述 ...
相关推荐
引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...1.11 Java和因特网 ...1.13 Java还是C++?...附录E 关于垃圾收集的一些话 附录F 推荐读物
### Java基础知识思考题详解 #### 1. 缩写JDK的含义是什么? JDK,全称Java Development Kit,即Java开发工具包。它是Java软件开发的基础,包含了编写、编译和运行Java程序所需的所有工具。JDK不仅包括Java编译器...
### Java程序练习及思考题知识点解析 #### 练习题概览 本套Java程序练习题旨在帮助学习者提升Java编程技巧与逻辑思维能力。题目覆盖了基础算法、字符串处理、数学运算等多个方面,适用于初学者及进阶学习者。 ####...
Java 复习资料中的思考题涵盖了Java的基础知识,包括JDK的含义、Java跨平台技术、垃圾收集机制、J2SE、J2ME、J2EE的区别、包的作用、J2SE类库的主要包以及Java编程规范和程序结构。下面将详细解答这些知识点。 1. ...
在每个实验中,思考和验证部分鼓励学生探索Java语言的更多特性,例如循环结构的灵活性,输入/输出的处理,以及如何优化代码以适应不同需求。通过这些实验,学生将全面了解Java程序设计的基础和实践,为后续的高级...
此外,本章还介绍了类的定义,包括字段和方法,以及构建Java程序的基本步骤,如命名规则、可见性和使用static关键字。 第3章"控制程序流程"详细阐述了Java中的控制结构,包括各种运算符的用法,如赋值、比较、逻辑...
对于Java编程题目,一些常见的知识点可能包括但不限于以下几个方面: 1. 基本语法:这是编程的基础,涉及到变量声明、运算符使用、控制流程(如if-else语句、循环等)。 2. 类和对象:Java是面向对象的编程语言,...
java开发实习周记12篇是关于java开发实习的周记文章,共有12篇文章,从实习第一周到实习第十二周,每篇文章都记录了实习生的实习经历和java开发知识点。下面是每篇文章的知识点总结: 实习第一周 了解公司背景、...
根据上下文判断,这里可能列出了一些具体的数值,要求判断它们属于哪种类型: - 整型常量:10、-20、077、0x1F - 浮点型常量:10.5、-3.14f - 其他:不属于整型也不属于浮点型的,可能是字符串或非法表示。 ### ...
这一阶段,他们熟悉了工作环境和Java编程的环境配置,强调了“多看、多问、多观察、多思考”的学习态度。 第二周,实习生专注于Java的基础语法学习,如类之间的关系(关联、聚合、继承、实现和多态),基本数据类型...
【Java与模式的思考】 Java设计模式是一种在特定场景下解决软件设计问题的模板,它提供了在编程中遇到常见问题的可复用解决方案。这里主要讨论三种创建模式:简单工厂模式、工厂方法模式和抽象工厂模式,它们都属于...
在第二周实习中,作者主要学习了java的基础语法,包括类之间的关系、基本数据类型、常用逻辑语句和循环语句、修饰符、Static关键字、Final关键字、This关键字、string和stringBuffer等。作者总结了学习的要点,包括...
视频文件的命名似乎按照理解的深入程度来组织,从“初识”到“继续理解”再到“思考”。这些视频可能涵盖了单例模式的基本概念、实现方式、优缺点、适用场景以及可能遇到的问题,如序列化时如何保持单例、如何在多...
#### 进一步思考 1. **性能优化**:对于大规模的数据集,可以通过缓存或其他技术手段进一步提高转换效率。 2. **多音字处理**:中文中存在多音字现象,如何准确地识别并处理多音字是实现高质量拼音转换的关键之一。...
#### 六、扩展思考 - **性能优化**:可以通过更高效的数据结构(如栈)来优化括号匹配过程。 - **异常处理**:增加对除数为零等异常情况的处理机制。 - **用户交互**:改善用户输入的提示信息,提高用户体验。 - **...
Java 程序的编译及运行实验... public static void main(String[] args) throws java.io.IOException { // ... } } ``` 这个实验程序使用继承系统类 Thread 实现多线程,每个线程分别完成 1~100 个自然数的求和工作。
Java类的高级特性章节进一步加深了对类的理解,包括继承、方法覆盖和重载、多态、Static和Final修饰符的作用、内部类以及Java内存分配的知识。这些高级特性是编写高效和可复用Java程序的关键。 数据结构和枚举是...
在Java编程语言中,数据传递主要分为两种方式:按值传递(Pass by Value)和按引用传递(Pass by Reference)。这两种方式的理解对于深入理解Java对象和方法调用机制至关重要。 首先,我们要明确一点,Java中所有的...