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