java编程值得注意的地方

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangyaliang11/article/details/79364717

持续更新. . . . . . 

1、方法的参数是值传递

也就是说当调用者传入值后,无论方法内部怎么修改都不会影响到调用者调用前的赋值。

值得注意的是,当传入一个非基本类型数据时,方法内部修改了这个数据的内部数据时,这个操作会影响到外部调用者。

package test;

public class Test {
	public static void main(String[] args) {
		person p = new person("tang",20);
		setName1(p);//方法1调用 没有影响
		System.out.println(p);
		
		setName2(p);//方法2调用 改变了
		System.out.println(p);
	}
	/**
	 * 不会影响
	 * @param p
	 */
	public static void setName1(person p){
		p = new person("guo",17);
	}
	/**
	 * 会影响
	 * @param p
	 */
	public static void setName2(person p){
		p.name = "guo";
		p.age = 17;
	}
}
class person{
	public String name;
	public Integer age;
	person(String name,Integer age){
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "person [name=" + name + ", age=" + age + "]";
	}
}

2、递归的基本法则

1、基准情形,必须总要有某些基准情形,不使用递归就可以计算出结果(简单理解为递归的退出方式)。

2、不断推进,对于需要求解计算的一定是朝着基准情形方向的推进的。

举例最简单的求0-5之间的和,1.基准情形是当数字等于0时不需要计算就可以得到结果。2.数字从5开始朝着基准情形推进直到0.

public static void main(String[] args) {
		System.out.println(f(5));
	}
	public static int f(int n){
		if(n == 0)
			return 0;
		else return f(n-1) + n;
	}


猜你喜欢

转载自blog.csdn.net/tangyaliang11/article/details/79364717
今日推荐