Java中的方法的传参和构造方法

◇在方法调用之间复制数据的过程,称为按值调用


◇在Java中不能用按引用调用或按指针调用。不管传递给方法的实际参数是什么类型, 相关的形式参数都会得到该数据的一份拷贝,这就是按值调用的工作原理。


局部变量调用栈中分配内存,当方法执行完成后,这些变量就被抛弃。


◇如果我们想传给方法的数据是一个很大的对象,那么请记住:不是对象被传入,而是 对象的引用被传入,即完成的对引用的复制。


一个没有main()方法的类不是一个程序。但是可以有很多个类,只能有一个main() 方法。


----------------------------------------------

1.  public Test(){

private x=9;

public static void main(String[] args){

Test test=new Test();

System.out.println(test.x);

}

}

则显示结果为:

9

注:已手动赋值,则不用构造方法自动初始化,所以不是0,这与数组有所不同。

 

----------------------------------------------

2.如果类中有了有参的构造方法,则必须声明一个无参的构造方法才能new无参的构造 方法,因为有有参构造方法时编译器不会自动生成默认构造方法。

 

----------------------------------------------

3.如果直接引用变量,优先引用局部变量,局部变量不存在时,才引用成员变量。但是 this.属性引用的变量就是成员变量。

 

----------------------------------------------

4.关于传参:

public class Test{

public static void main(String[] args){

int i=10;

Student s=new Student();

s.code=8;

test(i,s);

System.out.println(i+“ ”+s.code);

}

public void test(int i,Student s){ //传参使Student s=s;

i=9;

s.code=6; //与指针类似,引用使code改变

s=new Student();

i=2;

s.code=20;

}

}

则显示的结果为:

10 6

注:i是栈中的具体值,方法结束后消失,s也是具体值。而经过传参Student s=s;使 形参的地址与实参的地址相同,那么虽然形参s最终会在方法结束的时候被释放,但是 s.code该形参地址引用的code实参引用的code相同的code,而code没有发生传 ,所以code改变,不会被释放

............................

public class Test{

public static void main(String[] args){

int i=10;

Student s1=new Student();

Student s2=new Student();

s1.code=8;

s2.code=18;

s3.test(i,s1,s2);

System.out.println(i+“ ”+s1+“ ”+s2+“ ”+s3);

}

public int test(int i,Student s1,Student s2){

i=9;

s1.code=1;

s2.code=2;

s1=s2; //s1所指对象被释放,s1、s2同指一个对象

s1.code=3;

s1=new Student(); //新的对象,在方法结束后,即s1被释放消失

s1.code=5;

s2.code=6;

return s1.code=5;

}

}

则显示结果为:

10 5

----------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值