在这里插入代码片
第8章 方法
01 习题
- 3000米长的绳子,每天减一半,问多少天这个绳子会小于5米。
//3000米的绳子,每天减少一半,多少天小于5米
int x = 3000;
int count = 0;
while(x >= 5) {
x = x / 2;
count++;
}
System.out.println(count);
另一种写法:
int day = 1;
int i = 3000;
while(true) {
i /= 2;
System.out.println("第" + day + "天" + i);
day++;
if(i < 5) {
break;
}
}
tip:
还可用右移,右移相当于除2。
- 打印99乘法表。
//打印99乘法表
//外循环控制行数,内循环控制算式的个数
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i * j) + " ");
}
System.out.println();
}
02 方法的定义
方法是一段可以重复执行的代码块。
方法总是预先设计好,并且在被调用的时候执行。
- 方法的调用
public class day063 {
//public 指示此方法是公有的
//static 指示此方法是静态的
//void 指示此方法没有返回值
//printX是方法的名字,必须遵循标识符命名规则
//printX方法不必在main方法之前定义
//printX是提供打印直角三角形的功能
public static void printX() {
//打印一个直角三角形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
//调用printX方法
//调用方法时,jvm会执行此方法的代码
printX();
//当print方法中的代码块执行结束后,才会执行main方法后续的代码
System.out.println("第一个方法调用结束");
}
}
2. 方法的重复调用
public class day063 {
//public 指示此方法是公有的
//static 指示此方法是静态的
//void 指示此方法没有返回值
//printX是方法的名字,必须遵循标识符命名规则
//printX方法不必在main方法之前定义
//printX是提供打印直角三角形的功能
public static void printX() {
//打印一个直角三角形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
//调用printX方法
//调用方法时,jvm会执行此方法的代码
printX();
//当print方法中的代码块执行结束后,才会执行main方法后续的代码
System.out.println("第一个方法调用结束");
//再次调用 printX方法
printX(); //方法可以被重复调用
}
}
_____________________________________________________
运行结果:
*
**
***
****
*****
第一个方法调用结束
*
**
***
****
*****
3. printX();和day063.printX(); 效果一样,
由于printX方法和当前的方法在同一个类,所以可以忽略掉类名。
public class day063 {
//public 指示此方法是公有的
//static 指示此方法是静态的
//void 指示此方法没有返回值
//printX是方法的名字,必须遵循标识符命名规则
//printX方法不必在main方法之前定义
//printX是提供打印直角三角形的功能
public static void printX() {
//打印一个直角三角形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
//调用printX方法
//调用方法时,jvm会执行此方法的代码
printX();
//当print方法中的代码块执行结束后,才会执行main方法后续的代码
System.out.println("第一个方法调用结束");
//再次调用 printX方法
printX(); //方法可以被重复调用
System.out.println("第二个方法调用结束");
//printX方法被声明为静态的,所以可以通过类名调用。
day063.printX(); //由于printX方法和当前的方法在同一个类,所以可以忽略掉类名
}
}
______________________________________________________
运行结果
*
**
***
****
*****
第一个方法调用结束
*
**
***
****
*****
第二个方法调用结束
*
**
***
****
*****
03 方法参数
向方法传递参数
public class day064 {
public static void printX() {
//打印一个直角三角形
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args){
printX();
}
}
- 向方法传递参数
public class day064 {
//int n声明了一个int类型的变量,这个变量叫做形式参数
//当printX方法被调用时,n会接受实际参数的值。
//形式参数在方法中作为变量为使用,它在被调用时赋值
public static void printX(int n) {
//打印一个直角三角形
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args){
int x = 5;
//x是实际参数,它的值将被拷贝给形式参数
printX(x); //打印5行的直角三角形
x = 6;
printX(x);// 打印6行的直角三角形
printX(7); //打印7行的直角三角形
// String c = "a";
// printX(c); //编译错误,实际参数的类型必须要和形式参数匹配
char c = 'a'; //97
printX(c); //正确的,char可以自动转换为int
}
}
—————————————————————————————————————————————————————
运行结果
*
**
***
****
*****
*
**
***
****
*****
******
*
**
***
****
*****
******
*******
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
*****************
******************
*******************
********************
*********************
**********************
***********************
************************
*************************
**************************
***************************
****************************
****