由于 Java 虚拟机需要调用类的 main()方法,所以该方法的访问权限必须是 public,又因为 Java 虚拟机在执行 main()方法时不必创建对象,所以该方法必须是 static 的,该方法接收一个 String 类型的数组参数,该数组中保存执行 Java 命令时传递给所运行的类的参数。

又因为 main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在之前的例子中多次碰到。

main()方法的使用说明

 * 1.main()方法作为程序的入口;

 * 2.main()方法也是一个普通的静态方法

 * 3.main()方法也可以作为我们与控制台交互的方式。(之前,使用 Scanner)

类的成员之四:代码块(或初始化块)

 *

 * 1.代码块的作用:用来初始化类、对象的

 * 2.代码块如果有修饰的话,只能使用 static

 * 3.分类:静态代码块 vs 非静态代码块

 *

 * 4.静态代码块

 * 》内部可以有输出语句

 *  》随着类的加载而执行,而且只执行一次

 *  》作用:初始化类的信息

 *  》如果一个类中,定义了多个静态代码块,则按照声明的先后顺序执行

 *  》静态代码块的执行,优先于非静态代码块的执行

 *  》静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构

 *

 * 5.非静态代码块

 *  >内部可以有输出语句

 *  >随着对象的创建而执行

 *  >每创建一个对象,就执行一次非静态代码块。

 *  >作用:可以在创建对象时,对对象的属性等进行初始化。

 *  >如果一个类中,定义了多个非静态代码块,则按照声明的先后顺序执行

 *  >非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法。

 * 

 * 对属性可以赋值的位置:

 *  默认初始化

 *  显式初始化

 *  构造器中初始化

 *  有了对象以后,可以通过"对象.属性""对象.方法"的方式,进行赋值。

 *  在代码块中赋值

class Father {

static {

System.out.println("11111111111");//1

}

{

System.out.println("22222222222");//5  //10

}

public Father() {

System.out.println("33333333333");//6    //11

}

}

public class Son extends Father {

static {

System.out.println("44444444444");//2

}

{

System.out.println("55555555555");//7

}

public Son() {

System.out.println("66666666666");//8

}

public static void main(String[] args) { // 由父及子 静态先行

System.out.println("77777777777");//3

System.out.println("************************");//4

new Son();

System.out.println("************************");//9

new Father();

}

}

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法

每日复习------main()方法以及对象的初始化顺序的更多相关文章

  1. [C#解惑] #2 对象的初始化顺序

    谜题 在上一篇C#解惑中,我们提到了对象的初始化顺序.当我们创建一个子类的实例时,总是会先执行基类的构造函数,然后再执行子类的构造函数.那么实例字段是什么时候初始化的呢?静态构造函数和静态字段呢?今天 ...

  2. [百度空间] [转] 在 Visual C++ 中控制全局对象的初始化顺序

    from: http://blog.csdn.net/classfactory/archive/2004/08/07/68202.aspx 在 C++ 中,同一个翻译单位(.cpp文件)里的全局对象的 ...

  3. Java对象的初始化顺序

    new一个对象时,该对象的初始化顺序如下 : 父类中的静态成员变量 父类中的静态代码块 子类中的静态成员变量 子类中的静态代码块 父类中的非静态变量 父类中的非静态代码块 父类构造函数 子类中的非静态 ...

  4. Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)

    Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...

  5. C++从静态对象的初始化顺序理解static关键字

    问题 首先考虑一个全局变量的初始化顺序问题 在头文件1中: extern int b; ; 在头文件2中: extern int a; ; 源文件中包含了头文件1和头文件2,这种情况下a和b可能的值是 ...

  6. C++ 类对象的初始化顺序 ZZ

    C++构造函数调用顺序 1.     创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类): 2.    如果类里面有成员类,成员类的构造函数优先被调用:(也优先于该类本身的构造函数 ...

  7. java类对象的初始化顺序

    在下面这个例子中,我们分别在父类和子类中测试了静态代码块.普通代码块.静态成员变量.普通成员变量.构造器.静态内部类. 一:代码块及变量测试 class Field{ public static St ...

  8. JAVA 父类与子类初始化顺序问题

    main方法-->子类对象的初始化语句(new className()语句)--->子类构造[因为继承的缘故,它先不会执行]--->父类构造[这一步先不会执行]--->父类静态 ...

  9. 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)

    本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...

  10. main方法执行之前,做什么事

    1.我们知道程序的入口是main方法,那么在执行main方法之前,需要做些什么准备工作呢? 2.main方法执行之前,必须要把non-local static对象构造完成.static对象有:全局对象 ...

随机推荐

  1. Leetcode209

    209. Minimum Size Subarray Sum         i , s , l = 0, 0, 0         for j in range(len(nums)):        ...

  2. Windows Powershell个性化设置

    1. 设置Powershell prompt只显示当前目录: 2. 设置Powershell title为当前路径: 这个文件的路径为:echo $profile # file location:ec ...

  3. 小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验六

    //每隔10ms,让led灯的一个8状态循环执行一次(每个变化时间值小一点,方便测试比如设置为10us) 源代码 module counter_led_6(    clk,    reset_n,   ...

  4. gulp技术:自动化构建工具

    作用:压缩css.js.img,合并文件,改名字,编译sass,拷贝 使用步骤: 1.安装node环境,下一步,下一步,安装C盘: 2.在你的根目录下,在地址栏输入cmd回车: 3.检测node和np ...

  5. 记 第一次linux下简易部署 django uwsgi nginx

    1.首先确定django项目是跑起来的 2.装nginx  uwsgi ,网上教程一大堆 3.uwsgi的配置了 我是通过ini启动的 随意找个顺手的文件夹创建uwsgi.ini文件 我是在/home ...

  6. 入门级java开发环境的配置安装

    为了能够在计算机上开发Java程序和运行Java程序,就需要在Windows操作系统上配置Java开发环境. 首先,安装JDK: 1.在Oracle官网上下载JavaSE: 2.在Download下载 ...

  7. AE|蒙版、遮罩、轨道遮罩全面解析

    相信很多初学者都有这样的困惑,搞不清蒙版和遮罩这两个概念的区别,甚至有的人认为它们就是一个东西. 这两个看似一样的概念,其实是有很大的区别的,今天主要从定义和作用方式这两个方面进行解析,相信对各位认识 ...

  8. VisualVM无法运行,修改配置文件

      在VisualVM安装位置下找到etc目录修改etc目录下的visualvm.conf文件 加入配置 参数 指定JDK或JRE路径,如 visualvm_jdkhome="C:\xxx\ ...

  9. Keil MDK5编译时出现错误:error: L6002U: Could not open file …\obj\main.o: No such file or directory,

    原因:电脑系统用户名中存在中文字符 解决:用户环境变量,找到变量 TEMP 和 TMP,将变量值中的"%USERPROFILE%"使用"C:\user\default&q ...

  10. Fastboot_Cmd

    /* -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- */adb命令:/* -*-* ...