疯狂java笔记——方法

方法由函数发展而来,有点相似但是不同。系统是由类组成的,方法不能独立存在,必须属于类或对象。

属性:

--方法不能独立定义,方法只能在类体里定义。

--在逻辑意义上看,方法属于类本身,或者该类的一个对象

--不能独立执行方法,必须使用类或者对象作为调度者。

使用static修饰的方法属于类本身,可以使用类作为调度者来使用,也可以使用对象作为调度者使用。使用不同对象调用这个方法会得到相同的结果。

没有static修饰的方法,属于类的对象,不属于类本省,只能使用其他对象调用,并且使用不同对象作为调度者可能得到不同的结果。

方法的参数传递

调用方法必须使用类或其他对象作为调度者,如果声明方法包含了形参声明,调用方法时必须给指定参数值,调用方法时实际传给形参的参数值称为实参。

public class PrimitiveTransferTest

{

public static void swap(int a , int b)

{

// 下面三行代码实现a、b变量的值交换。

// 定义一个临时变量来保存a变量的值

int tmp = a;

// 把b的值赋给a

a = b;

// 把临时变量tmp的值赋给a

b = tmp;

System.out.println("swap方法里,a的值是"

+ a + ";b的值是" + b);

}

public static void main(String[] args)

{

int a = 6;

int b = 9;

swap(a , b);

System.out.println("交换结束后,变量a的值是"

+ a + ";变量b的值是" + b);

}

}

结果:swap方法里,a的值是9;b的值是6

交换结束后,变量a的值是6;变量b的值是9

class DataWrap

{

int a;

int b;

}

public class ReferenceTransferTest

{

public static void swap(DataWrap dw)

{

// 下面三行代码实现dw的a、b两个成员变量的值交换。

// 定义一个临时变量来保存dw对象的a成员变量的值

int tmp = dw.a;

// 把dw对象的b成员变量值赋给a成员变量

dw.a = dw.b;

// 把临时变量tmp的值赋给dw对象的b成员变量

dw.b = tmp;

System.out.println("swap方法里,a成员变量的值是"

+ dw.a + ";b成员变量的值是" + dw.b);

// 把dw直接赋为null,让它不再指向任何有效地址。

dw = null;

}

public static void main(String[] args)

{

DataWrap dw = new DataWrap();

dw.a = 6;

dw.b = 9;

swap(dw);

System.out.println("交换结束后,a成员变量的值是"

+ dw.a + ";b成员变量的值是" + dw.b);

}

}

结果:swap方法里,a成员变量的值是9;b成员变量的值是6

交换结束后,a成员变量的值是9;b成员变量的值是6

为什么2个程序结果不一样呢,在第一个程序中:

a,b是在main中定义的,在swap中交换后,其实在内存中的值并没有交换,交换的a和b

但是在第二个程序中,swap在操作dw时,它只是引用变量,main和swap操作的dw都是DataWrap里面的,所以在swap中变幻后main也变了。

形参个数可变

个数可变的形参只能处于形参列表的最后,也就是说,一个方法最多只能有一个参数可变的形参。

public class Varargs

{

// 定义了形参个数可变的方法

public static void test(int a , String... books)

{

// books被当成数组处理

for (String tmp : books)

{

System.out.println(tmp);

}

// 输出整数变量a的值

System.out.println(a);

}

public static void main(String[] args)

{

// 调用test方法

test(5 , "疯狂Java讲义" , "轻量级Java EE企业应用实战");

}

}

或者直接定义形参为数组

public static voidtest(int a,String[] books);

test(5,String[] {"疯狂Java讲义" , "轻量级Java EE企业应用实战"})

猜你喜欢

转载自blog.csdn.net/qq_36332133/article/details/81182679
今日推荐