方法的重载和构造
方法的签名
方法名+参数列表
方法的重载----------------方便用户的调用
-
发生在同一类中,方法名相同,参数列表不同,方法体不同
-
编译器在编译时会根据方法的签名自动绑定调用的方法
-
重载与返回值类型无关
-
重载与参数名称无关
package oo.day02; public class Aoo { void show(){} void show(int age){} void show(String name){} void show(String name,int age){} void show(int age,String name){} //int show(){return 1;}//编译错误,重载与返回值无关 //void show(Srting adress){}//编译错误,重载与参数名称无关 }
package oo.day02; //重载的演示 public class OverloadDemo { public static void main(String[] args) { Aoo o = new Aoo(); o.show(); o.show(26); o.show("yasuo"); o.show(26, "yauso"); o.show("yauso", 26); } }
构造方法------------------复用给成员变量赋初值的代码
- 给成员变量赋初值
- 与类同名,没有返回值类型(连void都没有)
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器默认提供一个无参构造方法
- 若自己写了构造方法,则不再默认提供
- 可以重载
class Student;
String name;//成员变量(在整个类中使用)
int age;
String adress;
Student(String name1,int age1,String adress1){//构造方法
name = name1;//局部变量(只能在当前方法中使用)
age = age1;
adress = adress1;
}
成员变量和局部变量是可以同名的
- 使用的时候默认采用就近原则
- 此时访问成员变量时this不能省略
- 当成员变量和局部变量同名时,若想访问成员变量时this不能省略
class Student;
String name;//成员变量(在整个类中使用)
int age;
String adress;
Student(String name,int age,String adress){//构造方法
this.name = name;//局部变量(只能在当前方法中使用)
this.age = age;
this.adress = adress;
}
this
- 指代当前对象,哪个对象调用方法它指的就是哪个对象
- 只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法
-
this.成员变量名-------------------访问成员变量
--------------------当成员变量与局部变量同名时,访问成员变量之前的this不能省略
-
this.方法名()------------------------调用方法(一般不用)
-
this()----------------------------------调用构造方法(很少用)
package oo.day02;
//学生类
public class Student {
//成员变量
String name;
int age;
String address;
//构造方法
Student(String name,int age,String address){
this.name = name;
this.age = age;
this.address = address;
}
//方法
void study(){
System.out.println(this.name+"在学习");
}
void sayHi(){
System.out.println("大家好我是"+this.name+"今年"+this.age+"岁了,家住"+this.address);
}
}
package oo.day02;
//构造
public class consDemo {
public static void main(String[] args) {
Student zs = new Student("zhangsan",26,"BJ");
Student ls = new Student("lisi",27,"SH");
zs.sayHi();
ls.sayHi();
}
}
随机数
x = (int)(Math.random()*353)//0到352
Randow rand = new Randow();
x = rand.nexInt(353);//0到352
null和NullPointerException
内存管理:由JVM管理的
- 堆:new出来的对象(包括成员变量)
- 栈:局部变量
- 方法区
null
表示空,没有指向对象
- 若引用的值为null,则该引用不能再进行任何操作
- 若操作则发生NullPointException空指针异常