循环嵌套
for循环的嵌套:
for循环语句作为循环体语句;
for(初始化语句;条件表达式;步长语句){
//循环体语句
for(初始化语句;条件表达式;步长语句){
循环体语句;
}
}
举例:
控制台输出:四行五列的*
*****
*****
*****
*****
方式1:
class ForForDemo{
public static void main(String[] args){
//最原始的做法:四个输出语句
System.out.println("*****") ;
System.out.println("*****") ;
System.out.println("*****") ;
System.out.println("*****") ;
}
}
方式2:
对于此类问题,可以应用for循环嵌套解决,两层循环,外层控制行数,内层控制列数.
class ForForDemo{
public static void main(String[] args){
//进行for循环的嵌套
//x = 0,1,2,3
for(int x = 0 ; x < 4 ; x ++){ //外层循环控制行数
for(int y = 0 ; y < 5; y ++) {//y=0,1,2,3,4 内层循环在控制列数
System.out.print("*");
}
System.out.println() ;
}
}
}
跳转控制语句
break
break表示结果,中断的意思,并且单独使用时没有意义,只有在循环语句或者switch语句中才使用
break应用场景:只能switch语句或者循环语句中使用!
情况1:中断结束单层循环
情况2:中断结束多层循环(早期使用)
什么标签语句:给外层或者内层循环起标签名称
标签名称:for(初始语句;条件表达式;步长语句){
标签名称:for(初始语句语句;条件表达式;步长语句){
循环体语句;
}
}
class BreakDemo{
public static void main(String[] args){
//break ; // 在 switch 或 loop 外部中断
//写一个循环for
for(int x = 0 ; ; x ++){
//加入一个判断
if(x == 2){
break ; //结束循环语句了
}
System.out.println(x) ; //0,1
}
System.out.println("---------------------");
//3行4列的*
wc:for(int x = 0 ; x <3 ; x ++){//行数
nc:for(int y = 0 ; y < 4 ; y++){//列数
if(y == 2){
//break 标签名称;
//break wc ;
//结束外层循环 (当前输出第一行的时候,到第二列的时候结束for循环)
break nc ;
}
System.out.print("*");
}
System.out.println() ;
}
}
}
continue
continue表示继续,目的是结束当前循环,立即进入下一循环,它单独使用时没有意义,在循环中使用
class ContinueDemo{
public static void main(String[] args){
for(int x = 0 ; x < 10 ; x ++){
if(x ==3){
//break ;
continue; //结束当前循环,立即进入下一次循环
}
System.out.println(x) ;//0,1,2,4
}
System.out.println("你好啊,JAVA") ;
return
return一般是结束方法使用的,很少单独使用
结合方法使用的时候,具体返回结果
class ReturnDemo{
public static void main(String[] args){
for(int x = 0 ; x < 10 ; x ++){
if(x == 2){
System.out.println("退出") ;
//break ;
//continue;
return ; //结束方法
}
System.out.println(x) ; //0,1,"退出"
}
System.out.println("再见了,java...") ;
}
}
方法
方法:使用{}包起来的内容,给{}独立的代码块起一个名字,以便于复用
格式:
情况1:有具体返回值类型的方法定义
权限修饰符 静态修饰符 返回值类型 方法名(数据类型1 变量名1,数据类型2 变量名2,......){
业务内容;
return 结果;
}
解释以上这个格式:
权限修饰符: public 公共的,公开的,访问权限最大的
静态修饰符: static (面向对象部分重点讲static关键字) 固定写法
返回值类型:数据类型(目前基本数据类型)
方法名:给{}代码块起一个名字,方法名要遵循"见名知意",(符合标识符的规则)
形式参数:
数类类型:数据类型(目前基本数类型)
变量名:要符合标识符的规则(起名字)
return:表示结束方法,调用方法的时候,给具体的返回结果; 如果没有return,报错!
调用方法(目前调用方法是在main方法中调用)
单独调用: 无意义,没有输出结果
输出调用:(没有问题的,但是直接去使用了,不利于后期对该结果操作)
赋值调用:(推荐的)
class FunctionDemo{
public static void main(String[] args){
//实际参数
int a = 10 ;
int b = 20 ;
//调用getSum(实际参数)方法
//单独调用
// getSum(a,b) ; //没有意义
//输出调用(没有问题的,但是直接去使用了,不利于后期对该结果操作)
//System.out.println(getSum(a,b)) ;
//赋值调用(推荐方式)
int result = getSum(a,b);
System.out.println("两个数据之和是:"+result) ;
}
/*
权限修饰符 静态修饰符 返回值类型 方法名(数据类型1 变量名1,数据类型2 变量名2,......){
内容;
return 结果;
}
定义方法的时候:两个明确
1)明确返回值类型 int类型
2)明确参数类型以及参数格式
两个参数int类型
*/
public static int getSum(int x,int y){//形式参数列表
//求x,y的和
int result = x + y ;
return result ;
}
}
情况2:没有具体返回值类型的方法定义
定义格式:
修饰符(public static) 返回值类型 方法名(参数类型1 变量名1,参数类型2 变量名2....){
要么输出结果要么相关其他业务功能 ,没有return关键字
}
Java中针对没有具体返回值类型的方法的定义,要遵循方法的格式,提供一个关键字void 来代替返回值类型
public static void 方法名(参数类型1 变量名1,参数类型2 变量名2....){
业务操作; 一般情况都是直接输出
}
//在控制台输出5行5列的*形
class FunctionDemo3{
public static void main(String[] args){
//for循序的嵌套
for(int x = 0 ; x < 5 ; x ++ ){ //控制行数
for(int y = 0 ; y < 5 ; y++){//控制列数
System.out.print("*") ;
}
System.out.println() ;
}
System.out.println("-------------------------");
//单独调用(只能这样调用!)
printStar(5,6) ;
//输出调用
//System.out.println(printStart(7,8)) ; 存在问题:没有具体返回值类型的方法不能输出调用
//赋值调用
//void v = printStar(7,8) ; 非法的表达式开始void ,没有改数据类型,Java语法校验(检测没有具体返回值类型,使用void代替了)
//System.out.println(v) ;
System.out.println("-------------------------");
printStar(7,8) ;
}
//使用方法调用
public static void printStar(int m,int n){
for(int x = 0 ; x <m ; x ++){
for(int y = 0 ; y <n ; y ++){
System.out.print("*") ;
}
System.out.println() ;
}
}
}