选择结构
switch(表达式){
case:常量值1:
语句体1;
break;
case:常量值2:
语句体;
break;
default:
语句体n+!;
break;
}
执行流程:
1、首先计算表达式的值
2、其次,和case值进行比较,一旦有对应的值,就会执行响应的语句,在执行的过程中,遇到break就会结束。
3、最后,如果所有的case都和表达式不匹配,就会执行default语句结束后,然后程序结束。
循环结构
while(){}
此种循环结构,适用于循环次数不确定的情况下进行的循环。
do...while()
此种循环首先会进行一次语句的执行。
for()循环:适用于循环次数确定的循环; 可以进行循环的嵌套
代码如下:
/**
* 打印输出菱形
*/
private static void show04() {
for(int i = 1;i<=4;i++) {
for(int k = 1;k<=4-i;k++) {
System.out.print(" ");
}
for(int j = 1;j<=2*i-1;j++) {
System.out.print("*");
}
System.out.println();
}
for(int i = 3;i>=1;i--) {
for(int k = 1;k<=4-i;k++) {
System.out.print(" ");
}
for(int j = 1;j<=2*i-1;j++) {
System.out.print("*");
}
System.out.println();
}
}
方法的入门:
方法其实就是若干语句的功能集合;
方法的格式:
方法参数;就是进入方法的数据
返回值类型;就是从方法中出来的数据
定义方法的完整的格式:
修饰符 返回值类型 方法名称(参数类型 参数名称,.......){
方法体;
return 返回值;
}
注意事项:就是要注意方法的格式
修饰符:现在的固定的类型 public static
返回值类型:就是最终数据的产生的类型(数据输出的类型是什么)
方法的名称:就是方法的名字;规则和变量一样,就是小驼峰;
参数类型:进入方法的数据的类型是什么;
参数名称:进入方法的数据对应的变量的名称是什么;
return 的作用:1、停止当前方法 ; 2、将后边的返回值还给方法的调用处;
返回值:就是方法最终产生的数据值;
return 后面的“返回值”应该与方法名称前面的返回值类型保持一致;
代码如下:
public class Demo04 {
public static void main(String[] args) {
int sum = showsum(2, 4);
System.out.println(sum);
}
public static int showsum(int a,int b){
return a+b;
}
}
方法定义完成之后,必须要在main()方法种进行调用;
调用的格式:
方法名称();
注意事项:
1、方法定义的顺序是无所谓的
2、方法的定义必须是挨着的,不能在方法的内部再进行方法的定义
3、方法再定义之后,自己是不能进行调用的,如果要进行使用的话,需要再main方法中进行调用。
class Demo01{
public static void main(String[] args){
show04();
}
private static void show04() {
for(int i = 1;i<=4;i++) {
for(int k = 1;k<=4-i;k++) {
System.out.print(" ");
}
for(int j = 1;j<=2*i-1;j++) {
System.out.print("*");
}
System.out.println();
}
for(int i = 3;i>=1;i--) {
for(int k = 1;k<=4-i;k++) {
System.out.print(" ");
}
for(int j = 1;j<=2*i-1;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法的调用的三种方式:
1、单独调用:方法名称(参数列表);
2、赋值调用:数据类型 变量名称=方法名称(参数列表);
3、打印调用:System.out.println(方法名称(参数列表));
注意事项:此前学习的固定的写法,public static void 方法名称(){},这种方法只能进行单独调用,不能使用赋值调用和打印调用。
方法有参:小括号当中有参数,当一个方法中需要一定的数据条件时,才能完成任务时,就是有参数。
方法无参:小括号当中没有参数,也就是当方法中不需要数据条件时,就是无参;
代码如下:打印从1900年到某一年的某一个月的日历
package Weeks02.days02_qianfeng; import java.util.Scanner; public class Demo021990 { public static void main(String[] args) { System.out.println("请输入当前年份"); Scanner scanner=new Scanner(System.in); int year = scanner.nextInt(); System.out.println("请输入请输入当前月份"); int month = scanner.nextInt(); int week=(getdatefromyear(year)+getdatefrommonth(year,month)+1)%7; showCalden(week,year,month); } public static boolean isLeapYear(int year){ return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } public static int getmonthdays(int year,int month){ switch(month){ case 2: return isLeapYear(year) ? 29 : 28; case 4: case 6: case 9: case 11: return 30; default: return 31; } } public static int getdatefromyear(int year){ int dates=0; int totaldays=0,totalyear=0,totalmonth=0; for (int i=1990;i<year;i++){ if (i%4==0&&i%100!=0 || i%400==0){ dates=366; }else { dates=365; } totalyear+=dates; } return totalyear; } public static int getdatefrommonth(int year,int month){ int dates=0,totalmonth=0; for(int i = 1;i <month;i++) { switch(i) { case 2: if((year%4 == 0&&year%100!=0) || year%400==0) { dates =29; }else { dates= 28; } break; case 4: case 6: case 9: case 11: dates =30; break; default: dates =31; break; } totalmonth+=dates; } return totalmonth; } public static void showCalden(int week,int year,int month){ System.out.println("日\t一\t二\t三\t四\t五\t六\t"); int count=0; for (int i=1;i<=week;i++){ System.out.print("\t"); count++; } for (int j=1;j<=getmonthdays(year,month);j++){ System.out.print(j+"\t"); count++; if (count%7==0) { System.out.println(); } } } }
方法的重载:
多个方法的名称一样,但是参数列表不一样。
public class Demo03MethodOverload {
public static void main(String[] args) {
int sum = sum(12, 4, 2);
System.out.println(sum);
}
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+c+d;
}
}
方法重载与下列因素相关:
1、参数个数不同
2、参数类型不同
3、参数的多类型顺序不同
方法重载与下列因素无关:
1、与参数的类型无关
2、与参数的返回值类型无关;
代码如下:
package Weeks01.days07_qianfeng;
public class Demo04 {
public static void main(String[] args) {
byte a=10,b=20;
System.out.println(isSame(a,b));
System.out.println(isSame(10,20));
System.out.println(isSame((short)10,(short)20));
System.out.println(isSame((long)10,(long)20));
}
public static boolean isSame(int a,int b){
if (a==b){
return true;
}else {
return false;
}
}
public static boolean isSame(long a,long b){
boolean same;
if (a==b){
same=true;
}else {
same=false;
}
return same;
}
public static boolean isSame(byte a,byte b){
return a==b;
}
public static boolean isSame(short a, short b){
return a==b? true:false;
}
}