1.使用构造器确保数据初始化
/* *在ReckInitDemo类中创建Reck的对象 */ public class ReckInitDemo { public static void main(String[] args) { //创建Reck对象 new Reck(); } } //内部类 class Reck { // 初始化数据 public Reck() { // 确保对象在被创建时有数据 System.out.println("数据被初始化"); } }
运行结果: 数据被初始化
当执行new Reck();时,将会为对象分配存储空间,并调用相应的构造器,保证了操作的对象是已经被初始化了的
2,方法的重载;
package com.wj.init; /** * * @author Administrator *调用重载的类 */ public class OverrideDemo { public static void main(String[] args) { new OverrideInit();//调用无参构造方法 new OverrideInit(5);//调用int类型的构造方法 } } //内部类 class OverrideInit { // 构造方法: // 1,访问控制必须是public // 2,构造方法的名称和类的名称完全一样 // 3,不能有相同的两个构造方法参数和名称是完全一样的 int i; // 无参构造方法 public OverrideInit() { System.out.println("被调用了"); } // int类的构造方法 public OverrideInit(int i) { i++; System.out.println(i); } }
运行结果:
被调用了
6
当 new OverrideInit();对象是可以不传参数也可以传参数,,这就是方法的重载
3,默认构造器的简单使用;
在2中我们已经使用了 new OverrideInit();,这就是一个简单的默认构造器
package com.wj.init; /** * * @author Administrator 默认构造器的使用 系统类 的默认构造器; 自定义类默认器的使用 */ public class DefaultDemo { // 系统会默认添加DefaultDemo的构造方法,它的作用是创建一个默认 // 的对象,如果我们创建的类中额米有构造器,系统会默认的帮我们创建一个默认的构造器 // public DefaultDemo() { // } public static void main(String[] args) { // 创建 new DefaultDemo(); // new // DefaultDemo();创建了一个对象, //并调用其默认的构造方法-如果我们没有定义这个构造器, //没有这个构造器我们就不能创建对象,也就不能去调用方法, //但是如果定义了一个(无论是否有参数),编译器都不会自动创建默认的构造器 System.out.println("成功创建了"); } }
自定义构造器:
public class DefaultDemo { //自定义一个有参数构造器,系统不会再创建默认的构造器 public DefaultDemo(int i) { } public static void main(String[] args) { // 创建 new DefaultDemo(); // new // DefaultDemo();创建了一个对象, //并调用其默认的构造方法-如果我们没有定义这个构造器, //没有这个构造器我们就不能创建对象,也就不能去调用方法, //但是如果定义了一个(无论是否有参数),编译器都会自动创建默认的构造器 System.out.println("成功创建了"); } }
无法编译:构造器无法匹配
4,this关键字
this区别当前的对象
/* * this的简单使用 */ public class ThisDemo { private static int i; //使用this区分当前i的区别 android和oracle都有相关的使用 public ThisDemo(int i){ this.i=i; } public static void main(String[] args) { new ThisDemo(8); System.out.println(i); } }
5,静态代码块初始化,静态数据初始化,
/** * * @author Administrator Static代码块的初始化,Static数据初始化 */ public class StaticDemo { // 静态属性,静态代码块,代码块的执行顺序 // 静态属性-->静态代码块-->代码块 static int i = 0; static { // 静态代码块,适合数据的初始化 System.out.println("A" + i); i = 10; } { // 初始化非静态实例 System.out.println("B" + i); i = 5; Mug mug = new Mug(i); } public static void main(String[] args) { StaticDemo demo = new StaticDemo(); demo.f(); } // 打印i的方法 public void f() { System.out.println(i); } } // 内部类 class Mug { private int i; public Mug(int i) { this.i = i; } }
6,可变数组参数
package com.wj.init; /** * * @author Administrator 可变参数列表 */ public class VarArrayList { //创建可变数组 static void point(Object... s) { for (Object i : s) { System.out.println(i); } } public static void main(String[] args) { //类名.可变数组 VarArrayList.point("java");// VarArrayList.point(1); int[] a={1,2,3,4}; VarArrayList.point(a); } }
运行结果:
java
1
[I@64ea66
可变数组可以传入任意类型的,也可以是空的,主要是利用了java中的一切类都是继承的Object