欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java 初始化

发布时间:2025/7/14 java 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java 初始化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一.static 初始化

static 成员初始化顺序

package object;class Bowl {Bowl(int marker){System.out.printf("Bowl("+marker+")\n");}void f1(int marker){System.out.printf("f1("+marker+")\n"); } } class Table{ static Bowl bowl1 =new Bowl(1); Table() { System.out.println("table()"); } void f2(int marker) { System.out.println("f2("+marker+")"); } static Bowl bowl2 = new Bowl(2); } class Cupboard { Bowl bowl3 = new Bowl(3); static Bowl bowl4 = new Bowl(4); Cupboard() { System.out.print("Cupboard\n"); bowl4.f1(2); } void f3(int marker) { System.out.println("f3("+marker+")"); } static Bowl bowl5 = new Bowl(5); } public class StaticInitialization{ public static void main(String args[]) { System.out.println("Creating new Cupboard() in main"); new Cupboard(); //静态成员只有在第一个Cupboard在创建时才会初始化,此后,静态成员不会再次初始化 System.out.println("Creating new Cupboard() in main"); Cupboard cupboard = new Cupboard(); new Table().f2(1); new Cupboard().f3(1); } }/* output: Creating new Cupboard() in main Bowl(4) Bowl(5) Bowl(3) Cupboard f1(2) Creating new Cupboard() in main Bowl(3) Cupboard f1(2) Bowl(1) Bowl(2) table() f2(1) Bowl(3) Cupboard f1(2) f3(1) *///~

显示的初始化静态方法

package object; //: initialization/ExplicitStatic.javaimport static net.mindview.util.Print.*;class Cup {Cup(int marker){ print("Cup("+ marker +")");}void f(int marker) { print("f("+marker+")"); } } class Cups { static Cup cup1; static Cup cup2; //静态域 static{ cup1 = new Cup(1); cup2 = new Cup(2); } //静态块 Cups() { print("Cups()"); } } public class ExplicitStatic{ public static void main(String args[]) { print("Inside main()"); Cups.cup1.f(99); // (1) 无论时通过(1)还是注释掉(1)运行(2),Cups的静态初始化都会执行
// 静态初始化只会执行一次,如果(1)(2)全部注释掉则不会执行初始化
} //static Cups cups1 = new Cups(); //(2) //static Cups cups2 = new Cups(); //(2) }/* output: Inside main() Cup(1) Cup(2) f(99) *///~

 二.非静态实例的初始化

package object; import static net.mindview.util.Print.*;class Mug {Mug(int marker){print("mug("+ marker + ")");}void f( int marker){print("f("+marker +")");} } public class Mugs{Mug mug1;Mug mug2;{mug1 = new Mug(1); mug2 = new Mug(2);print("mug1 & mug2 initialized");} //实例初始化子句是再构造器之前执行的Mugs(){print("MUgs()");}Mugs(int i){print("Mugs(int)");}public static void main(String args[]){print("Instde main()");new Mugs();print("new Musg() cmopleted");new Mugs(1);print("new Mugs(1) completed");} }/* output: Instde main() mug(1) mug(2) mug1 & mug2 initialized MUgs() new Musg() cmopleted mug(1) mug(2) mug1 & mug2 initialized Mugs(int) new Mugs(1) completed *///~

三.数组的初始化

package object;import static net.mindview.util.Print.*; import java.util.*;public class ArrayNew{public static void main(String args[]){int [] a;Random rand = new Random(47);a = new int[rand.nextInt(20)];print("length of a = " + a.length);print(Arrays.toString(a)); //Arrays.toString 产生一维数组的打印版本 } }/* output: length of a = 18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]//数组元素会自动初始化为空值(对于数字和字符就是0,对于boolean是false) *///~

 引用数组的初始化

package object;import static net.mindview.util.Print.*; import java.util.*;public class ArrayNew{public static void main(String args[]){Random rand = new Random(47);Integer [] a = new Integer[rand.nextInt(20)];print("length of a = " + a.length);//for(int i = 0;i<a.length;i++)//a[i] = rand.nextInt(500); print(Arrays.toString(a));} } /*如果创建一个非基本类型的数组,那么就创建了一个引用数组,直到把对象赋值给引用初始化才算完成 /**length of a = 18 [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] *///~

 用花括号初始化对象数组

package object;import static net.mindview.util.Print.*; import java.util.*;public class ArrayNew{public static void main(String args[]){Integer[] a={new Integer(1),new Integer(2),3,//Autoboxing };Integer[] b= new Integer[]{new Integer(1),new Integer(2),3,//Autoboxing 最后一个逗号是可选的 };System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(b));} }/*output: [1, 2, 3] [1, 2, 3] *///~ package object;import static net.mindview.util.Print.*; import java.util.*;public class ArrayNew{public static void main(String[] args){Other.main(new String[]{ "fiddle", "de", "dum"});//传递给other ,用来替换命令行参数 } }class Other{public static void main(String[] args){for(String s : args)System.out.print(s + " ");} } /* output: fiddle de dum *///~

可变参数列表 旧版


package
object; //: object/VarArgs.java /**这是Java SE5 之前的代码 class A {}public class VarArgs {static void printArray(Object[] args) //所有类都间接或直接继承自Object类{for(Object obj : args)System.out.print(obj + " ");System.out.println();}public static void main(String args[]){printArray(new Object[]{new Integer(47), new Float(3.14), new Double(11.11)});printArray(new Object[]{"one", "two", "three"});printArray(new Object[]{new A(),new A(), new A()});//未赋值默认打印类名和地址 } }/* output: 47 3.14 11.11 one two three object.A@41975e01 object.A@c2e1f26 object.A@dcf3e99 *///~

 

可变参数列表 新版

package object; /** this is new code **/ class A {}public class NewVarArgs {static void printArray(Object... args) //这里的Object 可以换成String Integer Character int char 等其它类型{for(Object obj : args)System.out.print(obj + " ");System.out.println();}public static void main(String args[]){//can take individual elements:printArray(new Object[]{new Integer(47), new Float(3.14), new Double(11.11)});printArray(new Object[]{"one", "two", "three"});printArray(new Object[]{new A(),new A(), new A()});//未赋值默认打印类名和地址// or an arrayprintArray((Object[])new Integer[]{1,2,3,4}); //因为Integer[] 已经是数组,所以不会执行任何转换printArray();//Empty list is ok } }/* output: 447 3.14 11.11 one two three object.A@41975e01 object.A@c2e1f26 object.A@dcf3e99 1 2 3 4 *///~

以下是初始化的三种情况:

package object; //: reusing/Bath.java // commposition for code reuseclass Soap {private String s;Soap() {System.out.println("Soap()");s = "Constructed";}public String toString(){return s;} } public class Bath{private String //initializing at point of definition s1 = "Happy", //在定义对象的地方初始化s2 = "Happy", s3,s4;private Soap castille;private int i;private float toy;public Bath() //在类的构造器中初始化 {System.out.println("Inside Bath()");s3 = "joy";toy = 3.14f;castille = new Soap();}//Instance initialization{i=47;} //实例初始化public String toString(){if(s4 == null) //在使用之前s4 = "joy";return "s1 = " + s1 + "\n"+"s2 = " + s2 + "\n"+"s3 = " + s3 + "\n"+"s4 = " + s4 + "\n"+"i = " + i + "\n"+"toy = " + toy + " " +"castille = " + castille; //在这里编译器知道你要将一个String对象("source =")//同WaterSource相加 }public static void main(String[] args){Bath bath = new Bath();System.out.println(bath);//当只有一个对象时会自动调用toString() } }/* output: Inside Bath() Soap() s1 = Happy s2 = Happy s3 = joy s4 = joy i = 47 toy = 3.14 castille = Constructed *///~

 

转载于:https://www.cnblogs.com/jiangfeilong/p/10084526.html

总结

以上是生活随笔为你收集整理的Java 初始化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。