方法
定义:代码块,便于分类和观察; 方法名称 -> 小驼峰式
public static void farmer(){
System.out.println("生产");
}
public static void seller(){
System.out.println("销售");
}
public static void cook(){
System.out.println("加工");
}
1.方法应定义在类中, 但是不能再方法中再定义方法形成嵌套。
2.void对应return;
方法重载(overload)
定义多个方法的名称一样,但是参数列表不一样。
例如:
public static int sum(int a, int b){
return a+b;
}
public static int sum(int a, int b, int c){
return a+b+c;
}
public static int sum(int a, int b, int c, int d){
return a+b+d;
}
相同但是会根据输入的数据不同来自动选择使用的方法。
方法重载的有关因素:
1.参数个数不同;
2.参数类型不同;
3.参数的多类型顺序不同;
方法重载的无关因素:
1.与参数名称无关;
2.与返回值类型无关;
例题:比较两个数据是否相等
public class methodOverload {
public static void main(String[] args) {
byte a = 1, b = 2;
short c = 3, d = 3;
int e = 345, f = 345;
System.out.println(isSame(a,b));
System.out.println(isSame(c,d));
System.out.println(isSame(e,f));
}
public static boolean isSame(byte a, byte b){
System.out.println("Byte method executed!");
if(a == b)
return true;
else
return false;
}
public static boolean isSame(int a, int b){
System.out.println("Int method executed!");
if(a == b)
return true;
else
return false;
}
public static boolean isSame(short a, short b){
System.out.println("Short method executed!");
if(a == b)
return true;
else
return false;
}
}
编译器的常量优化
short res = 5 + 8;
System.out.println(res);
"5""8"默认都是int类型的,本来赋值给short会报错, 但是因为有编译器的常量优化所以在生成class文件的时候就会直接将其计算为13,然后赋值给short,又因为编译器的隐式强制转换,所以13被转换成short赋值给res,但是要注意这种情况仅适用于全为常量的情况。
Switch
1.对象只能是基本数据类型的byte/short/char/int或是引用数据类型的String字符串/enum枚举。
2.case的前后顺序可以颠倒。
3.没有break会穿透到下一个case。