流程
while循环
1、while是最基本的循环,它的结构为:
while (布尔表达式){
//循环内容
}
-
只要布尔表达式为true,循环就会一直执行下去。
-
我们大多数情况会让循环停止下来,我们需要一个让表达式失效的方式来结束循环。
-
少部分情况需要循环一直执行,比如服务器的请求响应监听等。
-
循环条件为true就会造成无限循环【死循环】,我们正常的业务编程中尽量避免死循环,会影响程序性能或者造成程序卡死奔溃!
-
思考:计算1+2+3+…+100=?
package com.chang.struct; public class whileDemo01 { public static void main(String[] args) { //输出1-100 int i = 0; while (i<100){ i++; System.out.println(i); } //死循环 while (true){ //等待客户端连接 //定时检查 } } }
package com.chang.struct; public class whileDemo02 { public static void main(String[] args) { //计算1+2+...+100=? int i = 0; int sum = 0; while (i<100){ sum = sum+i; i++; } System.out.println(sum); } }
do…while 循环
表达式为:
do{
// 代码语句
}while(布尔表达式);
-
与while相比,do…while 至少会执行一次。
-
while是先判断再执行,do…while是先执行再判断。
package com.chang.struct; public class DoWhileDemo01 { public static void main(String[] args) { int a = 0; int sum = 0; do { sum = sum+a; a++; }while (a<=100); System.out.println(sum); } }
package com.chang.struct; public class DoWhileDemo01 { public static void main(String[] args) { int a = 0; int sum = 0; do { sum = sum+a; a++; }while (a<=100); System.out.println(sum); } }
for循环
package com.chang.struct;
public class ForDemo02 {
public static void main(String[] args) {
//练习1:计算0-100之间的奇数和偶数的和
int oddsum = 0;//奇数的初始值
int evensum= 0;//偶数的初始值
for (int i = 0; i <= 100; i++) {
if (i % 2 == 0) {
evensum += i;
} else {
oddsum += i;
}
}
System.out.println("奇数的和为:"+oddsum);
System.out.println("偶数的和为:"+evensum);
}
}
package com.chang.struct;
public class ForDemo03 {
public static void main(String[] args) {
//练习2:用while循环和for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){//每行
System.out.println();
}
}
System.out.println("=============================================");
int i = 0;
while (i<=1000){
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){//每行
System.out.println();
}
i++;
}
}
}
-
打印九九乘法表
package com.chang.struct; public class ForDemo04 { public static void main(String[] args) { //打印九九乘法表 //1.打印第一列,这个都会 //2.我们把固定的1再用一个循环包起来 //3.去掉重复项,i<=j //4.调整样式 for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(j+"*"+i+"="+(j*i)+"\t"); } System.out.println(); } } }
java方法
1、何为方法
- java方法是语句的集合,他们在一起执行一个功能。
1、方法是解决一类问题的步骤的有序组合。
2、方法包含在类中或对象中。
3、方法在程序中创建,在其他地方被引用。
- 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们在设计方法的时候,最好保持方法的原子性。就是一个方法只完成一个功能,这样有利于我们后期的拓展。
package com.chang.method; public class Demo01 { public static void main(String[] args) { int result = add(10, 20); System.out.println(result); } //加法方法 public static int add(int a,int b){ return a+b; } }
2、方法的定义及调用
java的方法类似于其他语言的函数,是用来完成特定功能的代码片段,一般情况下定义一个方法包含以下语法:
**方法包含一个方法头和一个方法体。**下面是一个方法的所有组成部分:
-
**修饰符:**修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
-
**返回值类型:**方法可能有返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
-
**方法名:**是方法的实际名字。方法名和参数表共同构成方法签名。
-
**参数:**参数像一个占位符。当方法被调用的时候,传递值给参数,这个值称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据
-
**方法体:**方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
-
调用方法:对象名.方法名(实参列表)
-
Java支持两种调用方法的方式,根据方法是否返回值来选择,当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30,40);
-
如果方法返回值是void,方法调用一定是一条语句。
System.out.println("Hello,subeiLY!");
3、方法重载
-
方法重载就是在同一个类中,有相同的函数名称,但形参不同的函数。
-
方法重载的规则:
- 方法名称必须相同。
- 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等),方法的返回值类型可以相同也可以不同。
- 仅仅返回值类型不同,不能成为方法的重载。
-
实现理论:
- 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
-
package com.chang.method;
public class Demo02 {
public static void main(String[] args) {
double max = max(10.0, 20.0);
System.out.println(max);
}
public static int max (int a,int b ){
if (a==b){
System.out.println("a与b相等");
return 0;
}else if (a>b){
return a;
}else{
return b;
}
}
public static double max (double a,double b ){
if (a==b){
System.out.println("a与b相等");
return 0;
}else if (a>b){
return a;
}else{
return b;
}
}
}
package com.chang.method;
public class Demo01 {
public static void main(String[] args) {
int result = add(10, 20,30);
System.out.println(result);
}
//加法方法
public static int add(int a,int b){
return a+b;
}
//加法方法
public static int add(int a,int b,int c){
return a+b+c;
}
}
4、命令行传参
5、可变参数
-
JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
-
在方法声明中,在指定参数类型后加一个省略号()。
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
package github.method; /** * @author subeiLY * @create 2021-05-27 10:53 */ public class Demo04 { public static void main(String[] args) { Demo04 demo04 = new Demo04(); demo04.test(1,2,3,4,5); } public void test(int... i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); } } package github.method; /** * @author subeiLY * @create 2021-05-27 10:53 */ public class Demo04 { public static void main(String[] args) { // 调用可变参数的方法 printMax(34,3,3,2,56.5); printMax(new double[]{1,2,3}); } public static void printMax(double... numbers){ if(numbers.length==0){ System.out.println("没有数据!"); return; } double result = numbers[0]; // 排序 for(int i=1;i<numbers.length;i++){ if(numbers[i] > result){ result = numbers[i]; } } System.out.println("The max Value is " + result); } }
6、递归
-
A方法调用B方法,我们很容易理解。
-
递归就是:A方法调用A方法!就是自己调用自己。
-
利用递归可以用简单的程序来解决一些复杂的问题,他通常把一个大型复杂的问题层层转换为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可以描述出解题过程所需要的多次重复的计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无线集合。
-
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
-
写一个计算器,要求实现加减乘除功能,井且能够循环接收新的数据,通过用户交互实现。
package com.chang.method;
import java.util.Scanner;
public class HomeWork04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
while(true){
System.out.println("请输入第一个整数:");
double a = scanner.nextDouble();
System.out.println("请输入第二个整数:");
double b = scanner.nextDouble();
System.out.println("请输入要运算的字符(+:表示加法,-:表示减法,*:表示乘法,/:表示除法)");
String temp = scanner.next();
switch (temp){
case "+":
sum = a + b;
System.out.println("结果是:" + sum);
continue;
case "-":
sum = a - b;
System.out.println("结果是:" + sum);
continue;
case "*":
sum = a * b;
System.out.println("结果是:" + sum);
continue;
case "/":
sum = a / b;
System.out.println("结果是:" + sum);
continue;
default:
System.out.println("请输入正确的运算符号!!");
}
}
}
}