Java方法
什么是方法
所谓的方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。
主要内容:
方法的重载与调用。
方法的声明:
访问修饰符 返回类型 方法名(参数列表){
方法体
}
Public int add(int I,intj){
return i+j;
}
方法的分类:
根据方法是否带参数,是否返回值,分为四类:
无参无返回值方法
无参带返回值方法
带参无返回值方法
带参带返回值方法
无参无返回值方法
例子:一行打印输出一串*
public class NoNo {
public void out(){
System.out.println("*****");
}
public static void main(String[] args) {
NoNo noNo=new NoNo();
noNo.out();
System.out.println("欢迎来到java");
noNo.out();
}
}
无参带返回值方法
求长方形面积;
public class NoYes {
public double area(){
double a=12.3;
double b=12.4;
return a*b;
}
public static void main(String[] args) {
NoYes noYes=new NoYes();
System.out.println(noYes.area());
}
}
带参无返回值方法
public void out(String value){
System.out.println(value);
}
public static void main(String[] args) {
YesNo yesNo=new YesNo();
yesNo.out("sss");
}
有参数有返回值
public class YesYes {
public String out(String a,String b){
return a+b;
}
public static void main(String[] args) {
YesYes yesYes=new YesYes();
System.out.println(yesYes.out("a", "b"));
}
}
数组作为方法参数
public class PrintArray {
public void printArray(int[] array){
for (int i : array) {
System.out.println(i);
}
}
public static void main(String[] args) {
PrintArray array=new PrintArray();
int[] myArray={1,2,3,4};
array.printArray(myArray);
}
}
方法重载:
方法名相同,参数类型不同
public void out(String value){}
public void out(String value,String value1){}
数据基本类型的传值
public void swap(int a,int b){
int temp;
System.out.println("交换前:a="+a+" b="+b);
temp=a;
a=b;
b=temp;
System.out.println("交换后:a="+a+" b="+b);
}
public static void main(String[] args) {
int m=3,n=4;
PassValue passValue=new PassValue();
System.out.println("交换前:m="+m+" n="+n);
passValue.swap(m, n);
System.out.println("交换后:m="+m+" n="+n);
}
在这里 a与b的值发生了改变,但是m与n的值没有发生改变。原因是m与n只是把值传递给a与b,不是传递内存空间,所以mn与ab并不关联。
数组作为方法传值问题
public class ChangeArray {
//修改数组值得方法
public void change(int[] array){
System.out.println("array变化前");
for (int i : array) {
System.out.print(i+" ");
}
array[0]=3;
System.out.println("array变化后");
for (int i : array) {
System.out.print(i+" ");
}
}
public static void main(String[] args) {
int[] myArray={1,2,3,4};
System.out.println("myArray变化前");
for (int i : myArray) {
System.out.print(i+" ");
}
ChangeArray changeArray=new ChangeArray();
changeArray.change(myArray);
System.out.println("myArray变化后");
for (int i : myArray) {
System.out.print(i+" ");
}
}
在这里myarray与array都发生了变化,原因是数组是对象,在传递的时候传递的是内存的指向,修改的是同一个内存里面的值,所以myarray与array是由关联的。
可变参数列表
public class Variable {
//求和
public void sum(int... n){
int sum=0;
for (int i : n) {
sum=sum+i;
}
System.out.println(sum);
}
public static void main(String[] args) {
Variable variable=new Variable();
variable.sum(1,23,5);
}
}
注意:可变参数列表必须在参数的最后一个(由这句话衍生出一个,可变参数只能有一个,因为如果在参数列表里有两个可变参数的话,那么会与上面的约束相矛盾)
可以将数组的值传递给可变参数
public static void main(String[] args) {
Variable variable=new Variable();
int[] a={1,23,5};
variable.sum(a);
}
且在方法的定义中,可变参数int… n与int[] n是等价的,所以下面的代码会出现警告。
//求和
public void sum(int... n){
int sum=0;
for (int i : n) {
sum=sum+i;
}
System.out.println(sum);
}
public void sum(int[] n){
int sum=0;
for (int i : n) {
sum=sum+i;
}
System.out.println(sum);
}
可变参数列表所在的方法是最后被访问的(优先级最低)
案例:微型数组管理系统。
程序传至百度网盘:链接:https://pan.baidu.com/s/1qZyc7bm 密码:r4pq