20241213-局部变量和全局变量的思考

for循环或while循环、方法或方法参数列表里定义的局部变量,在其内的代码块执行完毕后就被销毁了,不能再用了。

1.局部变量作为传入参数

A方法的局部变量a作为B方法的传入参数,在B方法内对该传入参数的运算不会对A方法的局部变量a产生影响。见下代码:

public class ArrayReference
{
	public static void  changeReferValue(int in)
	{
		in+=1;
		System.out.println("\n"+in);
	}

	public static void printarr(int in)
	{
		System.out.println(in);
	}

	public static void main(String[]args)
	{
		int in=10;
		changeReferValue(in);
        printarr(in);
	}
}
//第一个打印值是11,第二个打印值还是10

2. 方法内调用方法出现变量重名

该情形下,要分清谁是成员变量谁是局部变量。

setCat方法的传入参数weight是该方法的局部变量,而其内部调用的getCat方法,其中的weight是成员变量。

public class TestCat
{
	public static void main(String[]args)
	{
		Cat.setCat(2.3f);
	}
}

class Cat
{
	private static float weight;
	private static void getCat()
	{
		System.out.println("猫的体重是"+weight);
	}
	public static void setCat(float weight)
	{
		if(weight>0)
		{
			Cat.weight=weight;
			getCat();
		}
		else
		{
			Cat.weight=10.0f;
			System.out.println("输入值不合法,设为默认值");
			getCat();
		}
	}
}

3.方法内对变量的运算默认针对局部变量

成员变量、局部变量重名的情形下,在方法内对该重名变量的运算是默认针对局部变量的,而不是成员变量,除非特别指明是针对成员变量进行的。

public class ArrayReference
{
    int int=3;
	public static void  changeReferValue(int in)
	{
		in+=1;
		System.out.println("\n"+in);
	}

	public static void printarr(int in)
	{
		System.out.println(in);
	}

	public static void main(String[]args)
	{
		int in=10;
		changeReferValue(in);
        printarr(in)
	}
}
//第一个打印值是11,第二个打印值还是10

4.接上面第3条,特别指明是针对成员变量进行的运算。见下码

public class draft
{
    static int in=3;
	public static void  changeReferValue(int in)
	{
		in+=1;
		System.out.println("\n"+in);
        draft.in+=1;
        System.out.println("\n"+in);
        System.out.println(draft.in);
	}

	public static void printarr(int in)
	{
		System.out.println(in);
	}

	public static void main(String[]args)
	{
		int in=10;
		changeReferValue(in);
        printarr(in)
	}
}
//第一个打印值是11,第二个打印值还是11,第三个打印值是4,第四个打印值是10

5. 接上面第1条的内容:在B方法内对a的运算会影响到A中a的情形,则是使用return,将运算后的值返回到A方法内,见下代码:

public class ArrayReference
{
	public static int changeReferValue(int in)
	{
		in+=1;
		System.out.println("\n"+in);
        return in;
	}

	public static void printarr(int in)
	{
		System.out.println(in);
	}

	public static void main(String[]args)
	{
		int in=10;
		in=changeReferValue(in);
        printarr(in);
	}
}
//第一个打印值是11,第二个打印值则也是11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值