1.什么是重载
发生在一个类中,方法名相同,参数个数,类型不同,跟返回值无关
2.什么是构造方法
- 方法名和类相同,没有返回类型
- 为对象分配空间
- 初始化成员变量,打印getx办法就是因为初始化,引动的办法
- 返回该类对象的引用,才可以用new 新变量去接收他
例如
package OO0912;
//构造方法初始化
public class MM {
public int x = getx();
public MM(){
System.out.println("构造方法");
}
public int getx(){
System.out.println("getx办法");
return 1;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
MM m = new MM();//在进行构造方法的时候,就会初始化x的值,x的值为一个方法,进而调用getx(),输出一个字符,并返回1给x,然后再使用构造方法里的打印犯法
}
}
3.构造方法重载
3、说说下面的方法哪些重载了构造方法?
public class Test{
public Test(int x){}
}
a、public Test(int y){}是的
b、public Test(String y){}是的
c、public void Test(String x){}不是,构造方法没有返回类型
d、public int Test(int y,String x){}不是的
e、public Test(int y,String x){}是的
f、public Test(String x,int y){}是的
4.代码测试
5、说出下列代码执行结果
a、public class Test{
public static void main(String[] args){
int j;
System.out.println(j); //int型,没有经过构造方法,没有new对象,则不会完成初始化。
}
}
b、public class Test{
static int j;
public static void main(String args){
System.out.println(j); 编译通过,但找不到程序入口点,main出错
}
}
c、public class Test{
int j;
public int getNum(){
return this.j;
}
public static void main(String[] args){
System.out.println(getNum());
静态方法不能直接调用成员方法和成员变量,除非new
}
}
d、public class Test{
public String x;
public static void main(String[] args){
Test t = new Test();
String y = "";
System.out.println(t.x.equals(y));
运行错误,构造方法会初始化成员变量,X是引用类型
所以会被初始化为空,当对null调用方法和属性时,会抛出空指针异常;
}}
例如:String x ="abc";
if (x.equals("abc")){}
if ("abc".equals(x)){}这两句代码在运行结果上会存在差异,
“.equals”是对前面的变量进行的方法调用,如果X为空的话,
这是就会抛出空指针,但后面一句不会,对常量abc的方法调用不会出现空指针,最多出现false