Java学习小笔记——Method
方法(Method)在大一的C++课程里面就学习过,这个部分还好对得起谭老师,能基本明白什么是方法。但是在Java 中,感觉方法和C++还是不能相同去理解的,毕竟一个是面向过程的语言,一个是面向对象的语言。接下来就是我在学习《Java语言程序设计——基础篇》中对于一些我个人不够理解的要点的记录。
方法,通俗理解,就是用来创建可重用的代码。
定义方法的语法:
修饰符 返回值类型 方法名(参数列表){
方法体;
}
main方法与其他方法唯一区别在于它是有Java虚拟机调用的,main方法的方法头永远是一样的,包括修饰符public和static,返回值类型void,方法名main。
对void方法的调用必须是一条语句。void方法不需要return语句,但return能用于终止方法并返回到方法的调用者,这种用法很少,但是对于改变void方法中的正常控制流程是很有用的。详细可见书P127-128页内容。
重载方法(method overloading),就是在一个类中有两个方法,它们具有相同的名字,但有不同的参数列表。Java编译器根据方法签名决定使用哪个方法。但是被重载的方法必须具于不同的的参数列表,不能基于不同修饰符或者返回值类型来重载方法。要避免歧义调用(ambiguous invocation)。
最后就是自顶向下和自底向上方法。emmm,练习的代码,输入年、月,打印出日历。
package com.ddup;
import java.util.Scanner;
public class method1 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("输入年:");
int year = input.nextInt();
System.out.print("输入月:");
int month = input.nextInt();
printMonth(year, month);
}
public static void printMonth(int year, int month){
printMonthTitle(year, month);
printMonthBody(year, month);
}
public static void printMonthTitle(int year, int month){
System.out.println(" "+ getMonthName(month));
System.out.println("-----------------------------");
System.out.println(" sun mon tue wed thu fri sat");
}
public static String getMonthName(int month){
String monthName = "";
switch (month){
case 1: monthName = "January"; break;
case 2: monthName = "February"; break;
case 3: monthName = "March"; break;
case 4: monthName = "April"; break;
case 5: monthName = "May"; break;
case 6: monthName = "June"; break;
case 7: monthName = "July"; break;
case 8: monthName = "August"; break;
case 9: monthName = "September"; break;
case 10: monthName = "October"; break;
case 11: monthName = "November"; break;
case 12: monthName = "December"; break;
}
return monthName;
}
public static void printMonthBody(int year, int month){
int startDay = getStartDay(year, month);
int numberOfDayInMonth = getNumberOfDaysInMonth(year, month);
int i = 0;
for (i = 0; i<startDay; i++){
System.out.print(" ");
}
for (i = 1; i < numberOfDayInMonth; i++){
System.out.printf("%4d", i);
if ((i+startDay)%7 == 0){
System.out.println();
}
}
System.out.println();
}
public static int getStartDay(int year, int month){
final int firstDay = 3;
int totalNumberOfDays = getNumberOfDays(year, month);
return (totalNumberOfDays+firstDay)%7 ;
}
public static int getNumberOfDays(int year, int month){
int total = 0;
for(int i = 1800 ; i < year; i++ ){
if (isLeapYear(i))
total = total + 366;
else
total = total + 365;
}
total = total + getNumberOfDaysInMonth(year, month);
return total;
}
public static int getNumberOfDaysInMonth(int year, int month){
if (month == 1|| month == 3|| month == 5|| month == 7|| month == 8|| month == 10|| month == 12 ){
return 31;
}else if (month == 2){
return isLeapYear(year)? 29 :28 ;
}else {
return 30;
}
}
public static boolean isLeapYear (int year){
return year%400 == 0 || (year % 4 ==0 && year%100 != 0);
}
}
然后运行截图:

啦啦啦~ 希望明天可以看更多的知识点。

浙公网安备 33010602011771号