java方法
1. java中方法不能单独存在,所有方法必须定义在类中.
2. 从逻辑上说,一个方法要么属于一个对象,要么属于一个类(使用static修改的方法)
3. 永远不可能独立执行方法,执行方法必须使用类或对象作为调用者.包括隐式的this对象
1. 常用的修饰符:
static 可用于修饰方法,属性等成员.修饰成员表示这个成员是属于这个类所共有的,而不是属于这个类的某一个实例.不使用static的成员则表示,这些成员是属于该类的某一个实例,而不是属于这个类.静态成员不能访问非静态成员.
2. 方法的参数传递机制
java方法的参数传递机制:值传递.所谓值传递,就是将实际参数的副本传入方法内,而参数本身不受任何影响.
基本数据类型和引用类型都是采用值传递的方式进行.但如果传递的是引用类型,虽然传入方法内的是引用类型变量的一个副本,但两个引用类型变量都是指向了同一个堆内存中的对象,通过任何一个引用变量对对象进行操作,都会对这个对象产生影响.
public class Test {
//基本数据类型的值传递
private static void swap(int a ,int b) {
int tmp = a;
a = b;
b = tmp;
System.out.println("swap()方法中:a="+a+",b="+b);
}
// 引用类型的值传递
private static void swap2(Obj o) {
int tmp = o.a;
o.a = o.b;
o.b = tmp;
System.out.println("swap2()方法中:a="+o.a+",b="+o.b);
}
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a,b);
System.out.println("swap()方法外:a="+a+",b="+b);
Obj o = new Obj();
swap2(o);
System.out.println("swap2()方法中:a="+o.a+",b="+o.b);
}
}
3. 形参长度可变的方法
长度可变的形参只能位于形参队列的最后,一个方法中只能出现一个长度可变的形参.这个长度可变的形参可以传入多个参数,也可以传入一个数组
public class Test3 {
public String test(String... Strs) {
String result = "";
for (String tmp : Strs) {
result += tmp;
}
return result;
}
public static void main(String[] args) {
Test3 t = new Test3();
System.out.println(t.test("Hello","!","world"));//可以传入多个String
String[] tmp = {"Hello","!","world"};
System.out.println(t.test(tmp));//也可以传入一个String数组
}
}
4. 方法重载
1. 出现在同一个类中
2. 方法名相同,方法的形参列表不同
3. 方法的其他属性如返回值类型,修饰符等与方法重载无关
5. 方法重写
1. 出现在继承中,子类和父类同名的方法之间
2. 方法名,方法形参列表相同;返回值类型,子类比父类更小或相等;抛出的异常,子类比父类更小或相等;访问权限,子类比父类更大或相等;二者必须同时为实例方法,或同时为类方法
3. 私有的父类方法,是不能被重写的
6. 构造器
1. 每个java类都至少有一个构造器,如果没有显式的提供,系统会提供一个无参数的执行体为空的构造器
2. 构造器可以重载,每个不同的构造器之间可使用this相互调用,且只能在第一行调用