Java 【11】this学习,浅谈this原理详解、this语句

来源:互联网 发布:小蜜蜂火焰切割机编程 编辑:程序博客网 时间:2024/05/22 17:36

           说道研究生到底应该干什么我自己也很困惑。来到兰理导师要求我们参加比赛,我们想着法子往出做东西;然后实验室要求发表论文,现在还不让专硕出去实习,研一的时候有比较多的课我努力的学习,我以为一切都应该是这样的,但通过比较才发现或许研究生应该有不一样的生活。前几天和一个朋友聊天发现他们都没有课,从研一就开始跟着老师做项目,我那是感觉研一总得上课吧,后来又遇到兰大的同学他说学习只是一个副业,大家都在干着自己的事儿,我的想法有点改变了,研究生或许真的该有些改变了。。。哎。。。开始技术!

      在前面编程的时候会遇到this.x = x;这样的句子,以前学过但都已经忘记this这一关键词到底是什么工作机制,现在开始复习一下。首先说一个简单的例子:

class Person{private String name;private int age;Person(String name){name = name;   //想这样的赋值运行结果会显示空}

想这样的赋值,运行结果会显示空。

没有把值赋给对象在堆内存的name,这是因为局部变量和成员变量名称相同了,运行机制是局部中有该变量名称就使用局部变量,如果没有才找成员变量,所以此处的name都是局部的name,所以不会赋值成功。

      所以需要将成员变量的标示this,用于区分局部变量和成员变量同名的情况。但这是为什么呢。this代表本类对象,即成员变量。同时在调用函数时都是将this省略的,写上有助于阅读。

public static void main(String[] args) {Person p = new Person("linweieran");Person p1 = new Person("chengzhang");p.speak();p1.speak();}}class Person{private String name;private int age;Person(String name){this.name = name;   //name=name;想这样的赋值运行结果会显示空}Person(String name,int age){this.name = name;this.age = age;}public void speak(){System.out.println("name="+name+"....;age="+age);}}

然后,在本类功能内部使用了本类对象,都是this表示,代码如下:

public int compare(Person p){   //和别人比较是否是同龄人if(this.age>p.age)return this.age;else return  p.age;}

在构造函数间的代码应该是下面这样子的,this语句后面没有括号。this语句用于函数之间,传相应参数进行互相调用。

Person(String name,int age){//this.name = name; 构造函数间this(name);this.age = age;}


这样子创建对象Person p = new Person("linweieran",21);就将"linweieran"传给this(name),从而存入该对象所在堆内存。同时要注意this语句只能出现在构造函数的第一行!!因为初始化的动作要先执行,如果还有初始化细节要更先执行。

      好的,this的基础基本学习完毕。


 

 

 

 


 

0 0
原创粉丝点击