java初始化对象
A. 简述java程序运行时完整的对象初始化过程
理解的几个特殊加载过程:
静态代码块、构造代码块,构造方法。
1、有静态方法先加载,所有的静态方法加载完毕之后进入对象的构建---> 初始化行为1
1、执行构造代码块(有的话:{ })---> 初始化行为2
2、调用无参构造函数初始化对象--->
执行第一行:super();
调用父类无参数构造函数---一直往上调。如果父类有构造代码块先执行。
注意静态代码是最先加载的,无论多少个父类。
自己多试着操作练习,看看运行结果,加深理解!
B. java里对象的初始化有什么作用,什么时候要用到
这个题目我个人感觉有一层让大家了解程序加载流程的目的。
当这个类被加载的时候是先加载构造函数所以
一上来在没有执行main方法之前,
1、执行构造函数count1++;count2++;
使count1等于1;count2等于1;
2、执行赋值(走类初始化,第3、4条赋值语句)
由于count1;则不用赋值,则count1不变等于1;而count2被赋值count2=0
则
count2等于0
3、使用直接调用,即静态的,那么值就变成了
count1等于1
count2等于0
4、使用new
那么将再走一次构造函数且由于它们是静态的,count1++;count2++;
使count1等于2;count2等于1;
此时不会再赋值也就是不走第3、4条赋值语句,直接等于构造后的值count1等于2;count2等于1;
C. JAVA中怎么初始化对象数组
你这个试试对对象数组的一个声明,并没有示例话,所以会报空指针异常
这个数组对象都是现用现初始化的
Animals [] an=new Animals[5];//这只是个对象类型数组的声明
用的时候需要
for(int i=0;i<5;i++)
an[i]=new Animals();
这样你明白了吧
你前面的那个光声明了数组,但是没有调用Animals的构造函数,你数组里的每个元素都是一个对象,使用前必须要先实例化
如果你只是用户输入长度,
Animals [] an=new Animals[n];
声明时是可以用变量的
或者你直接Animals [] an=new Animals[100];定义一个大数组,要用的时候再new Animals();实例化,或者用LinkedList<Animals> an=new LinkedList<Animals>();定义一个动态数组
D. java里对象的初始化有什么作用,什么时候
list=new ArrayList<String>();//这样就将其初始化了。然后你可以调用它的方法如:list.add("dsafs");//正确的调用方法。
如果没有上述的初始化,list.add("dsafs");//运行这句话时将要产生NullPointerException(空指针)异常。
基本类型数据用着全局变量,声明后如果不初始化的话,java虚拟机将自动对其初始化,比如你在类的成员变量中声明:int age;//这里没有初始化,将产生默认值0;其他基本类型数据都有其默认值。但如果是声明局部变量,比如说在某个方法中,就必须先初始化再调用,如: void add(){
int a;
System.out.println(a);//这样编译时不能通过,必须要求你先初始化
}
E. java语言为什么要对对象初始化呢
1、这是一个规定,因为所有的对象,变量初始值都为null
2、如果不初始化,那么程序是无法用null型做逻辑操作的,会报异常或者错误
3、因此要对对象初始化