Java文件执行顺序总结】的更多相关文章

类执行顺序 一个java文件的执行过程: 编译:加载的类,加载的时候对类中的资源进行编译,首先是静态成员变量,静态方法等,如果有相应操作,就会进行相应的操作, 并且这个Static修饰后的静态成员变量和静态方法,Java虚拟机只会分配一次相应的内存地址,所以有时候,我们会用static来优化程序 节省内存. 加载编译过后,就会寻找程序的入口,进行加载相应的对象对"数据流"进行在项目中进行交互传输…
登陆shell与交互式非登陆shell的区别 登录shell 所谓登录shell,指的是当用户登录系统时所取的那个 shell.登录shell属于交互式shell. 登录shell将查找4个不同的启动文件来处理其中的命令. bash shell处理文件的顺序如下: /etc/profile /etc/profile.d等待配置文件 $HOME/.bash_profile $HOME/.bash_login $HOME/.profile /etc/profile是bash shell在系统上的主默…
本文主要介绍以下两块内容的执行顺序,熟悉的大虾可以直接飘过. 一.JAVA中执行顺序 静态块 块 构造器 父类构造器 二.JAVA中赋值顺序 静态块直接赋值 块直接赋值 父类继承的属性已赋值 静态变量声明时赋值 成员变量声明时赋值 构造器赋值 第一部分很好测试,我们只需要写一个子类,类中定义一个静态块,一个普通块,一个构造器,它的父类构造器,都打印一条语句,即可明白它们直接的执行顺序 Mastiff类 <span style="font-size: medium;">/**…
Java中main方法,静态,非静态的执行顺序详解 Java程序运行时,第一件事情就是试图访问main方法,因为main相等于程序的入口,如果没有main方法,程序将无法启动,main方法更是占一个独立的线程,找到main方法后,是不是就会执行mian方法块里的第一句话呢?答案是不一定  看看下面两种最常见的情况: 第一种情况: main方法在一个具有其他方法或属性的类中: public class Test1 { public static String name; public Test1(…
在了解WordPress挂载机制时,一直有一个疑惑,到底是WordPress的内核源文件先执行还是主题文件里functions.php文件先执行.为了解决这个问题,想了解WordPress的工作原理,它是如何生成网页的,各程序文件的执行顺序是什么,于是有了这篇文章. WordPress所有的前端页面生成都要经过根目录下的index.php文件(不是主题根目录),这是通过Web服务器的rewrite规则实现的.然后通过index.php文件一步步引导WordPress环境启动,再分析请求URL返回…
原来自己一直都没弄明白Java程序的执行顺序问题,今天,自己写了个测试,果然与自己考虑的有差距 测试代码: 一个父类Animal 一个子类Dog 测试类Test 运行结果: 所以执行顺序是: 父类Animal静态代码块->子类Dog静态代码块->父类Animal非静态代码块->父类Animal构造函数->子类Dog非静态代码块->子类Dog构造函数 探索:为啥是这样的执行顺序 我们首先来看如果不使用继承会是怎样的结果: 静态代码块-->非静态代码块-->构造函数…
首先执行基类的构造函数 然后执行派生类的构造函数之外的初始化语句 最后执行派生类的构造函数 在Java中,如果派生类构造函数需要调用基类的构造函数,那么基类构造函数必须作为派生类构造函数的第一句话.在Python中,派生类调用基类的构造函数就比较灵活. 如下代码有一个基类Base,一个派生类Son,Son有一个成员变量Value.在创建Son对象时,执行顺序为基类的构造函数.Value的构造函数.Son的构造函数. package weiyinfu.colorama; public class…
当我们new一个GirlFriend时,我们都做了什么? 一个例子搞懂Java程序运行顺序 public class Girl { Person person = new Person("Girl"); /*构造代码块忘记加了,不过构造代码块和成员变量一样,每次构造方法时都会执行一次 { System.out.println("构造代码块"); } */ static{ System.out.println("Girl static"); } s…
//据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new Text("t1"); public static Text t2 = new Text("t2"); public static int i = print("i"); public static int n = 99; public int j…
先加载类,然后再实例化类. 继承与static 面试题目如下:请写出程序执行完成之后的结果. package extend; public class X { Y y=new Y(); static{  System.out.println("tttt"); } X(){  System.out.println("X"); }  public static void main(String[] args) {    new Z(); }} class Y{ Y(){…
一 Animal为父类,构造器中调用public(default.protected) say方法,Dog继承了Animal,并重载了say方法.新建Dog对象,查看运行结果,若将Animal中say方法改为private,再次运行程序查看结果: public class Dog extends Animal { private String name; public Dog() { System.out.println("dog init"); name = "jack&q…
package static类型.执行顺序; public class Test { Person person = new Person("Test"); static{ System.out.println("test static"); } public Test() { System.out.println("test constructor"); } public static void main(String[] args) { ne…
关于js的执行原理,除去html页面中直接添加的代码,js代码的放置可以分为两类. //情形a           <script type="text/javascript" src="xxx.js"$amp;>amp;$lt;/script>           //情形b            <script type="text/javascript">           code......       …
    Linux 的变量可分为两类:环境变量和本地变量   环境变量:或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量. 本地变量:当前shell 中的变量,很显然本地变量中肯定包含环境变量.Linux 的本地变量的非环境变量不具备继承性.   Linux 中环境变量的文件     当你进入系统的时候,Linux 就会为你读入系统的环境变量,Linux 中有很多…
前言 在Java中,静态 Static关键字使用十分常见 本文全面 & 详细解析静态 Static关键字,希望你们会喜欢 目录 1. 定义 一种 表示静态属性的 关键字 / 修饰符 2. 作用 共用.共享 能有此作用的原因分析: Java中,任何变量 / 代码存储时,都是 在编译时 由系统自动分配内存 在静态变量编译后,所分配的内存会一直存在,直到程序退出内存才会释放这个空间 类加载时,JVM会把静态变量放到 方法区,被本类 & 本类的所有实例所共用 3. 具体使用 Static静态修饰符…
总结:静态代码块总是最先执行. 非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行. 父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态代码块和构造函数. ================================================================================ 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个, 一般在代码块中对一些static变量…
代码: package com.company; public class Main { public static void main(String[] args) { new MyClass(); } } class Test { Person person = new Person("Test"); static{ System.out.println("test static"); } public Test() { System.out.println(&…
1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块2.如果类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块3.将类的成员赋予初值(原始类型的成员的值为规定值,例如int型为0,float型为0.0f,boolean型为false:对象类型的初始值为null)4.如果构造方法中存在this()调用(可以是其它带参数的this()调用)则执行之,执行完毕后进入第7步继续执行,如果没有this调用则进行下一步.(这个有可能存在递归调用其它的构造方法)5.执行显式…
/** * Description: * 基类的引用变量可以只想基类的实例对象也可指向其子类的事来对象 * 接口的引用变量也可以指向实现类的实例对象 * 程序调用的方法在运行期才动态绑定 * 绑定指将一个对象调用和一个方法主体连接到一起,就是引用变量所指向的具体实例对象的方法,就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法 * 这种动态绑定实现了多态.只有方法有多条的概念 */ public class Test { /** * 首先new Sub()的时候会首先调用Bas…
1. 静态初始化块 > 初始化块 > 构造器 2. 父类 > 子类 综合下来顺序就是: 父类静态初始化块和静态成员变量 子类静态初始化块和静态成员变量 父类初始化块和普通成员变量 父类构造器 子类初始化块和普通成员变量 子类构造器 需要注意静态初始化块是在类第一次加载的时候就会进行初始化, 其余是在实例化时初始化. eg: eg2:…
1.首先会初始化父类,因为没有父类子类也无从谈起.第一步初始化static 变量 或者 静态初始化话块 2.初始化子类的static 变量 或者 静态初始化块 3.顺序初始化父类普通变量 或者 父类普通变量初始化块 ,然后是构造函数 4..顺序初始化子类普通变量 或者 子类普通变量初始化块 ,然后是构造函数…
class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("static A"); } } public class HelloB extends HelloA { public HelloB() { System.out.println(&q…
情况1:try块中没有抛出异常try和finally块中都有return语句 public static int NoException(){ int i=10; try{ System.out.println("i in try block is"+i); return --i; }catch(Exception e){ --i; System.out.println("i in catch - form try block is"+i); return --i;…
最近在温习java的基础,刷题刷到java的执行顺序,很汗颜,答案回答错了! 题目类似如下: package com.phpdragon.study.base; public class ExecOrder { Son son = new Son(); public static void main(String[] args) { new Grandson(); new ExecOrder(); //打印出的结果是? } } class Grandson extends Son { stati…
今天写了一个java文件,类似聊天软件的东西.在eclipse里输入输出显得没感觉,于是乎就准备在cmd里输入和显示输出.如下图,我准备运行的是ChatDemo.class文件.路径是:D:\workspace\Learn\bin\com\udp . 然后我就打开cmd,傻傻的输入:cd D:\workspace\Learn\bin\com\udp 我还以为已经进入到这个文件夹呢,其实不然.应该先切换根目录进入D盘才对.如下图 这样才算进入D盘. 然后我就想着进入class文件所在位置,然后ja…
JVM之内存结构详解 JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的区域,具体如图1-1所示. 五个区域 JVM分为五个区域:堆.虚拟机栈.本地方法栈.方法区(元空间).程序计数器 PS: 1.五个区域中,虚拟机栈.本地方法栈.程序计数器为线程私有.方法区和堆为线程共享区: 2.JVM中不同区域的占用大小不同,堆最大,程序计数器最小,Java中最多的"对象"就是放在堆中 堆 堆得主要作用就是存储对象,它占用最大的内存空间堆区,也同样成为了java垃圾收集器的重要对…
回到目录 对于单个分支项目来说,只要你生成一个migration的版本,就会有一个时间戳文件的对应,而在update-database时,会从最小的时间开始,一直执行到当前版本的migration,而对于多个分支项目来说,会涉及在每个分支上添加自己的migration计划,这时,我们可能会手动修改时间戳,以适应我们数据库的迁移工作!…
引用链接:http://www.cnblogs.com/timsheng/archive/2012/12/10/2812164.html Cucumber是Ruby世界的BDD框架,开发人员主要与两类文件打交 到,Feature文件和相应的Step文件.Feature文件是以 feature为后缀名的文件,以Given-When-Then的方式描述了系统的场景(scenarios)行为:Step文件为普通的Ruby文 件,Feature文件中的每个Given/When/Then步骤在Step文件…
同时加载编译多个jar包和java文件 在个人平常使用或者当我们把代码部署到linux服务器上的时候,我们经常需要通过命令行编译和运行java文件,网上关于这个的方法大多是通过 javac -cp filePath/jarName.jar javaName.java 这种方法.但是加入在filepath文件夹下面有好几个jar包,在src文件夹中有好几个java文件的时候,这个方法就很笨拙了,我在网上看的资料非常乱,其实下面一个非常简单的指令就可以解决了: javac -Djava.ext.di…
Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块.非静态初始化块和构造函数,里面都是一句简单的输出. 主类Main里面也如法炮制. class A { static { System.out.println("Static init A."); } { Sys…