Java总结——Java面向对象中引用的传递

引用传递:

也称为传地址。有点类似与指针传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

值传递:
方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。

例如:

package java面向对象;
/**
 * @author asus
 *
 */
class Ref{
    String temp = "hello";
}
public class 引用传递 {
    public static void main(String[] args) {
    	/**
	 * @param args
	 */
        Ref r1 = new Ref();
        System.out.println(r1.temp);
        tell(r1);
        System.out.println(r1.temp);
    }
    public static void  tell(Ref r1) {
        r1.temp = "word";   
    }
}

this关键字:

(1)通过this关键字调用成员变量,解决与局部变量名称的冲突问题。
(2) 通过this关键字调用成员方法。
(3)通过this关键字调用构造方法。

在使用this调用类的构造方法时,应注意以下几点。
1.只能在构造方法中使用this调用其它方法,不能在成员方法中中使用。
2.在构造方法中,使用this调用构造方法的语句必须是该方法的第一条执行语句,而且只能出现一次。

例如:this 放在一个语句后面,会报错。
Constructor call must be the first statement in a constructor
意思是:调用构造方法函数必须是构造函数中的第一条语句;

class Person3{
	//private int age;
	//public void ss() {
	//	return ;
	//}
	public Person3(int a) {
	  //this();
		System.out.println("调用"+a);
		this();
	}
	public Person3() {
		System.out.println("阿德撒啊");
	}
}

3.不能在一个类的两个构造方法中使用this互相调用。
会报这个
Recursive constructor invocation Person3错误。
这个错误是无参构造方法和有参方法分别使用this关键字对方法进行了相互调用。

class Person3{
	//private int age;
	//public void ss() {
	//	return ;
	//}
	public Person3(int a) {
		this();
		System.out.println("调用"+a);
	}
	public Person3() {
		this(15);
		System.out.println("阿德撒啊");
	}
}

正确如下:

package java面向对象;
/**
 * @author asus
 *
 */
class People1{
    String name;
    int age;
    public People1(String name,int age) {
        this();  //this作用二:调用本类中构造方法
        //注意:使用此调用,必须放在第一行
        this.name=name; //this作用一:调用本类中属性name
        this.age=age;   
    }   
    private People1() {
        System.out.println("调用无参构造方法");
    }
    public void tell() {
        System.out.println("姓名:"+this.name+" 年龄:"+this.age);
        System.out.println(this); //this作用三:表示当前对象
    }
}
public class this关键字 {
    public static void main(String[] args) {
    	/**
	 * @param args
	 */
        People1 p = new People1("张三",30);
        p.tell();   
    }
}

static关键字:
用于修饰类的成员。
使用static声明属性:static声明全局属性。

使用static声明方法:直接通过类名调用。

注意点:使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能被访问的。

全部评论

相关推荐

03-14 10:50
已编辑
门头沟学院 Java
鼠鼠华子无线实习,bg双九,通软岗位,论文,专利,竞赛都水过一点,秋招《非all in》选手,《泡池子泡到肿》选手,分享一下自己的时间线,给大家多一个参考。---实习末期,接口人电话沟通,最终决定求稳继续投递实习原部门---免机试,九月走完线下流程,开始入池---十月起开始保温,打听手中已拿offer,比较薪资,给出华子的预估职级和薪资(完全不给A的空间)---十月第二次保温,询问签约情况,各种暗示劝说留空白三方---十月底签约另一家公司,遂被降低优先级---十一月若干次常规保温信息(还有机会/稍晚一点/等这周。。。)---十二月告知部门有13的指标,愿意接受可以立刻发offer(难绷,妄图性...
蓦然回首一枝花:能体会楼主的心情,我投了华为无线的成研所,双9bg,被华子最后开了个13级的侮辱价 12.3打oc电话的时候接口人表示乐观等待就行,然后中间4周就开始不回消息或者拖四五天才回,翻来覆去就是“等审批结果”。 12月27号,我看应该是泡不出来了所以联系了部门流转,这时候接口人开始主动给我打电话告诉我马上就能出结果了,于是我也没继续流转。 12.31给我打电话说得降薪审批,薪资大概就是对应着13级的样子,但我当时因为投的是成都的,没有意识到薪资是按照上海开的,还以为这个薪资在成都是14级,加上那个时候我也“孝”劲上来了,想着能收我就行,于是答应了。 1.13开了出来,联系我了薪资,确认了下发现是13级,当时实在是接受不了,于是最终还是拒了。 拒的时候接口人告诉我说这个hc真的是他们争取了很久才争取到的,不过我一想到我12.3就打了oc电话,中间4周一直不搭理我或吊着我,最后12.31才告诉我争取不下来14级要降薪,也许争取真的要争取那么久吧,呵。 这个过程中也为华为拒了不少offer,大厂的、央企的、银行的都拒过,网上总说“华为没有发小奖状之前hr的话一个字都不要信”,当时没有放在心上,以为不会摊到我头上,现在来看当时也挺年轻气盛的。我感觉要不是中途我一直在烦hr,可能我就和楼主一样被泡死了吧,不过最后给开了个13级也和泡死没差,不过是被多侮辱了一次。 最后借楼主这个贴就只想跟后面的人提一个建议吧,还是那句说烂了的,“华为没有发小奖状之前hr的话一个字都不要信”,真的不要以为这样的情况不会出现在自己身上,不要拿自己的一辈子前途去送华为hr业绩。
点赞 评论 收藏
分享
vip牛牛:测试吧,开发现在至少212
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务