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.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
随机推荐
- Fragmenttabhost的使用教程
1.准备tab的图标,放到mipmap目录下面,大小64x64,准备2种,一种是选中的,一种是未选中的,如下图 2.重写fragmentabhost,防止调用fragment每次点击tab都要重新调用 ...
- tomcat发布web项目的三种方式
tomcat发布web项目的三种方式 方式一: 配置tomcat 安装目录下的conf/server.xml <Host name="loaclhost">标签里面添加 ...
- 数据结构之DFS与BFS
深度搜索(DFS) and 广度搜索(BFS) 代码如下: #include "stdafx.h" #include<iostream> #include<st ...
- 解决设置了background-size: cover; 但是图片在ios下显示不完整的问题
设置 background-size: % 99.9%:
- leetcode-501. Find Mode in Binary Search Tree
Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...
- 【BZOJ1901】Dynamic Rankings [整体二分]
Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个含 ...
- phpcms v9 后台添加修改页面空白页问题解决方法
phpcms v9 添加修改页面空白页的解决方法 找一个正常运行的phpcms 将caches\caches_model\caches_data 目录下的 content_form.class.php ...
- Python爬虫学习 - day1 - 爬取图片
利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...
- exec,eval
一.什么是Exec语句 假如我们一串字符串里面有Python代码,这个时候,普通情况是会把这串代码作为字符串来输出的,而不会执行这段代码.如果此时,我们想执行这串字符串里面的python代码,使用Ex ...
- 让button居中显示的的标签
<center> <input type="button" class="buttoncls" style="width:80px& ...