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); } }
然后运行截图:
啦啦啦~ 希望明天可以看更多的知识点。