Java基础学习(三):方法的定义和使用、可变参数
一、方法
- 其他语言称之为“函数”,Java称之为“方法”。
- 它是一组通用性的操作。
- 比如求正弦值,获得某天日期 - 返回值可有可无。
- Java提供了超过1200个自带的函数方法
- 可以调用第三方方法(代码复用)
二、方法定义何使用
1、方法的格式:[权限,修饰] [返回类型] 方法名 ([参数类型] 参数名 ...){ // 具体语句 }
- 权限,修饰:访问权限,告诉编译器如何调用该方法。
- 返回类型:方法执行完成后,返回的类型。可为空void。
- 方法名:命名规则同变量名。
- 方法参数:也称入参,是指调用一个方法时可以传递的参数,参与方法体运算的变量,每个参数需要定义参数类型,参数可以是多个,可以是空。
2、例如:public static void main(String[] args ){}
3、方法及调用示例:
public class great {
public static void way1(String name , int age , String dream) {//这是一个方法.
System.out.println("我的名字是" + name + ", 我的年龄是" + age + ", 我的梦想是" + dream);
}
public static void main(String[] args) {//这是一个主方法
way1("lee" , 21 , "become a successful man");
}
}
//------------输出----------------
我的名字是lee, 我的年龄是21, 我的梦想是become a successful man
三、Java方法的特点
- 不能独立存在,必须定义在类中。
- 必须有main方法开始执行。
- 不支持默认参数。
四、方法参数
为了理解方法参数的传递,需要介绍Java的两种底层存储形式。
Java中的变量分为基本类型和引用类型,基本变量保存 数值本身 ,引用变量保存 引用内存空间的地址 。
1、按值传递
- 按值传递会将实参的值赋值给对应的形参,在函数内部操作是针对形参进行的,操作不影响 实参。
- 示例代码:
public class great {
public static void way1(int num) {//这是一个方法.
System.out.println("此时在函数内部的形参:" + num);
num += 100 ;
System.out.println("此时在函数内部的形参:" + num);
}
public static void main(String[] args) {//这是一个主方法
int num = 10 ;
System.out.println("此时实参为:" + num);
way1(num);
System.out.println("此时实参为:" + num);
}
}
//---------------输出---------------
此时实参为:10
此时在函数内部的形参:10
此时在函数内部的形参:110
此时实参为:10
2、按引用传递
- 按引用传递就是将实参的内存地址传递给形参,,在方法中的操作都会影响到实参本身。
- 示例代码:
package firstpack;
public class experiment {//先建立一个类
public static int num ;
}
package firstpack;//这是一个包
public class great {
public static void way1(experiment num) {//这是一个方法.
System.out.println("此时在函数内部的形参:" + experiment.num);
experiment.num += 100 ;
System.out.println("此时在函数内部的形参:" + experiment.num);
}
public static void main(String[] args) {//这是一个主方法
experiment num = new experiment();//引用类
experiment.num = 5;
System.out.println("此时实参为:" + experiment.num);
way1(num);
System.out.println("此时实参为:" + experiment.num);
}
}
//--------------输出-------------
此时实参为:5
此时在函数内部的形参:5
此时在函数内部的形参:105
此时实参为:105
3、基本类型的包装类,是immutable类型,没有提供自身修改的函数,可理解为按值传递。
五、方法的返回值
- 方法计算结果,返回的数据类型同传入实参相同。
- 可以是任意类型,也可以为空void。
- return执行到,就会强制返回,不会继续执行后面的语句。
- 方法传入类型必须与返回类型相同。
- 示例代码:
public class great {
public static double way1(double num) {//这是一个方法.
return num*num ;
}
public static void main(String[] args) {//这是一个主方法
System.out.println("输出结果为:" + way1(4));
}
}
六、命令行参数
- 本质是参数传递——由调用者(系统)传递给方法(main)的参数。
- 参数规定为字符串数组。
- 类似Linux命令
七、可变参数
- 参数列表不限定个数,一个方法只允许有一个参数。
[修饰符] [返回类型] 方法名 ([参数类型]...参数名){//语句}
- 可变参数被处理为数组,可被遍历。
- 示例代码:
public class great {
public static void way1(int num ,String...str) {//这是一个方法.
for(String str1 : str) {
System.out.println("这是一个可变参数:" + str1);
num ++ ;
}
System.out.println("共执行:" + num + "次");
}
public static void main(String[] args) {//这是一个主方法
way1(0 ,"a","b","c","hahahahaa");
}
}
//---------------输出--------------
这是一个可变参数:a
这是一个可变参数:b
这是一个可变参数:c
这是一个可变参数:hahahahaa
共执行:4次