子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数 也就是说非静态初始化块的执行顺序要在构造函数之前。 执行完之后可以看到顺序如下: ...
分类:
编程语言 时间:
2017-09-17 00:31:17
阅读次数:
197
类会在首次被“主动使用”时执行初始化,为类(静态)变量赋予正确的初始值。在Java代码中,一个正确的初始值是通过类变量初始化语句或者静态初始化块给出的。而我们这里所说的主动使用 包括: 1. 创建类的实例 2. 调用类的静态方法 3. 使用类的非常量静态字段 4. 调用Java API中的某些反射方 ...
分类:
编程语言 时间:
2017-09-13 19:25:21
阅读次数:
199
几大原则 一、静态成员变量(Static) 1、静态成员变量为类变量,所有对象共享同一内存空间 2、静态成员变量的声明和定义仅在首次加载类时执行一次 3、首次加载类时首先对所有静态成员变量根据类型默认赋初值,然后再对有右值的附右值 二、静态初始块 1、静态初始化块仅在首次加载类时执行一次 2、多个静 ...
分类:
其他好文 时间:
2017-09-09 11:47:50
阅读次数:
156
数组: 静态数组 和 动态数组 1.写法: 定义:用来存储一组相同数据类型的元素 * * * * * 数组中存储的元素必须是相同的数据类型 数组的声明 初始化 Int[] a={1,2,3,4}; 数组的初始化: 静态初始化: //方式1 int[] a={'a',2,3,34,3,4,5,6,7, ...
分类:
编程语言 时间:
2017-08-26 18:32:51
阅读次数:
373
处理思路:当作一维数组处理,相当于这个一维数组中的元素仍然是一个数组 1.定义二维数组 语法: 方式一:元素类型[][] 数组名称 方式二:元素类型 数组名称[][] 推荐使用方式一 2.初始化二维数组 a.静态初始化 语法: 元素类型[][] 数组名称 = new 元素类型[][]{一维数组1,一 ...
分类:
编程语言 时间:
2017-08-20 12:41:23
阅读次数:
185
所谓初始化,Java中的数据必须先进行初始化,然后才能使用,为数组中的元素分配内存空间,并为每个元素赋初始值 1.静态初始化 初始化时由程序员指定每个元素的初始值,由系统计算数组的长度 语法: 数组元素类型[] 数组名称 = new 数组元素类型[]{元素1,元素2,...}; 例如:int[] a ...
分类:
编程语言 时间:
2017-08-20 12:36:43
阅读次数:
164
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 1、 2、 ...
分类:
其他好文 时间:
2017-08-20 00:51:41
阅读次数:
216
一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象。 1、去除重复创建的字符串实例 2、同时提供了静态工厂方法和构造器的不可变类,优先使用静态工厂方法。 3、使用静态初始化器 4、优先使用基本数据类型而不是装箱,当心无意识自动装箱 就如最简单的单例模式一样,我们试图把对象进行复 ...
分类:
其他好文 时间:
2017-08-11 10:33:23
阅读次数:
205
准备阶段是给变量赋系统的初始值。而初始化阶段就是给变量赋程序员自己设的值 初始化阶段是<clinit>()方法的执行过程。过程如下 1.编辑器收集所有的赋值动作和静态块合并形成<clinit>方法。收集是按照代码出现的顺序决定的。并且静态初始化块只能访问定义在之前的变量,对于在之后的变量可以赋值,但 ...
分类:
编程语言 时间:
2017-08-08 23:03:14
阅读次数:
222
类的高级概念 本章目标 1.理解访问修饰符 2.理解封装的概念和好处 3.理解类的静态成员 4.掌握静态初始化块和实例初始化块的用法 5.理解内部类的使用方式 第一访问修饰符 Public(公用) Protected(受保护) Private(私用) 没有访问修饰符 访问修饰符适用的五种分类 本类: ...
分类:
编程语言 时间:
2017-08-08 00:35:45
阅读次数:
223