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的基础基本学习完毕。
- Java 【11】this学习,浅谈this原理详解、this语句
- 浅谈this
- this 浅谈
- java中this详解
- java super() this 详解
- Java this关键字详解
- Java 关键字this详解
- java中的this详解
- Java this关键字详解
- java中this详解
- Java this关键字详解
- JAVA中this详解
- 浅谈Java中的This关键字
- Java学习笔记:详解this关键字
- Java学习笔记(18)--关键字this详解
- this
- this
- this
- genymotion The connection to adb is down, and a severe error has occured.You must restart adb and Ec
- 四六级备考
- zoj2482 IP Address(水题,但有个语法想不通)
- Readers/Writers lock
- JavaScript:删除节点(removeChild)该留意的一点
- Java 【11】this学习,浅谈this原理详解、this语句
- UVA437(DP)
- EA反向操作你会吗?
- 关于AssetBundle,Shader丢失的问题
- (转)Android 中的 framebuffer
- HTML5基础01----h5基本格式
- 【面试加分项】java自定义注解之解析注解
- Android实战简易教程-第二十七枪(Android设置头像上传功能实现)
- 数据段、代码段、堆栈段、BSS段的区别