方法
方法一直都是程序设计非常重要的一部分,通过方法可以更好的实现代码的复用。在Java学习中我们最先接触到的就是main方法
public static void main(String args[]){
}
可以看到方法的定义格式是:
[修饰符] 返回值类型 方法名(参数列表){
执行语句;
return 返回值;
}
main方法中的public和static都是修饰符,修饰符是可以选择的,它告诉编译器如何调用该方法,并且定义了方法的访问类型。比如static修饰的方法只能通过类名调用,public修饰表示大家都可以访问;返回值类型就是一个数据类型,方法执行最后要返回该数据类型的值,如果没有返回值就需要设成void;方法名和参数列表构成了方法签名,参数可以是任意类型,也可以没有;return关键字用来返回方法结果,如果方法不需要返回值则用return;或不用return。
在Java中,方法的调用是比较简单的,用static修饰的方法用类名调用,没有static修饰的方法用对象名调用。也可以根据方法有没有返回值去判断是否需要声明一个变量去接收方法返回值。
在方法中有一个地方是比较需要注意的,就是它的参数传递。
public class Demo {
public int test(int a){
a = a + 1;
System.out.println("a = " + a);//2
return a;
}
public String test2(String str){
str = str + 1;
System.out.println("str = " + str);//11
return str;
}
public static void main(String[] args) {
Demo demo = new Demo();
int a = 1;
String str = "1";
demo.test(a);
demo.test2(str);
System.out.println("a = " + a);//1
System.out.println("str = " + str);//1
}
}
在Java只有值传递。对于基本数据类型,方法参数传入的是一个值;对于引用数据类型,它传入的是一个地址值,实际传入的都是值。
方法的重载:方法名相同,参数列表不同。
public class Demo {
public int test(int a) {
return a;
}
public void test(String str) {
return;
}
public static void main(String[] args) {
}
}
上例就是一个方法的重载,原因是它们同名并且参数不同,而不是因为返回值类型不同。方法的重载与返回值类型以及修饰符无关。
方法的重写:子类定义了父类方法。
public class Demo {
public void test() {
System.out.println("父类方法");
}
}
public class Demo1 extends Demo {
@Override
public void test() {
System.out.println("子类重写");
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.test();//子类重写
}
}
在子类重写父类方法的时候要注意一个问题,子类方法的访问权限不能比父类方法高,比如父类方法用public修饰,子类重写方法不能用private等访问权限比public高的权限修饰符。其实这很容易理解,子类是对父类的一个拓展,,是将父类"发扬光大"的,肯定越多人知道越好。
块
在Java中块可以分为3种:普通代码块(方法中),构造代码块,静态代码块
public class Demo {
//构造代码块
{
int a = 1;
System.out.println("a = " + a);
}
//静态代码块
static {
String name = "李易峰";
System.out.println("name = " + name);
}
//普通代码块
public static void main(String[] args) {
}
}