java构造函数,java的静态块理解
今天我遇到这样的代码块,理解甚久,现在理解了,举一些例题给你看看
先创建一个One类:
package accp.com;
/**
* 其中一个类
* @author xuxiaohua
*
*/
public class One {
public One(String str){ //定一个构造函数
System.out.println(str);
}
}
再创建一个Two类:
package accp.com;
public class Two {
One one=new One("one1");
One one2=new One("one2");
static One one3=new One("one3");//为什么这句话只执行了一次,是因为静态块只执行一次,是从java虚拟机开始加载的时候
public Two(String str){
System.out.println(str);
}
}
然后编写测试类:
package accp.com;
public class Test {
static Two two = new Two("two");//静态块是java加载时最先走的方法,所以这句话无论放在哪里,都先走的静态方法
public static void main(String args[]){
Two t=new Two("two2");
System.out.println("开始main方法=========");
Two tw=new Two("two3");
System.out.println("执行完毕。");
}
}
运行结果为:
one3------解释:静态块先执行,所以自然走到Two类中,然后Two类中也存在static One one3=new One("one3");静态的,所以先走这句话了。
one1------解释:测试类中,static Two two = new Two("two");中的Two two 是定义,所以先走定义的类Two然后执行里面的方法,注意不会出现one3了,因为静态块只执行一次
one2
two----解释:static Two two = new Two("two");前面的定义走完之后就走new Two("two");实例化对象,输出two
one1---解释:Two t=new Two("two2");跟上面一样,先看前半部分,Two t是定义变量,所以走Two中的方法,但不会执行静态块了,原因已说了,是因为静态块只执行一次。好了,前部分定义看完了,接着看实例化后半部分:new Two("two2");,实例化对象,然后输出two2
one2
two2
开始main方法=========//这几句话没啥可解释的吧!
one1------解释:理由同上
one2
two3
执行完毕。
最后总结那么几句:要想看明白,你需要理解静态块和构造函数,还有定义和实例化。
Two two;//这属于在定义一个变量
new Two();//属于在实例化Two对象,Two two=new Two();//合起来就是定义和实例化对象。
其次就是静态块了,静态块是在java加载的时候只运行一次的,并且是先执行的代码块。
学如逆水行舟,不进则退。
java构造函数,java的静态块理解的更多相关文章
- 【转】java对象——new对象的理解
学了好长时间的java对于java中的对象一直没有理清楚,今天楼主对java中的对象进行了整理,希望对大家有帮助. 理解和使用java中的对象,我们首先了解一下构造方法与对象的创建. 类是面向对象语 ...
- PHP与JAVA构造函数的区别
早期的PHP是没有面向对象功能的,但是随着PHP发展,从PHP4开始,也加入了面向对象.PHP的面向对象语法是从JAVA演化而来,很多地方类似,但是又发展出自己的特色.以构造函数来说,PHP4中与类同 ...
- 【转】关于Java的Daemon线程的理解
原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Dae ...
- 创建Java类并实例化深入理解
package com.sanguosha.java; import java.util.Scanner;//导入包 public class TestPerson { public static v ...
- 深入理解Java虚拟机 - Java体系
使用JAVA已经快三年了,但说来惭愧,一直以来认为Java就是Java语言本身,最多再包括一个JVM,对于整个Java的体系结构还是不甚明了,现在有时间把<深入理解Java虚拟机>这本书读 ...
- Java内存管理的进一步理解-模拟过程图解
Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区 方法区存放装载的类数据信息包括: ...
- Java编程的逻辑 (82) - 理解ThreadLocal
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- java构造函数修饰符
java 构造函数,可以被访问修饰符修饰,而不能被特殊修饰符修饰:(在编译器经过测试) 访问修饰符: public (最常用,其他类的任何位置都可以访问) protected(能够在同一包中被子类访问 ...
- 深入理解java虚拟机---java虚拟机内存管理(七)
本地方法栈.java堆.方法区 本地方法栈在HotSpot版本内与java虚拟机栈是合二为一的.不单独区分本地方法栈.但是java虚拟机中是有这样一块区域的. 作用: 1.本地方法栈为虚拟机栈执行ja ...
- java 重写你可以这么理解 因为 方法名和参数类型个数相同 所以这就是重写了 然后 因为是重写 所以 返回值必须相同
java 重写你可以这么理解 因为 方法名和参数类型个数相同 所以这就是重写了 然后 因为是重写 所以 返回值必须相同
随机推荐
- jquery插件 源码
下面是对Jquery几个经常用到的地方进行的增强. 功能是参考百度七巧板JS框架来完成的. 一.页面属性 $.page.getHeight():获取页面高度 $.page.getWidth():获取页 ...
- HDU 4671 Partition(定理题)
题目链接 这题,明显考察搜索能力...在中文版的维基百科中找到了公式. #include <cstdio> #include <cstring> #include <st ...
- java 面向对象--------时间作业
编写Java应用程序.首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时.分.秒,一个构造方法用于对三个成员变量(时.分.秒) 进行初始化,还有一个成员方法show()用于显示 ...
- Scrum会议8(Beta版本)
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- SQL Server访问MySql
使用环境:操作系统:window7数据库:SQL Server2005.MySql5.01.在安装了SQL Server的服务器上安装MySql的ODBC驱动:下载链接:http://dev.mysq ...
- pdfkit安装使用
centos 安装pdfkit1.先安装pdfkit依赖包 wkhtmltopdf 安装方式: # wget http://download.gna.org/wkhtmltopdf/0.12/0.12 ...
- 综合支撑【恶灵附身 Psycho Break】的世界观的概念艺术
综合支撑[恶灵附身 Psycho Break]的世界观的概念艺术 三上真司监督提出的,是对着重表现讲述内心恐怖的哪个世界观的创作和统一做了很大贡献的概念艺术. 这里以他经手的艺术为例,来看看稀少的恐 ...
- Smart Tip
构建了一个smar-tip的tooltip组件 主要特性 自动定位与边界查找 支持8个方向与圆角 自定义皮肤 调用(Usage) var $container = $("#container ...
- [转]LaTeX处女级入门命令语法集
1.LaTeX文件的框架如下: \documentclass{article} \begin{document} This is the body of the article \end{docume ...
- android ListView详解继承ListActivity
[转]http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 在android开发中ListView是比较常用的组件,它以列表的形式展 ...