java编程值得注意的地方
持续更新. . . . . .
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;
}
还没有评论,来说两句吧...