目录
一、break和continue
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
continue语句用在循环语句体中,用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
- continue用在while,do-while中,continue语句立刻跳到循环首部,越过了当前循环的其余部分。
- continue用在for循环中,跳到for循环的迭代因子部分。
二、方法
方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。
方法用于定义该类或该类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
(一)方法声明格式:
[修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表){
JAVA语句;... ... ...
}
(二)方法的调用方式: 对象名.方法名(实参列表)
测试:
public static void a(int num){//int num为形式参数
System.out.println("a");
System.out.println("b");
System.out.println("c"+"字母"+num);
}
public static void main(String[] args){
for (int i=1;i<100;i++){
a(3);//此处的数字为实际参数
System.out.println(i);
}
}
(三)方法的详细说明:
- 形参:在方法声明时用于接收外界传入的数据(用于定义时)。
- 实参:调用方法是实际传给方法的数据。
- 返回值:方法在执行完毕后返还给调用它的环境的数据。
- 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为void。
测试1:
public static int add(int b,int c,int d){//int有返回值的方法
int sum= b+c+d;
return sum;//return返回值到sum里
}
public static void main(String[] args){
int s =1+add(100,200,300);
System.out.println(s);
}
测试2:
//迟到惩罚计算器
public static int late(int time,int salary){
int chengfa=0;
if(time<11){
System.out.println("警告你别再迟到了哟");
}else if (time<21){
chengfa = 100;
}else if (time<31){
chengfa = 200;
}else if (time<61){
chengfa = (int)((salary/30)/2);
//假设每月无休且有30天
}else {
chengfa = (int)((salary/30)*3);
}
System.out.println("迟到时间为"+time+",惩罚内容为"+chengfa);
return chengfa;
}
public static void main(String[] args) {
late(45,500000);//输入迟到时间45,月薪500000
}
测试3:
//加班费计算器
public static int work(int time,int salary){
int Overtime=0;
if(time<=5){
Overtime = (int) (salary*0.005*time);//一周加班不大于5h,加班利率为0.005
}else if (time<=11){
Overtime = (int) (salary*(5*0.0015+(time-5)*0.0025));
}else if (time<=25){
Overtime = (int) (salary*(5*0.0015+6*0.0025+(time-11)*0.003));
}else if (time<=40){
Overtime = (int) (salary*(5*0.0015+6*0.0025+14*0.003+(time-25)*0.0035));
}else {
Overtime = (int) (salary*(5*0.0015+6*0.0025+14*0.003+13*0.0035+(time-40)*0.004));
}
System.out.println("加班时间为"+time+",你的加班费:"+Overtime);
return Overtime;
}
public static void main(String[] args) {
work(10,10000);
}
方法的重载是值一个类中可以定义多个方法名相同,但参数不同的方法。调用时,会根据不同的参数自动匹配对应的方法。
注:重载的方法,实际是完全不同的方法,只是名称相同而已!
构成方法重载的条件::
- 不同的含义:形参类型、形参个数、形参顺序不同。
- 只有返回值不同不构成方法的重载。如:int a(String str){}与void a(String str){}不构成方法重载。
- 只有形参的名称不同,不构成方法的重载。
三、递归结构
递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是”自己调用自己“,一个使用递归技术的方法将会直接或者间接的调用自己。
两个部分:
- 定义递归头。即,什么时候不调用自身方法,如果没有头,将陷入死循环,也就是递归的结束条件。
- 递归体。即,什么时候需要调用自身方法。
测试1:
public static int num = 5;
public static void a(){
System.out.println("HEllo world");
b();
}
public static void b(){
num--;
System.out.println("I'm DEAN");
System.out.println(num);//打印num变化
if (num>0){
b();
}
}
public static void main(String[] args) {
a();
}
测试2:
//阶乘递归
public static long factorial(int n){
if(n==1){//递归头
return 1;
}else {//递归体
return n*factorial(n-1);
}
}
public static void main(String[] args) {
System.out.println("阶乘的结果为"+factorial(10));
}