Java中this关键字主要有以下两个方法:

  1、this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表构造器正在初始化的实例/对象

  2、this调用 - 只能在构造器的第一行出现。

如何区分this引用与this调用呢?

  this引用写法为:this.  ;  而this调用写法为:this();

例1:

 class TestThis{
private double weight;
private String name; public TestThis(String name){
//this引用在构造器中代表正在初始化的实例/对象
this.name = name;
} public void info(){
System.out.println("这个是:" + name + ",重量为:" + this.weight);
} public void bat(){
//this引用在方法中代表谁并不明确,具体是由哪个对象调用它而决定的
this.weight = weight + 10;
} public static void main(String[] args){
TestThis tt = new TestThis("猴子");
tt.bat();//第一次调用bat方法,重量增加10
tt.info();//输出为:这个是:猴子,重量为:10.0
tt.bat();//第二次调用bat方法,重量在上一次的基础上再加10
tt.info(); //输出为:这个是:猴子,重量为20.0
TestThis tb = new TestThis("犊子");
tb.info();//因为tb没调用bat方法,所以它的重量依旧为0 输出为:这个是:犊子,重量为0.0
}
}

例2:

 public class TestThis1 {
private String name; //封装后只能在当前类中访问
private double weight;
private int age; //构造器不需要声明返回值类型,若声明则会变为普通方法
//构造器重载:类似方法重载-在同一个类中构造器名字相同,但形参不同
public TestThis1(String name,int weight){
this.name = name;
this.weight = weight;
} public TestThis1(String name,int weight,int age){
this(name,100);//this() - 调用当前类的另一个构造器(根据参数去匹配调用哪个构造器)
this.age = 5;
} public void info(){
System.out.println("这个是:" + name + ",重量为:" + weight + "KG,年龄是:" + age);
} public static void bat(String name){
this.name = name;
} public static void main(String[] args){
TestThis1 t1 = new TestThis1("小象",60);
t1.info();//调用方法的本质就是找到info()方法并执行方法内的语句块
TestThis1 t2 = new TestThis1("大象",200,3);
t2.info();
}
}

疯狂java学习笔记之面向对象(四) - this关键字的更多相关文章

  1. 疯狂java学习笔记之面向对象(七) - super关键字

    super有以下两大作用: 1.起限定作用:强制去访问父类的成员(Field.方法) 2.起调用作用:指定/显示调用父类的某个构造器 super调用规则: 1.子类构造器总会调用父类构造器一次,默认情 ...

  2. 疯狂java学习笔记之面向对象(八) - static和final

    一.static: 1.static是一个标识符: - 有static修饰的成员表明该成员是属于类的; - 没有static修饰的成员表明该成员是属于实例/对象的. 2.static修饰的成员(Fie ...

  3. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  4. 疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器

    Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. ja ...

  5. 疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

    一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同 ...

  6. 疯狂java学习笔记之面向对象(五) - 封装、继承、多态

    一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...

  7. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

    方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...

  8. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

  9. 疯狂java学习笔记之面向对象(九) - 抽象和接口

    一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...

随机推荐

  1. linker command failed with exit code 1 (use -v to see invocation)

    library not found for -|AFNetworking 错误内容如图所示: 解决方法:1. 如果没有安装pod,则安装pod,并导入项目AFNetworking参考:http://w ...

  2. Jams倒酒

    Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载. 酒吧的生意并不好.Jams发现酒鬼们都很穷,不像他那么土豪.有时,他们 ...

  3. 43个优秀的Swift开源项目

    作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...

  4. JS获取浏览器高度 并赋值给类

    在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ...

  5. iPad开发(Universal Applications)

    一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdi ...

  6. 二、JavaScript语言--JS动画--JS动画效果

    运动框架实现思路: 1.速度(改变值:left , right , width , height , opacity) 2.缓冲运动 3.多物体运动 4.任意值改变 5.链式运动 6.同时运动 js用 ...

  7. MVC基础知识

    1.View中获取Control和View: //获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); / ...

  8. 实现VS2010整合NUnit进行单元测试(转载)

    代码编写,单元测试必不可少,简单谈谈Nunit进行单元测试的使用方式: 1.下载安装NUnit(最新win版本为NUnit-2.6.4.msi) http://www.nunit.org/index. ...

  9. [JavaCore] 不错的Java基础学习资料-持续更新

    容易弄混的JAVA基础知识: http://www.iteye.com/topic/943647 [总结]String in Java: http://www.iteye.com/topic/5221 ...

  10. 【译】安装Sonar要求

    本文仅为本人看sonar官方文档时,因其为英文,故简单整理翻译[英语不好,见谅!] http://docs.sonarqube.org/display/SONAR/Requirements   目录 ...