今天我遇到这样的代码块,理解甚久,现在理解了,举一些例题给你看看

先创建一个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的静态块理解的更多相关文章

  1. 【转】java对象——new对象的理解

    学了好长时间的java对于java中的对象一直没有理清楚,今天楼主对java中的对象进行了整理,希望对大家有帮助. 理解和使用java中的对象,我们首先了解一下构造方法与对象的创建.  类是面向对象语 ...

  2. PHP与JAVA构造函数的区别

    早期的PHP是没有面向对象功能的,但是随着PHP发展,从PHP4开始,也加入了面向对象.PHP的面向对象语法是从JAVA演化而来,很多地方类似,但是又发展出自己的特色.以构造函数来说,PHP4中与类同 ...

  3. 【转】关于Java的Daemon线程的理解

    原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Dae ...

  4. 创建Java类并实例化深入理解

    package com.sanguosha.java; import java.util.Scanner;//导入包 public class TestPerson { public static v ...

  5. 深入理解Java虚拟机 - Java体系

    使用JAVA已经快三年了,但说来惭愧,一直以来认为Java就是Java语言本身,最多再包括一个JVM,对于整个Java的体系结构还是不甚明了,现在有时间把<深入理解Java虚拟机>这本书读 ...

  6. Java内存管理的进一步理解-模拟过程图解

    Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区      方法区存放装载的类数据信息包括:      ...

  7. Java编程的逻辑 (82) - 理解ThreadLocal

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  8. java构造函数修饰符

    java 构造函数,可以被访问修饰符修饰,而不能被特殊修饰符修饰:(在编译器经过测试) 访问修饰符: public (最常用,其他类的任何位置都可以访问) protected(能够在同一包中被子类访问 ...

  9. 深入理解java虚拟机---java虚拟机内存管理(七)

    本地方法栈.java堆.方法区 本地方法栈在HotSpot版本内与java虚拟机栈是合二为一的.不单独区分本地方法栈.但是java虚拟机中是有这样一块区域的. 作用: 1.本地方法栈为虚拟机栈执行ja ...

  10. java 重写你可以这么理解 因为 方法名和参数类型个数相同 所以这就是重写了 然后 因为是重写 所以 返回值必须相同

    java  重写你可以这么理解    因为   方法名和参数类型个数相同  所以这就是重写了    然后  因为是重写  所以  返回值必须相同

随机推荐

  1. BZOJ1829 : [Usaco2010 Mar]starc星际争霸

    设出$x,y,z$三个未知量分别表示三种单位的战斗力. 那么各种不等式都可以表示成$ax+by+cz\geq 0$的形式. 注意到$z>0$,那么两边都除以$z$得到$ax+by+c\geq 0 ...

  2. TYVJ P1072 bomb Label:看不懂题意

    描述 一场战争正在A国与B国之间如火如荼的展开.B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利!当然,A国人民不会允许这样的 ...

  3. TYVJ P1026 犁田机器人 Label:水

    背景 USACO OCT 09 2ND 描述 Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田.这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田 ...

  4. POJ 3318 Matrix Multiplication(随机算法)

    题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...

  5. Pointcut is not well-formed: expecting 'identifier' at character position 0

    异常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDa ...

  6. [排错] PATH_MISSING

    症状: 更换了磁带机部件,导致Robots选项卡中的TLD(2) Robotic Path显示为PATH_MISSING. 解决方法: 概括起来就是: 删除TLD(2),重新创建Robot记录,然后重 ...

  7. could not build module 'uikit'

    今天 新建一个SingleView-APP 无法运行程序,在 AppDelegate.h中 第一行代码处报错. #import <UIKit/UIKit.h> /Users/wjw/Des ...

  8. etcd学习记录

    参考资料: etcd:从应用场景到实现原理的全方位解读 etcd:用于服务发现的键值存储系统 Etcd学习(一)安装和.NET客户端测试 Etcd学习(二)集群搭建Clustering

  9. [ZZ] 基于DirectX shader的Per-pixel lighting实现

    这个特效需要用到DX11 UAV吗? http://blog.tianya.cn/blogger/post_show.asp?BlogID=510979&PostID=5665974 Intr ...

  10. PHP常用验证正则表达式

    PHP常用验证正则表达式 数字.手机号.QQ号.Url地址合法性校验 1.验证是否为整数 1 function isNumber($val) 2 { 3 if(ereg("^[0-9]+$& ...