一、 while循环
执行流程与for循环相同,可以以理解为for循环的一种变形‘
格式:
初始化变量;
While(循环条件){循环体;初始化变量的自增}
While:关键字,表示循环
执行步骤:
代码:
package day05.text;
public class text_class {
public static void main(String[] args) {
//纸0.01米,珠穆朗玛峰8848米,纸折叠多少次能达到其高度
int i = 1,j = 0;
while(i<=884800) {
i*=2;//纸张折叠
System.out.println("第"+j+"次折叠纸张的厚度等于"+i);
j++;//次数
}
System.out.println("折叠次数等于"+j);
//计算1-100内能被7整除的整数的个数
/*int i = 1,j = 0;
while(i<101) {
if(i%7==0){//判断i能否被7整除
j++;
}
i++;//注意,不要忘了写初始化变量的自增
}
System.out.println("1-100能被7整除的整数的个数="+j);
*/
}
}
二、 死循环
循环条件永远成立,循环体一直执行跳不出循环的现象叫做死循环。
使用场景:需要做的事情不需要停止,一直执行。
For循环结构:for( ;true;){循环体}
While循环结构:while(true){循环体}【常用】
弊端:一直执行不停止,容易导致内存溢出的异常现象。
代码示例:
//while死循环
/*while(true){
System.out.println("single dog all the day!!");
}
*/
//for死循环
/*for(;;) {//循环条件为true,一直满足条件
System.out.println("single dog all the day!!");
}
*/
三、 跳转语句
在循环过程中,人为干预循环过程使用到的工具,工具叫做跳转语句。
Break:停止整个循环;
Cuntinue:停止当前【本次】循环,继续下一次循环;
//模拟用户登录
/*int right_name = 123;
int right_key = 456;
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入用户名");
int name = sc.nextInt();
System.out.println("请输入密码");
int key = sc.nextInt();
if(name == right_name&&key == right_key) {
System.out.println("您成功上线");
break;
}else {
System.out.println("请重新输入");
}
}
*/
四、 嵌套循环
就是一个循环的循环体是另一个循环体。
//五行五列三角形*
/*for (int i = 0; i < 6; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println("");
}
*/
//四行五列**
/*for(int i=0;i<4;i++) {
for(int j=0;j<5;j++) {
System.out.print("*");
}
System.out.println();
}
*/
//嵌套循环,教练让学员跑三次1500米,操场一圈是500米
/*int m = 0,n = 0;
for(int i=0;i<3;i++) {
for(int j=0;j<3;j++) {
m+=500;
System.out.println("跑完了"+m+"米");
}
n++;
System.out.println("跑完了"+n+"次1500米");
}
*/
Println():打印完内容自动换行
Print():打印完内容不会换行
五、 方法
概念【本质】:一段具有特殊功能的代码段
表现为:使用固定格式把特殊功能的代码段封装起来并起名,下次使用该功能时直接找这个名字,就能使用这段代码。叫做方法。
好处:
1、 简化了代码的重复性,提高了代码的复用性
2、 提高了代码的安全性
3、 提高了开发效率,维护性提升
定义:
格式: 修饰符 返回值类型 方法名称(参数列表){方法体}
解释:
修饰符:目前情形下:public static
返回值类型:代码段执行完毕得到的结果值的数据类型(基本数据类型)
如果代码段执行完毕没有数值,相当于没有数据类型,返回值类型用void来代替数据类型。Void不是数据类型。
方法名:就是特殊代码段起的名字【为了将来使用改代码段好找】
参数列表:就是特殊代码段执行的时候会使用到的一些数据,用来存放这些数据的一个 变量空间
方法体:就是拥有特殊功能的代码段
没有返回值:直接就是方法体【执行完毕只是一种效果,没有值】
有返回值:写完方法体,return语句;【执行完毕有一个数值,需使用return返回给调用者】
定义位置:类中方法外
package com.ujiuye.demo;
public class Test02 {
public static void main(String[] args) {
}
//类中方法外
public static void printStar() {
//打印5行内容
for (int i = 1; i <= 5; i++) {
//打印每一行的内容 每行* 个数小于等于对应的行数 就打印
for (int j = 1; j <= i; j++) {
//打印*
System.out.print("*");
}
//打印完一行需要换行
System.out.println();
}
}
}
方法的调用:
格式:方法名称(实际参数)
表现方式:直接调用:方法名称(实际参数)
输出调用:把方法调用放到输出语句中:
System.out.println(方法名称(实际参数))
调用的方法必须有返回值
赋值调用:把方法调用赋值给一个变量
Int a = (方法名称(实际参数));
调用的方法必须有返回值
方法的注意事项
方法定义:
(1)方法不能嵌套定义,方法都是定义在类中方法外。
(2)方法和方法先后没有区别
(3)方法的定义是平级关系
(4)方法可以嵌套调用【方法里面可以调用方法】,甚至可以自己调用自己
参数列表
形式参数
概述:就是存在于方法的定义中,是一个没有被赋值的变量,具有数据类型修饰的
特点:
1、存在方法的定义参数列表中
2、是变量的声明【没有被赋值的变量】
3、肯定有数据类型的修饰【变量有数据类型】
比如:
getSum(int a,int b){}
//int a 和int b就是形式参数。
实际参数
概述:方法调用的时候传入的值【对方法形式参数的回应(对变量赋值)】
存在方法的调用中,是一个常量值或者是一个对象【具体的东西】
特点:
1、存在于方法的调用中
2、是一个常量
3、没有数据类型修饰
比如:getSum(34,56) 34 和56 就是实际参数
方法在内存中的理解
寄存器
本地方法栈
栈内存
堆内存
方法区
过程: