例如:
class Hello{ public Hello() { } public Hello(String s){ System.out.println(s) } }
方法中的可变参数
意为在该方法中,参数的数量是可变的(可为 0),不管有多少个参数都可以成功调用该方法,但参数的类型不可变,在定义中是什么类型则增加的参数就必须是什么类型,用**参数类型+…**使用
可变参数实质上是定义了一个数组用来存放参数
例如:
class Hello{ public void func(String... s){ System.out.println(s.length); } }
注:可变参数必须位于参数列表的最后,故一个方法只能有一个可变参数
可变参数对方法重载的影响
在方法的重载中,程序在满足参数列表的同时会优先选择没有可变参数的方法
例如:
class Hello{ public static void main(String[] args){ helloworld("张三"); //选择只有一个参数的方法(1 helloworld("张三","李四"); //选择正好两个参数的方法(2 helloworld("张三","李四","王五"); //选择有可变参数的方法(3 } public static void helloworld(String s){ System.out.println("hello " + s); } public static void helloworld(String s1, String s2){ System.out.println("hello " + s1 + s2); } public static void helloworld(String... s){ System.out.println("hello "); } }
例如:
class Hello{ String name; int num; public void func(){ System.out.println(this.name + this.num); //此时this指向调用该方法的对象 } public Hello(){ } public Hello(String name){ this.name = name; //此时this指向当前正要初始化的对象 } public Hello(String name, int num){ this(name); //在构造器中通过this调用其他重载的构造函数,注意,该语句必须写在第一句 this.num = num; }
static属性:被所有对象共享,先于对象存在
static方法:先于对象存在
static属性:
static方法:
例如:
class Hello{ public static void main(String[] args){ Student student = new Student("张三"); System.out.println(Student.count); //通过 类名.变量名 直接访问静态变量 System.out.println(student.count); //可以用对象访问静态变量,但不推荐 Student.sayHello(); //通过 类名.方法名 直接调用静态方法 Student.sayHello(); //可以用对象调用静态方法,但不推荐 } class Student{ static int count; String name; public Student(String name){ this.name = name; } static void sayHello(){ System.out.println("Hello"); } } }
代码块:
静态代码块: