第八章方法函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解题:用该数a对i求余(i为小于a的平方根的整数),如果结果 不为0,则将i-1,继续求余数。如果出现一个能被a整除的数, 该数不是素数。
public static boolean Prime(int q) {boolean g=true; if (q == 0 || q == 1 || q<0) g=false; else if (q == 2) g=true; else { for (int i = (int)(Math.sqrt(q)+1); i > 1; i--) { if (q % i == 0) { g = false;break; } } }
4. 参数表指调用方法时,应该传递的参数个数及其数据类型
① 方法申明时的参数称为形式参数 ② 调用方法时的参数称为实际参数
5. 方法声明不能嵌套:不能在方法中再声明其它的方法。( 可以调用)
【例8-1】计算平方的方法
修饰类型符
方法名
参数
static int square(int x)
{
int s;
Βιβλιοθήκη Baidu
说明:
1. 修饰符可以是:public、private、 protected等
2. 类型标识符指方法执行完成后返回值的数据类型
① 若方法没有返回值,用void关键字说明 ② 若方法有返回值,方法体中至少有一条return语句,形式:
Return (表达式) //表达式的值即方法的返回值
3. 方法名 采用用户定义的标识符,不与 Java关键字重名
sum( ); // 调用无参数“方法” } }
Demo
【例8-5】求两个无符号整数的最大公约数: Prog1.java
解题:用a,b同时对i求余(i为小于等于二者中较小数的整数), 如果结果不同时为0,则将i-1,继续求余数。直到出现一个能同 时被a,b整除的数,该数为最大公约数。
public static int GCD(int a, int b) {
?问题:如果形参变了,实参变吗?
答案:基本类型和基本类型变量被当作参数传递给方法时,是值 传递。在方法实体中,无法给原变量重新赋值,也无法改变它 的值。即实参不变。
参数按数值传递的例子
❖【例8-7】 Chap45Swap.java
public class Chap45Swap {
static void swap(int x, int y) { System.out.println("交换前:x="+x+" y="+y);
// 计算平方的方法
}
public static void main(String[] args){
int n = 5; int result = square(n); // 调用“方法” System.out.println(result); }
}
参数传递
实际参数 n
形式参数 x
例【8-3】 以独立语句方式调用方法
int temp = x; x = y; y = temp;
// 交换
System.out.println("交换后:x="+x+" y="+ y);
}
public static void main(String[] args) {
int a = 23, b = 10; System.out.println("调用前:a="+a+" b="+b);
int g = 0; int min = a;
if (a > b)
min = b;
for (int i = min; i > 0; i--) {
if (a % i == 0 && b % i == 0) {
break; }
}
return g; }
g = i;
Demo
【例8-6】判别一个数是否为素数。 Prog2.java
}
无参方法
❖ 有些“方法”没有输入参数,例【8-4】: class SumC {
static void sum( ) {// 无参、无返回值“方法” int i=3,j=6; int s = i + j; System.out.println(s);
} public static void main(String[] args) {
关于“方法”
❖ Java的方法
▪ 在其他语言中,多半被叫做“子程序”、“函数”
❖ Java“方法”的规则
▪ 先声明,后使用 ▪ 只能在类(Class)中声明
❖ Java“方法” 声明的格式:
[修饰符] 类型标识符 方法名 [(参数表)] { 变量声明 语句 }
方法声明
[修饰符] 类型标识符 方法名 [(参数表)] { 变量声明 语句 }
方 s=x*x;
法 体
return s;
}
变量声明
语句
返回语句
方法调用
❖ 定义了方法后,要使用“方法” 方法调用(Call)
▪ 有返回值的“方法”可作为表达式或表达式的一部分来调用 例如: y=square(20)+20; System.out.print(square(20));
▪ 无返回值的“方法”以独立语句的方式调用,其形式: 方法名([实际参数表]);
class AreaC { static void area(int a , int b) { int s; s = a * b; System.out.println(s); // 直接输出,没有返回值 } public static void main(String[] args){ int x = 5,y=3; area(x, y); // 调用方法area }
return g; }
8.3 参数传递
❖ 参数传递规则
▪ 调用带形参的“方法”时,必须提供实参 ▪ 实参 形参,称为参数传递 ▪ 被调用的“方法” 用实参执行方法体
8.3 参数传递
❖ 在Java中,对于基本数据类型,参数按值传递
▪ 参数以值的方式进行传递,即调用时将实参的值传递给“方 法”的形参。基本类型作为参数传递时,是传递值的拷贝, 无论你怎么改变这个拷贝,原值是不会改变的。
❖ 方法调用时的参数称为实际参数(实参)
▪ 实参可以是常量、变量或表达式 ▪ 实参的个数、顺序、类型和形参要一一对应
❖ 调用的执行过程:实参传递给形参执行方法体
【例8-2】
public class SquareC{
static int square(int x){ int s; s=x*x; return s;
public static boolean Prime(int q) {boolean g=true; if (q == 0 || q == 1 || q<0) g=false; else if (q == 2) g=true; else { for (int i = (int)(Math.sqrt(q)+1); i > 1; i--) { if (q % i == 0) { g = false;break; } } }
4. 参数表指调用方法时,应该传递的参数个数及其数据类型
① 方法申明时的参数称为形式参数 ② 调用方法时的参数称为实际参数
5. 方法声明不能嵌套:不能在方法中再声明其它的方法。( 可以调用)
【例8-1】计算平方的方法
修饰类型符
方法名
参数
static int square(int x)
{
int s;
Βιβλιοθήκη Baidu
说明:
1. 修饰符可以是:public、private、 protected等
2. 类型标识符指方法执行完成后返回值的数据类型
① 若方法没有返回值,用void关键字说明 ② 若方法有返回值,方法体中至少有一条return语句,形式:
Return (表达式) //表达式的值即方法的返回值
3. 方法名 采用用户定义的标识符,不与 Java关键字重名
sum( ); // 调用无参数“方法” } }
Demo
【例8-5】求两个无符号整数的最大公约数: Prog1.java
解题:用a,b同时对i求余(i为小于等于二者中较小数的整数), 如果结果不同时为0,则将i-1,继续求余数。直到出现一个能同 时被a,b整除的数,该数为最大公约数。
public static int GCD(int a, int b) {
?问题:如果形参变了,实参变吗?
答案:基本类型和基本类型变量被当作参数传递给方法时,是值 传递。在方法实体中,无法给原变量重新赋值,也无法改变它 的值。即实参不变。
参数按数值传递的例子
❖【例8-7】 Chap45Swap.java
public class Chap45Swap {
static void swap(int x, int y) { System.out.println("交换前:x="+x+" y="+y);
// 计算平方的方法
}
public static void main(String[] args){
int n = 5; int result = square(n); // 调用“方法” System.out.println(result); }
}
参数传递
实际参数 n
形式参数 x
例【8-3】 以独立语句方式调用方法
int temp = x; x = y; y = temp;
// 交换
System.out.println("交换后:x="+x+" y="+ y);
}
public static void main(String[] args) {
int a = 23, b = 10; System.out.println("调用前:a="+a+" b="+b);
int g = 0; int min = a;
if (a > b)
min = b;
for (int i = min; i > 0; i--) {
if (a % i == 0 && b % i == 0) {
break; }
}
return g; }
g = i;
Demo
【例8-6】判别一个数是否为素数。 Prog2.java
}
无参方法
❖ 有些“方法”没有输入参数,例【8-4】: class SumC {
static void sum( ) {// 无参、无返回值“方法” int i=3,j=6; int s = i + j; System.out.println(s);
} public static void main(String[] args) {
关于“方法”
❖ Java的方法
▪ 在其他语言中,多半被叫做“子程序”、“函数”
❖ Java“方法”的规则
▪ 先声明,后使用 ▪ 只能在类(Class)中声明
❖ Java“方法” 声明的格式:
[修饰符] 类型标识符 方法名 [(参数表)] { 变量声明 语句 }
方法声明
[修饰符] 类型标识符 方法名 [(参数表)] { 变量声明 语句 }
方 s=x*x;
法 体
return s;
}
变量声明
语句
返回语句
方法调用
❖ 定义了方法后,要使用“方法” 方法调用(Call)
▪ 有返回值的“方法”可作为表达式或表达式的一部分来调用 例如: y=square(20)+20; System.out.print(square(20));
▪ 无返回值的“方法”以独立语句的方式调用,其形式: 方法名([实际参数表]);
class AreaC { static void area(int a , int b) { int s; s = a * b; System.out.println(s); // 直接输出,没有返回值 } public static void main(String[] args){ int x = 5,y=3; area(x, y); // 调用方法area }
return g; }
8.3 参数传递
❖ 参数传递规则
▪ 调用带形参的“方法”时,必须提供实参 ▪ 实参 形参,称为参数传递 ▪ 被调用的“方法” 用实参执行方法体
8.3 参数传递
❖ 在Java中,对于基本数据类型,参数按值传递
▪ 参数以值的方式进行传递,即调用时将实参的值传递给“方 法”的形参。基本类型作为参数传递时,是传递值的拷贝, 无论你怎么改变这个拷贝,原值是不会改变的。
❖ 方法调用时的参数称为实际参数(实参)
▪ 实参可以是常量、变量或表达式 ▪ 实参的个数、顺序、类型和形参要一一对应
❖ 调用的执行过程:实参传递给形参执行方法体
【例8-2】
public class SquareC{
static int square(int x){ int s; s=x*x; return s;