- 浏览: 422082 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (318)
- js (20)
- JQuery (2)
- Java (46)
- Oracle (4)
- mysql (21)
- ExtJs (17)
- Excel (2)
- Linux (8)
- Sql (8)
- Jsp (2)
- hibernate (12)
- jbpm (17)
- eclipse (8)
- 名博收藏 (1)
- Junit (2)
- 应用集成 (3)
- web (10)
- jboss (3)
- Rest (3)
- 其它 (7)
- 磁盘分区管理 (1)
- spring (18)
- SSO (4)
- tomcat (4)
- CSS (7)
- MemCached (6)
- EhCache (4)
- weblogic (1)
- apache (6)
- Exception design (1)
- db (1)
- 分析模式 (1)
- jstl (1)
- jsf (0)
- firefox (2)
- MongoDB (4)
- androidpn (1)
- hadoop (1)
- cvs (1)
- 微信公众号 (2)
- 高并发 (4)
- 技术论坛 (1)
- CDN (1)
- JVM (16)
- 加密 (4)
- maven (2)
- jenkins (1)
- hessian (1)
- 大数据处理 (2)
- NIO (0)
- netty (1)
- redis (1)
- git (1)
- Elastic Job (0)
最新评论
-
zgw06629:
或者<pre>aaaabbbbcccc</p ...
javaDoc注释换行 -
ddnzero:
...
StringBuffer换行 -
maosijun:
。。。。
EXT CExt.form.ComboBox选择一次后只剩一个选项 -
ysa198584:
你这有问题,当我的代码出现User.class的时候,反编绎的 ...
java的class文件批量反编译 -
dongj0325:
看到您的博客,很受启发,但还有关于jbpm4.4 timer使 ...
JBPM定时器(Timer)之Repeat属性不能使用变量
其实很简单的一个问题,被大家搞复杂了,实在看不下去。
1. 关于main方法是static方法,但是为什么非要是static。
原因就是,如果一个类她定义了main方法的话,那么她的main方法会在这个类的构造函数运行之前被调用。
由于main方法运行的时候尚未在JVM里生成相应对象(构造函数未被执行),所以要声明为static。
2. 这就涉及到下面的问题,和其他任何方法一样,static方法可以创建或使用与其它类型相同的被命名对象,因此static
方法常常拿来做‘牧羊人’的角色,负责看护与其隶属同一类型的实例群。”其实作者的意思是说,按照GOF(模式四
人帮) 的观点,单实例工厂类的生产方法,应该是static的。
关于‘牧羊人’的意思是指,在面向对象的语言里,最高级首先是元类,元类(meta class)下面是类,类下面才是对
象。对于虚拟机来说,类是元类的对象,static方法是类的方法,而不是对象的方法。
所以,对象就相当于“羊”,
类就相当于“羊圈”盛放和标示“羊”,拿出来一只羊,就要问问,你是哪个羊圈里的?
static方法相当于“羊圈里的狗”,专门来管理羊。
而元类才是幕后的‘牧羊人’。
thinking作者本科是读物里的,后来才转过来读软件工程(那时候学的是c),可能是半路出家的原因,对面向对象的机
制,在理解上有出入。
3. 关于“static方法就是没有this的方法”这句话
其实这句话是废话,this是对象的引用。而static方法是一个类的方法,不是哪个特定对象的方法,所以在static方法里使用this引用每意义。
4. 关于static方法和static属性是不是存储在一个地方的
我爱死这个问题了。
我可以负责任的说,他俩肯定不能存到同一个内存地址里面去(笑),虚拟地址除外。
其实他们俩不属于哪个特定的对象,所以不会出现在为哪个特定对象分配的内存块里。
刚才说了,static方法和static属性属于类,所以他俩是被存到相应的类的内存空间里。
为什么类还有自己的内存空间?是因为特定的类是特定的元类的对象。也就是说,类是某个其它类的对象。而这个元类
并未开放给应用程序员。
其实static是个非常古老的关键字,古老到比这里大部分朋友的年龄还老。
http://www.ixpub.net/thread-803970-3-1.html
发表评论
-
serialVersionUID的作用
2016-02-29 11:59 451serialVersionUID的作用 简单来说,J ... -
ArrayList实现原理
2015-08-20 09:32 3911. ArrayList概述: A ... -
HashMap实现原理分析
2015-08-20 09:12 540HashMap 目录(?)[+] 1. H ... -
高性能IO模型浅析
2015-08-05 16:42 342高性能IO模型浅析 2014- ... -
JVM调优总结 -Xms -Xmx -Xmn -Xss
2012-07-27 17:31 782http://unixboy.iteye.com/blog/1 ... -
消息总线设计系列之 - 调停者模式
2012-05-28 16:52 1225http://kb.cnblogs.com/a/1200926 ... -
关于Java构造器
2012-04-25 17:27 796关于Java构造器 作者:langm 版权声明:任何获得M ... -
面向对象的三个基本特征
2012-04-25 15:37 638转自: http://www.cnitblog.com/Li ... -
java 继承类 变量、静态变量、构造函数执行顺序
2012-04-18 16:01 885java 继承类 变量、静态变量、构造函数执行顺序 clas ... -
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
2012-04-03 11:06 780http://www.ibm.com/developerwor ... -
hashtable源码解析
2012-04-01 22:45 707http://wenku.baidu.com/view/f42 ... -
java泛型
2012-03-27 11:27 692http://baike.baidu.com/view/143 ... -
Java中的Enum的使用与分析
2012-03-27 09:38 695Java中的Enum的使用与分析 示例: ... -
使用common-fileUpload制作文件上传(DiskFileItemFactory方式)
2012-02-23 09:50 1147使用common-fileUpload制作文件上传(DiskF ... -
java中静态代码块的用法 static用法详解(摘抄,用断点调试效果很好)
2011-07-23 11:28 1517原文:http://zhangyongbluesky.blog ... -
Java类的static块什么时候执行
2011-07-23 11:18 909http://joes0619.blog.163.com/bl ... -
JAXP(Java API XML Parser)
2011-07-16 14:20 621http://www.cnblogs.com/kelin131 ... -
static块到底什么时候执行?
2011-07-16 10:23 640http://www.iteye.com/topic/1100 ... -
Java Endorsed Standards Override Mechanism
2011-05-20 10:56 1022Introduction From time to time ... -
Java 类的热替换 —— 概念、设计与实现
2011-05-19 10:05 715构建基于 Java 的在线升级系统 孙 鸣, 软件 ...
相关推荐
然而,在Java中有一些关键字的使用可能会让人感到困惑,例如`public`、`protected`、`private`和`static`等。理解这些关键字何时使用、为什么使用以及如何使用是非常重要的。 #### 三、深入面向对象编程特性 面向...
然而,更推荐的方法是创建一个名为“JAVA_HOME”的环境变量,指向JDK的根目录,然后在Path变量中使用 `%JAVA_HOME%\bin;%PATH%`。这样不仅方便以后使用JUnit、Ant等工具,还能简化路径引用。 现在,你可以开始编写...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
书中提供了七个具有特殊行为的短小Java程序,并以多项选择题的形式提问:“这些程序会打印出什么?”随后揭示答案,并讲解问题的成因以及如何修复。 #### 知识点详解 ### 谜题:`SimpleQuestion` #### 源代码解析...
在使用IntelliJ IDEA 2020版本开发Java Web项目时,可能会遇到一个问题,即在创建新项目的过程中找不到“Static Web”选项。这可能是由于IDEA的版本更新导致的界面变化,使得部分用户在尝试构建传统的Web应用程序时...
然而,Java的复杂性和细节之处往往让新手感到困惑,特别是在处理一些看似相似但实则含义迥异的概念时。以下是根据提供的文件信息,深入解析Java初学者容易混淆的知识点: ### 1. main()方法的语法格式 `public ...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
与C语言相比,Java的输入方式更加复杂且功能强大,这使得初学者可能会感到有些困惑。本文将详细介绍两种常用的Java输入方式:通过`java.util.Scanner`类和`java.io.BufferedReader`类实现。 #### 二、`java.util....
作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。...
通过具体实例,我们将揭示值类型与引用类型之间的差异,并解释在实际编程过程中可能遇到的一些常见困惑。 #### 二、Java的数据类型 Java语言支持两种主要的数据类型:**值类型**和**引用类型**。值类型主要包括基本...
对于初学者而言,Java的初次接触往往伴随着不少挑战,尤其是配置环境和编译运行第一个程序的过程中遇到的各种错误信息,常常令人感到困惑甚至沮丧。本文旨在通过详细的步骤指导,帮助初学者克服这些困难,并顺利进入...
Java Puzzles是一种特殊的学习方式,通过解决一些令人困惑或意想不到行为的代码片段来加深对Java语言特性的理解。这种方式不仅能帮助开发者避免常见的编程陷阱,还能在轻松愉快的过程中学习。 #### 二、重要知识点...
对于Java中的关键字如public、protected、private、static等,以及面向对象的特性如继承、构造器、抽象类、接口、多态等,都需要通过大量的实践和思考来深入理解。 其次,有效的学习策略是至关重要的。作者在学习...
Java编程语言中,有一些微妙的陷阱和特性可能会导致程序员困惑,尤其是在处理数学运算和数据类型时。以下是对这两个Java谜题的深入解析: 谜题1:奇数性 在这个问题中,我们有一个方法`isOdd(int i)`,它通过检查`i...
Java 对象初始化顺序是指在 Java 程序中,对象的初始化过程中发生的顺序问题。这是 Java 编程语言的基础知识点之一,但是许多学生在学习和使用时总是感到困惑和困难。 二、JVM 执行过程中的“礼让”原则 JVM 在...
3. **编译程序**:在命令行中,导航到包含`HelloWorld.java`文件的目录,并使用命令`javac HelloWorld.java`进行编译。 4. **运行程序**:编译成功后,使用命令`java HelloWorld`运行程序。 #### 五、总结 通过...
本次讲座的目标是让参与者了解到编程中的一些奇特现象,特别是Java语言中的特性。通过有趣的例子,使参与者能够在享受乐趣的同时避免常见的编程陷阱。 ##### 学习目标 - 避免常见的编程陷阱 - 在学习过程中获得乐趣...
尽管这可能导致初学者感到困惑,但实际上这种设计方法有助于限制类的过度增长。 - **版本演变**: 从 Java 1.0 版本开始,Java 对其 I/O 类库进行了重大改进,最初是面向字节的,后来加入了面向 Unicode 字符的类库以...
但需要注意的是,关键字如public、protected、private、static的用法可能会引起困惑。这些关键字的理解对于编写符合面向对象原则的代码至关重要。《Thinking in Java》这本书对此有详细的阐述,可以帮助加深理解。 ...