this关键字的解析
this关键字的作用:
1、表示类中的属性。
class Person{ // 定义Person类
private String name ; // 姓名
private int age ; // 年龄
public Person(String name,int age){ // 通过构造方法赋值
this.name = name ; // 为类中的name属性赋值
this.age = age ;// 为类中的age属性赋值
}
public String getInfo(){ // 取得信息的方法
return "姓名:" + name + ",年龄:" + age ;
}
};
public class ThisDemo02{
public static void main(String args[]){
Person per1 = new Person("张三",33) ; // 调用构造实例化对象
System.out.println(per1.getInfo()) ; // 取得信息
}
};
2、使用this调用本类的构造方法。
构造方法间可以互相调用,使用this(参数)的形式完成。
注意:在使用this关键字调用其他构造方法时,this()调用构造方法的语句只能放在构造方法的首行。
在使用this调用本类中的其他构造方法是,至少有一个构造方法是不用this调用的,以防止递归调用的情况出现。
class Person{ // 定义Person类
private String name ; // 姓名
private int age ; // 年龄
public Person(){ // 无参构造
System.out.println("新对象实例化") ;
}
public Person(String name){
this() ;// 调用本类中的无参构造方法
this.name = name ;
}
public Person(String name,int age){ // 通过构造方法赋值
this(name) ;// 调用有一个参数的构造方法
this.age = age ;// 为类中的age属性赋值
}
public String getInfo(){ // 取得信息的方法
return "姓名:" + name + ",年龄:" + age ;
}
};
public class ThisDemo05{
public static void main(String args[]){
Person per1 = new Person("张三",33) ; // 调用构造实例化对象
System.out.println(per1.getInfo()) ; // 取得信息
}
};
3、表示当前对象。
使用this和引用传递比较两个对象是否相等。
String本身是一个类,进行相等的比较,则要判断内容,使用equals()方法来完成。
age是int类型,使用 == 即可。
地址相等,则两个对象相等。地址如果不相等,一次判断属性内容是否相等。
class Person{ // 定义Person类
private String name ; // 姓名
private int age ; // 年龄
public Person(String name,int age){
this.setName(name) ;
this.setAge(age) ;
}
public boolean compare(Person per){
// 调用此方法时里面存在两个对象:当前对象、传入的对象
Person p1 = this ; // 当前的对象,就表示per1
Person p2 = per ; // 传递进来的对象,就表示per2
if(p1==p2){ // 判断是不是同一个对象,用地址比较
return true ;
}
// 之后分别判断每一个属性是否相等
if(p1.name.equals(p2.name)&&p1.age==p2.age){
return true ; // 两个对象相等
}else{
return false ; // 两个对象不相等
}
}
public void setName(String name){ // 设置姓名
this.name = name ;
}
public void setAge(int age){ // 设置年龄
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
};
public class ThisDemo08{
public static void main(String args[]){
Person per1 = new Person("张三",30) ; // 声明两个对象,内容完全相等
Person per2 = new Person("张三",30) ; // 声明两个对象,内容完全相等
// 直接在主方法中依次取得各个属性进行比较
if(per1.compare(per2)){
System.out.println("两个对象相等!") ;
}else{
System.out.println("两个对象不相等!") ;
}
}
};
this关键字的解析的更多相关文章
- python 关键字yield解析
python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...
- Java并发之synchronized关键字深度解析(二)
前言 本文继续[Java并发之synchronized关键字深度解析(一)]一文而来,着重介绍synchronized几种锁的特性. 一.对象头结构及锁状态标识 synchronized关键字是如何实 ...
- Java并发——关键字synchronized解析
synchronized用法 在Java中,最简单粗暴的同步手段就是synchronized关键字,其同步的三种用法: ①.同步实例方法,锁是当前实例对象 ②.同步类方法,锁是当前类对象 ③.同步代码 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- 简析--Java中常见的一些关键字的解析
在Java开发中我们经常会用到一些关键字,关键字的定义很有意思"Java事先定义好的,具有特殊含义的单词",那么我们怎么来用好关键字呢?下面我们对一些常见的关键字进行分析和比较; ...
- Java并发—— 关键字volatile解析
简述 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,当一个变量定义为volatile,它具有内存可见性以及禁止指令重排序两大特性,为了更好地了解volatile关键字,我们可以 ...
- AJPFX关于throw、throws关键字的解析
throw.throws关键字 throw关键字: 是用于方法体内部,用来抛出一个Throwable类型的异常.如果抛出了检查异常, 则还应该在方法头部声明方法可能抛出的异常类型.该方法的调用者也必须 ...
- Java并发之synchronized关键字深度解析(一)
前言 近期研读路神之绝世武学,徜徉于浩瀚无垠知识之海洋,偶有攫取吉光片羽,惶恐未领略其精髓即隐入岁月深处,遂急忙记录一二,顺备来日吹cow之谈资.本小系列为并发之亲儿子-独臂狂侠synchronize ...
- Java并发之synchronized关键字深度解析(三)
前言 本篇主要介绍一下synchronized的批量重偏向和批量撤销机制,属于深水区,大家提前备好氧气瓶. 上一篇说完synchronized锁的膨胀过程,下面我们再延伸一下synchronized锁 ...
随机推荐
- 使用断言assert
之前有看过关于Assert的书,但是不懂得如何去用,最近看别人写的代码有用这个断言(assert),今天自己动手看看如何使用断言. 断言(assert)的语义如下:如果表达式的值为0(假),则输出错误 ...
- 图形绘制 Canvas Paint Path 详解
图形绘制简介 Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...
- javascript正则
<script type="text/javascript"> //去除两边空格,如果要去除所有空格,使用/\s*即可/ String.prototype.trim ...
- 百度前端笔试题目--css 实现一个带尖角的正方形
今天在牛客网上看到这道题,发现自己并不会,看来自己css都没怎么学习,也不怎么会用.看了下答案,不是很明白,也在网上搜集了一些资料和解法,感觉一些同学博客上也写了一些解法和拓展,所以就在这里借鉴一下咯 ...
- Hashtable键值集合
//Hashtable键值集合 键必须是维一的 类似于索引 Hashtable ht = new Hashtable(); ht.Add(, "中国"); ht.Add(, ); ...
- Qt小程序仿写----FileRead程序
该程序实现如下功能:1.打开TXT文件A.txt:2.将文件路径显示到一个文本编辑框里面,文件内容显示到一个文本域里面:3.在文本域里面更改文件内容之后,保存文本域的内容到当前文件路径下. 定义了一F ...
- 用jQuery的ajax请求一般处理程序返回json数据
1.web页面代码: 注意事项: dataType类型一定要写成json. 2.一般处理程序代码: 注意事项: ContentType类型写成"application/json"或 ...
- angular json转义html
第一步json输出的内容反编码 function htmldecode(s){ var div = document.createElement('div'); div.innerHTML = s; ...
- Thinkphp join 连接查询
public function test ( ) { $User = M('authlist'); $rs = $User->join('left join wifi_shop on wifi_ ...
- IE,火狐,谷歌浏览器下js判断滚动条是否已拉到页面最底部
E/FF/Chrome下document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight 以及判断滚动条是否已拉到 ...