Java的方法重载
定义:方法的重载是指一个类中可以定义有相同的名字,但是参数不同的多个方法。调用时,可以根据不同的参数选择不同的方法。
小程序举例:
public class TestOverload{
void max(int a, int b){
System.out.println(a>b?a:b);
}
void max(float a , float b){
System.out.println(a>b?a:b);
}
public static void main(){
Test t= new Test;
t.max(3,4);
t.max(3.0,4.0);
}
}
总结:方法名相同,但参数不同,如果在main方法中,实参能被编译器区分不会构成混淆,那么该方法为重载(overload),反之,否。
除此之外,构造方法也可以构成重载
public class TestOverload{
1.static修饰的变量为:静态变量
2.static修饰的方法为:静态方法
3.static修饰的语句为:静态语句块
特点:
- static定义的语句块在类加载阶段自上而下执行,并只执行一次。
- 关于static语句块
Example:
Class Test01{
Static{
System.out.println("1");
}
Static{
System.out.println("2");
}
Public static void main(String[]args)
{
System.out.println("mainmethod executed! ");
System.out.println("mainmethod executed! ");
}
}
Result:
1
2
Main method executed!
Main method executed!
- 对于实例语句块
Example:
Publicclass Test002{
// static sentence
Static{
System.out.println("static sentence");
}
//instance sentence
{
System.out.println("instance sentence---01");
}
{
System.out.println("instance sentence---02");
}
{
System.out.println("instance sentence---03");
}
Test002{
System.out.println("test002");
}
// main method
Public static void main(String []args){
Test002 t02 = new Test002();
Test002 t02 = new Test002();
Test002 t02 = new Test002();
}
}
Result :
Staticsentence
Instancesentence---01
Instance sentence---02 //实例语句
Instancesentence---03
Test002 //构造方法
Instancesentence---01
Instancesentence---02
Instancesentence---03
test002
Instancesentence---01
Instancesentence---02
Instancesentence---03
test002
说明: 实例语句块在每次调用构造方法之前自上而下执行一次(调几次,执行几次);
- 关于Static静态方法: 类级别
不用创建对象,即可访问;
不用调用非静态数据;
不能用this
public class StaticTest {
Public void m1{}{
}
Public static void m2(){
}
Public static void main(String []args){
StaticTest st = new StaticTest();
st.m1(); //引用.
m2(); // 类名.
st.m2(); //引用.不会报错,因为底层调用仍然是类名.的方式。
}
}
- 关于static静态变量(存在方法区,被所有对象共享)
- 何时初始化?
在类加载阶段赋值,且仅赋值一次;不同于成员变量,在java创建对象时初始化;
public classStaticTest02 {
Public static void main(String []args){
Animal a1 = new Animal("A",1);
Animal a2 = new Animal("B",1);
}
}
Class Animal{
String name;
Int age;
Static String type= “陆生”;
Animal(Stringname,int age){
this.name= name;
this.age= age;
}
}
内存分配: