首页 > 代码库 > Java学习笔记二:初始化(三)
Java学习笔记二:初始化(三)
3.数组初始化
1.数组是一个固定长度的集合,在初始化大小后就不能改变其长度。
数组分配在堆中,并在栈中存有指向该数组的一个引用。
class Arr{ public static void main(String[] args) { int[] a = {1, 2, 3, 4}; int[] b = a; for (int i = 0; i < b.length; i++) { b[i]++; } for (int i = 0; i < a.length; i++) { System.out.print(a[i]); } }}
输出结果:2345
对其他引用来说,当其他对于使用另一个对象引用时,他们指向的都是堆中同一个区域。
2.使用Arrays.toString()打印数组
使用这样的方式可以减少对数组遍历,但是只对一维数组起作用
Arrays.toString(a);
3.可变参数列表
顾名思义,就是输入参数个数是可变的。如:
private static void printArray(String... strs)
{ System.out.println(Arrays.toString(strs));}
这里指定了传入进来的参数只能是String类型,但是在实际应用用,用到较多的是Object,
这样会带来一个好处:使用一个方法就能提供给不同输入参数的方法调用,省掉重载的工作。
// 输入printArray(1, "1", 1.11, new InvokeStaticBlock(), ‘a‘);private static void printArray(Object... strs){ for (Object object : strs) { System.out.print(object + " "); }}
输出:
1 1 1.11 Charp_05.InvokeStaticBlock@811c88 a
4.继承初始化
每个类的编译代码都存在于它自己的独立文件中。该文件只有在需要使用程序代码时才会被加载。一般来说,累的代码在初次使用时才加载。
class ParentClass{ protected static String b = "b"; static { System.out.println("ParentClass.Static.Block"); } protected static void output(String s) { System.out.println("ParentClass.output(): " + s); }}class SonClass extends ParentClass{ private String c = "c"; static { System.out.println("SonClass.Static.Block"); } public static void main(String[] args) { System.out.println("SonClass.main()"); SonClass son = new SonClass(); son.output(ParentClass.b); }}
输出结果:
ParentClass.Static.BlockSonClass.Static.BlockSonClass.main()ParentClass.output(): b
初始化顺序为:
(1)先找到 main 方法,获取对应 class 文件,这样Java虚拟机才知道要加载哪些程序;
(2)初始化父类,如果还有父类,继续初始化父类的父类;
(3)首先初始化父类 static 数据,然后在初始化其他成员变量,最有执行构造函数;
(4)子类也是同样的数序,最后在执行 main 函数的内容。
Java学习笔记二:初始化(三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。