目录
一、顺序结构
按代码编写顺序一行一行执行
二、分支结构
2.1if语句
严格使用布偶表达式,不能出现if(1)这种
if(布偶表达式){
}else if(布偶表达式){
}else{
}
悬垂问题,
if()
if()
System.out.println("aaa");
else
System.out.println("bbb");
if,else 不加大括号只能有一条语句,此时else与最近的一个if对应
在书写时尽量加上大括号。
2.2switch语句
switch (表达式){
case 值1:
...
break;
case 值2:
...
break;
default:
...
break;
}
*多个case 后值不能重复
*switch括号内表达式只能是
(1)基本数据类型:byte ,short ,int ,char
(2)引用类型:String ,枚举类型
*没有break,不会停止,继续逐条语句执行。
2.3while循环
while(布偶表达式){
循环语句
}
eg计算 1!+2!+3!...+n!
int n=3;
int sum=0;
int num=1;
//外层求和
while(num<=n){
int i=1;
int tmp=1;
//计算阶乘
while(i<=num){
tmp*=i;
i++;
}
sum+=tmp;
num++;
}
System.out.println(sum);
2.4break and continue
两者都用于循环
break :让一层循环提前结束
eg
continue :不实现continue下面代码,继续循环
2.5for循环
for(表达式1 ;表达式2 ;表达式3){
}
表达式1:循环前执行一次
表达式2:布偶表达式,循环是否继续判断条件
表达式3:循环变量更新方式
eg 1!+2!+...n!
int n=4;
int sum=0;//计算阶乘和
int tmp=1;//计算阶乘
for (int i = 1; i <= n; i++) {
tmp*=i;
sum+=tmp;
}
System.out.println(sum);
2.6do{}while
do{
}while(布偶表达式);
先执行内部语句,再判断是否继续循环
2.6输出函数print、printf、println
System.out.print(1);//不带换行
System.out.printf(format,msg);//格式化输出 与c语言基本一致
System.out.println(mas);//输出一个字符串带换行
2.7键盘输入Scanner
使用Scanner
(1)导入 import java.util.Scanner; // 需要导入 util 包
写Scanner 自动导入,或者选中Scanner alt+enter
(2)创建 Scanner对象
Scanner scanner=new Scanner(System.in);
(3)通过对象调用函数
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();//输入字符串
int age=scanner.nextInt();//数人int整数
*使用nextLine 必须在nextInt类方法之前,nextLine特定的机制
后面要读字符串可以使用next方法,但是建议先读取字符串在读数字。
eg输入n个数字求和
Scanner scanner=new Scanner(System.in);
int sum=0;
while(scanner.hasNextInt()){
int n=scanner.nextInt();
sum+=n;
}
System.out.println(sum);
*idea ctrl+D结束循环
三、方法
减少重复性代码,便于管理代码
3.1方法定义
修饰符 返回值 方法名(参数值){
方法体
[return ...;]
}
eg.判断闰年
public static boolean isLeapYear(int year){
if((year%4==0&&year%100!=0)||year%400==0){
return true;
}
return false;
}
*static 修饰 静态方法不用实例化对象就能调用
*没有方法声明一说
*一次书写多次调用
形参和实参
方法接收参数为形参,传的值为实参
*形参是实参的临时拷贝,改变形参值不改变实参。
*如果实参是引用对象,可以通过形参对象修改实参对象中的内容。 与地址->内容
void
无返回值时必须写
3.2方法重载
函数名相同,参数类型不同,或者参数个数不同,或者不同类型的顺序不同,与返回值无关
eg
public void fun(int x,int y){
}
public void fun(int x,double y){
}
public void fun(double y,int x){
}
public void fun(int x,int y,int z){
}
四个都构成重载,传入不同参数,使用对应函数
*统一函数名,便于同一同一行为操作不同数据。
3.3方法标签
同一作用域,不能有相同的标识符。
*但是类存在方法重载
3.4方法递归
递归:方法中为满足条件调用方法自己
写
1.拆分为单层
2.递归出口
eg.n的阶乘
public static int factor(int n){
if(n==1){
return 1;//出口
}
return n*factor(n-1);
}
*每次调用会开辟函数栈帧,浪费空间,简单代码尽量不使用函数递归。