1.5(java学习笔记)this关键字
this关键字主要有三个作用
1.调用本类中的属性。
public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
}
class Person{
String name;
int age;
public Person(String n, int a){
name = n;
age = a;
}
public String getInfo(){
System.out.println();
return null;
}
}
上述程序可以正常运行,但是构造方法中形参名称对于我们来说不便于识别,那我们可不可以这样呢?
public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
}
class Person{
String name;
int age;
public Person(String name, int age){ //将形参名称和类中属性名称一致,这样可以便于我们识别。
name = name; //但是这个程序可以正常运行吗?显然是不能的,这个里的
age = age; //name = name 都是形参变量本身,相当于自己给自己赋值
} //这是不行的。
public String getInfo(){
System.out.println();
return null;
}
}
这时我们就以用this关键字来实现在构造方法中调用类的属性。
public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
p1.getInfo();
}
}
class Person{
String name;
int age;
public Person(String name, int age){
this.name = name; //name起来么加了this就代表这个属性是类中的属性,后面的name是形参。
this.age = age; //这样就没有问题了
}
public String getInfo(){
System.out.println();
return null;
}
}
2.调用构造方法。
例如
public class TextThis {
public static void main(String[] args){
Person p1 = new Person("hcf", 21);
p1.getInfo();
}
}
class Person{
String name;
int age;
public Person(){
System.out.println("调用了无参的构造方法Person()"); //无参的构造方法被调用就会打印出此语句。
}
public Person(String name, int age){
this(); //通过this()调用无参的构造方法。
this.name = name; //此代码运行完我们会发现,打印出了“调用了无参的构造方法...”
this.age = age; /说明我们实现了通过this()调用了构造方法。
}
public String getInfo(){
System.out.println(name +"\n" + age);
return null;
}
}
3.代表当前对象
public class TextThis {
public static void main(String[] args){
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1); //打印p1的地址
p1.getInfo(); //调用p1中的getInfo()方法,打印当前this的地址
System.out.println(p2); //打印p2的地址
p2.getInfo(); //调用p2中的getInfo()方法,打印当前this的地址。
}
}
class Person{
public String getInfo(){
System.out.println(this); //this代表当前对象,例如调用p1.getInfo()方法,此时打印的this就是p1
return null; //同理,调用p2.getInfo()方法,打印的this就是p2.
} //所以该代码运行后,p1和p1.getInfo();输出的结果是相同的,
} //p2和P2.getInfo()方法输出的结果也是相同的。
1.5(java学习笔记)this关键字的更多相关文章
- Java学习笔记18---final关键字修饰变量、方法及类
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
- Java学习笔记——static关键字与静态的使用方法
static:可以修饰成员变量和成员方法. 当变量被static修饰后,则其可以直接被类名调用.类名.成员. static特点: 随着类的加载而加载: 优先于对象存在: 被所有的对象共享,节省空间,但 ...
- java学习笔记11-static关键字
如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
随机推荐
- 播放video
<html> <head> <title> four in one vedio</title> <style type="text/cs ...
- struts2学习笔记(三)
一. Struts2 的验证 1). 验证分为两种: > 声明式验证* >> 对哪个 Action 或 Model 的那个字段进行验证 >> 使用什么验证规则 >& ...
- HDU1099---数学 | 思维
hdu 1099 Lottery题意:1~n编号的彩票,要买全,等概率条件下平均要买几张.已经买了m张时,买中剩下的概率为1-m/n,则要买的张数为1/(1-m/n)n=2,s=1+1/(1-1/2) ...
- wxpython学习资源
http://www.cnblogs.com/dyx1024/archive/2012/07/15/2592202.html wxPython:布局管理器sizer介绍 ogs.com/dyx1024 ...
- appium===Python+Appium环境部署教程
*前提是你已经安装好python,以及python的pip工具 *安装python请自行百度教程~ 1.安装安卓sdk 安装包:http://tools.android-studio.org/inde ...
- springmvc JSR303 Validate 注解式,校验数据
参考:http://www.cnblogs.com/liukemng/category/578644.html 先进行配置: <!-- 默认的注解映射的支持 --> <mvc:ann ...
- 1.flume概述
我们的web服务器等等每天会产生大量的日志,我们要把这些日志收集起来,移动到hadoop平台上进行分析. 那么如何移动这些数据呢?一种方法是通过shell cp到hadoop集群上,然后通过hdfs ...
- 记录一次lnmp故障报告
业务架构图: nginx 状态监控图: 本次故障的表现为:前端php页面无法打开,空白页或者502错误. nginx中php配置如下: location ~ \.php$ { root /xxx/xx ...
- 【SQL】宿主语言接口
一般情况下,SQL语句是嵌套在宿主语言(如C语言)中的.有两种嵌套方式: 1.调用层接口(CLI):提供一些库,库中的函数和方法实现SQL的调用 2.直接嵌套SQL:在代码中嵌套SQL语句,提交给预处 ...
- Selenium2+python自动化44-元素定位参数化(find_element)【转载】
前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...