一,方法定义:
方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。
方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象即是Java中,整个程序的基本单位是类,方法是从属于类和对象的。
为什么使用方法:
重复代码不想写多变,增加重用性,减少冗余性。
二,使用方法步骤:
a:定义方法:
注:在类里 其它方法外面定义方法。
[权限修饰符] [方法修饰符] [返回值类型] 方法名([参数列表]){
方法体//一段功能代码的组合
[return 返回值 ;]
}
权限修饰符:
public 公有的 protected 受保护的
Default 默认的 private 私有的
方法修饰符:
6种 static 静态的(static用不用都占空间,需要一直存在的数据使用它,用static修饰,在运行main方法第一行代码时就已运行了static方法) final 最终的 abstract抽象的 synchronized 同步的 native本地的
返回值类型:
有返回值:所有变量类型都可以为返回值类型 无返回值:只有构造方法无返回值 返回值类型为空: void 需求是只需要执行方法内语句,而不用方法内语句结过与外界交互。
方法名:
第一个单词小写,其余首字母大写
参数列表:
方法中可变,不可控的数据 功能代码中不确定的因素以参数传入。 传入的为形参。//形参:在方法声明时用于接收外界传入的数据。
方法体 :
一段功能代码的组合
[return] :
有返回值:return + 返回值类型的表达式 无返回值:不写return· 返回值类型为空: 不写return
b:调用方法:
对象名.方法名(实参列表) // 实参:调用方法时实际传给方法的数据。不用写数据类型。 形参写数据类型
以万年历为例使用方法例子:
public static void main(String[] args) {
System.out.println("请输入年份");
Scanner input= new Scanner(System.in);
int year=input.nextInt();
System.out.println("请输入月份");
int month=input.nextInt();
int monthSum=0;
for (int i =1;i<month;i++){
// if (i==1||i==3||i==5||i==7||i==8||i==10||i==12){
// monthSum+=31;
// }else if (i==4||i==6||i==9||i==11){
// monthSum+=30;
// }else {
//
// monthSum=getPingRun(year)?29:28;
//
// }
monthSum+=getDaysByMonth(i,year);//调用getDaysByMonth方法
}
int yearSum=0;
for (int i =1900;i<year;i++){
// if ((year%4==0&&year%100!=0)||year%400==0){
// yearSum+=366;
// }else {
// yearSum+=365;
// }
yearSum+=getPingRun(i)?366:365;//调用getPingRun方法
}
// int days=0;
// if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
// days+=31;
// }else if (month==4||month==6||month==9||month==11){
// days+=30;
// }else {
if ((year%4==0&&year%100!=0)||year%400==0){
days+=29;
}else {
days+=28;
}
// days+=getPingRun(year)?29:28;
// }
int days=getDaysByMonth(month,year);//调用getDaysByMonth方法
System.out.println(year+"年"+month+"月"+"有"+days+"天");
int week=(yearSum+monthSum+1)%7;
if(week==0){
week=7;
}
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int i =1;i<=week-1;i++){
System.out.print("\t");
}
for (int i =1;i<=days;i++){
System.out.print(i+"\t");
if((yearSum+monthSum+i)%7==0){
System.out.println();
}
}
}
/**
* 定义一个方法,判断平润年:
*/
public static boolean getPingRun(int year){
boolean boo=false;
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
boo=true;
} else {
boo=false;
}
return boo;
}
/**
* 该方法用来获得输入月份的天数
*/
public static int getDaysByMonth(int month,int year){
int days=0;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}else if (month==4||month==6||month==9||month==11){
days=30;
}else {
days= getPingRun(year) ? 29 : 28;
}
return days;
}
三,方法重载:
1.方法重载细节:
定义:
Java程序中,同一个类下,方法名相同,参数列表不同(参数类型,位置(形参顺序),个数不同都为不同),与返回值和修饰符无关的两个或多个方法称为方法间的互为重载。注意本质:重载的方法,实际是完全不同的方法,只是名称相同而已!
注:
1.重载只能发生在同一类下 2.重载与否看形参状态,与返回值和修饰符无关 3.只有大于2个方法才叫重载。
重载好处:
1.相同功能方法数据类型不同时,不需要其多个方法名, 2.在调用时不用根据数据类型手动选择不同方法名。
2方法重载例子:
public static void login(int number){
if(number==666){
System.out.println("666登陆成功");
} else {
System.out.println("666登陆失败");
}
}
public static void login(double dou){
if(dou==23.57){
System.out.println("23.57登陆成功");
} else {
System.out.println("23.57登陆失败");
}
}
public static void login(String name){
//if(name=="张三")
if (name.equals("张三")){
System.out.println("张三登陆成功");
}else{
System.out.println("张三登陆失败");
}
}
That is all for today ! Thanks!