1 函数
函数可以在public 公共部分写出然后在主方法内调用,函数和主方法是同一地位的,并且函数可以有一个或多个或没有参数。
return返回可以有一个值或者多个值。
例子:
函数求和:
public class 函数1 {
public static void sum(int a,int b)
{ int i;
int sum=0;
for(i=a;i<=b;i++)
{
sum+=a;
}
System.out.println(a+"到"+b+"的和是"+sum);
}
//在public下调用函数
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
for(int a=1;a<=10;a++)
{
sum+=a;
}
System.out.println(1+"到"+10+"的和是"+sum);
int sum=0;
for(int a=10;a<=25;a++)
{
sum+=a;
}
System.out.println(10+"到"+25+"的和是"+sum);
//前面两段代码极度相似,可调用函数
sum(1,10);
//sum(1,10)执行完函数后,返回执行下一个函数
sum(10,25);
}
}
1.1
函数一定有大括号
参数表里的参数因逗号做分割。
函数总能知道在哪进来,在哪里回去。
1.2
补充点东西
return可以有多个,但是只能生效一个
public class 函数1 {
//如果从函数要返回的值,public static int 这个表示的是要返回 int类型的值
public static int max(int c,int d)
{
//如果要返回函数,值要有类型 int Boolean等等,
int ret;
if(c<d)
{
ret=c;
}
else
{
ret=d;
}
return ret;//返回结果
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=5;
int b=6;
int c;
c=max(10,12);
c=max(a,b);
c=max(c,23);
c=max(max(c,a),max(5,b));
max(12,23);
}
}
1.3 感觉这个函数是做累加的,只有一个结果,所以不需要return吧
2 函数的调用
**重点:**java在调用函数的时候,永远只能传值给函数。
通过值调用参数,参数是函数用来接收调用它叫做值的东西。
public class 函数1 {
//如果从函数要返回的值,public static int 这个表示的是要返回 int类型的值
public static void swim(int a,int b)
{
int t;
t=a;
a=b;
b=t;
System.out.println("a="+a+"和"+"b="+b);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=5;
int b=6;
swim(a,b); //swim(5,6)
System.out.println("a="+a+" b="+b);
//在swim里面的a和b怎么做都与Main函数里面的a和b没有任何关系,所以输出的还是Main函数里面的a和b。
//通过值调用参数
//参数是函数用来接收调用它叫做值的东西
}
}
2.1 调用函数
2.2传值
每个函数都有自己独立的变量空间,它的参数也位于这个独立的空间中,和其他的函数并无关系。(左半边不看)
2.3
类型不匹配的问题,高精度可以转成低精度,但不可以和逻辑类型Boolean转化。
char<int<double
3 本地变量
本地变量是定义在块里面的
1. 它可以使定义在函数的块里面 public static int swim{ }
2. 也可以定义在语句的块内,例如: for( ) { }
3. 甚至可以随便拉一大堆大括号来定义变量 如: { int kk; System.out.println(kk);}
4. 程序运行在进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了。 例如 for循环。
5. 块外面定义的变量在里面仍然有效。
6. 不能在同一个块内定义同名的变量,也不能定义块外面定义过的变量。
//定义函数跟在for里面定义i一样,在大范围内定义一个变量后,不能在更小的层面定义。
int i;
for(int i=1;i<10;i++)
{
}
//这是错误的。
下面的图片也是例子: