七、函数
7.1 函数定义与调用
Java的函数必须定义在类的内部,成为类的成员。定义一个函数,要像这样写:
<返回类型> <方法名称>(<参数表>) {
<方法体>
}
返回类型是这个函数运行结束时要返回给调用者的数据的类型,函数可以返回基本数据类型、对象或者void。返回void表示这个函数不返回任何值。函数名称是一个Java名字,一样要遵循和变量一样的命名规则。参数表是0个或1个或多个参数定义,用逗号’,’分隔。
在这个阶段,我们要在所有的函数的返回类型前面加上关键字“static”。static表示这个函数属于这个类,而不属于这个类的任何对象,因此我们才可以不制造这个类的对象,而直接从main()函数中调用它。
当一个函数被调用时,程序就转到这个函数中去运行,函数体里的语句就一条一条地被调用。一旦函数运行结束,就又回到调用它的地方去继续运行。
7.1.1 定义函数
代码复制是程序质量不良的表现。
目前为止,写的所有函数前面都要有public static
//函数定义举例
public static void sum(int a, int b)
{
int i;
int sum=0;
for (i=a;i<=b;i++)
{
sum+=i;
}
System.out.println(a+"到"+b+"的和是"+sum);
}
7.1.2 调用函数
//调用方式
函数名(参数值)
//圆括号起到了表示函数调用的重要作用;
//即使没有参数也要加圆括号
//如果有参数则要给出正确的数量和顺序
函数总能记住自己从哪里出来,该回到哪里去;
//return停止函数的执行,并送回一个值
//有两种retrurn方式
return;//1.不返回任何值
return 表达式;//2.具有返回值的return
//一个函数里可以出现多个return语句,单视保持单一出口是好的做法;
- 使用带返回值的return时要注意,定义函数时 void 类型 函数名(参数表)
- 如果没有类型,则不能用带返回值的return;
7.2 函数参数与函数内变量
7.2.1 参数传递
1.调用函数
- 如果函数有参数,调用函数时必须传递给它数量、类型正确的值;
- 当函数期望的参数类型比调用函数时给的值的类型宽的时候,编译器能悄悄替你把类型转换好。
char-->int--->double
- 当函数期望的参数类型比调用函数时给的值的类型窄的时候,需要你写强制类型转换。
(int)5.0
Java语言在调用函数时,只能传值。
2.传值
- 每个函数有自己的变量空间,参数也位于这个独立空间中,和其它函数没关系。
- 过去常把函数定义时的参数称为形参,调用时的参数称为实参,容易产生误会,更准确的说,它们是参数和值的关系。
7.2.2 本地变量
函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量。
定义在函数内部的变量就为本地变量。
参数也是本地变量。
1.变量的生存期和作用域
- 其生存期和作用域是统一的,即在大括号内。
- 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了。
- 块外面定义的变量在里面仍然有效;
- 不能在一个块内定义同名的变量,也不能定义块外面定义过的变量;
- 参数在进入函数的时候就被初始化了
int main()
{
int scp1;//scp1出现了
{
//scp1仍然存在
int scp2;
//scp2出现了
{//scp1和scp2都是存在的
int scp3;//scp1 scp2 scp3都存在
}
//《--scp3不存在了
//scp1 与 scp2还存在
}
//《--scp2 不存在了
//scp1 还存在
}
void f(int k)
{
int i=10;
if(k>i)
{
int k=12;//不行
int j=i+k;
}
int m=j;//不行,因为已经超出了j的作用域,j不复存在。
}
附录
一、快捷键
ctrl+F11 运行;或者直接F11也可以
ctrl+/ 加标注
二、debug的方式
- 先设置好断点;
- 选择上方任务栏的debug(一个绿色虫子的按钮);
- 再选择右侧栏中的debug按钮;
- 选择上方任务栏中的step over按钮,一行一行的运行程序,边运行边观察“变量栏”中的变量是如何变化的。a
- step into 是进入到所调用函数的内部;
三、常用的语句
Scanner in = new Scanner(System.in);
int x= in.nextInt();
String s=in.nextLine();//由User自定义输入
System.out.println(x+"不在其中");
版权声明:本文为zz651044657原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。