/*
起名字要做到见名知意。 this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。 注意:谁调用这个方法,在该方法内部的this就代表谁。 this的场景:
解决局部变量隐藏成员变量
*/
//定义学生类
class Student {
//姓名
private String name;
//年龄
private int age; //姓名获取值
public String getName() {
return name;//返回一个String类型的成员变量名称为name的值,其实这个值就是给成员变量赋值后的值
} //姓名设置值
public void setName(String name) { //name = "林青霞";见名知意
//name = name; //变量的使用规则:就近原则
//这里的调用只能通过对象名
//这个对象如果存在,它应该代表的是Student的一个对象。
//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this。代表当前类的对象
//Student.name = name;//报错信息:无法从静态上下文中引用非静态 变量Studen name= name
this.name = name;//this.name为成员变量
} //年龄获取值
public int getAge() {
return age;
} //年龄赋值
public void setAge(int age) {
this.age = age;//两个age不是同一个age,=右边是局部变量,左边是成员变量。为了避免局部变量隐藏成员变量
}
} //测试类
class StudentTest {
public static void main(String[] args) {
//创建学生对象
Student s = new Student(); //给成员变量赋值
s.setName("林青霞");
s.setAge(27);
//获取数据
System.out.println(s.getName()+"---"+s.getAge());
}
}
/*
标准的代码改进版 this:哪个对象调用那个方法,this就代表那个对象
*/
class Student{
//姓名
private String name;
//年龄
private int age;
//获取姓名方法getXxx();
public String getName(){
return name;
}
//给姓名赋值的方法setXxx();
public void setName(String name){
this.name = name;
}
//获取年龄的方法
public int getAge(){
return age;
}
//给年龄赋值的方法
public void setAge(int age){
this.age = age;
}
} class StudentTest2{
public static void main(String[] args){
//创建第一个对象
Student s1 = new Student();
//给成员变量赋值
s1.setName("杨道龙");//s1调用这个方法,那边的this就代表了对象s1
s1.setAge(24);
//输出
System.out.println(s1.getName()+"---"+s1.getAge());
System.out.println("--------------------------");
//创建第二个对象
Student s2 = new Student();
s2.setName("奥巴马");
s2.setAge(12);//s2调用这个方法,那边的this就代表了对象s2
System.out.println(s2.getName()+"---"+s2.getAge());
}
}

再用一个手机类加深印象:

/*
作业:请把手机类写成一个标准类,然后创建对象测试功能。 手机类:
成员变量:
品牌:String brand;
价格:int price;
颜色:String color;
功能:string function
成员方法:
针对每一个成员变量给出对应的getXxx()/setXxx()方法。
最后定义测试:
创建一个对象,先通过getXxx()方法输出成员变量的值。这一次的结果是:null---0---null
然后通过setXxx()方法给成员变量赋值。再次输出结果。这一次的结果是:三星---2999---土豪金
*/
class Phone{
//品牌
private String brand;
//价格:
private int price;
//颜色:
private String color;
//功能:
private String function; //针对每一个成员变量给出对应的getXxx()/setXxx()方法。
//getBrand方法
public String getBrand(){
return brand;
}
//setBrand方法
public void setBrand(String brand){
this.brand = brand;
}
//getPrice方法
public int getPrice(){
return price;
}
public void setPrice(int price){
this.price = price;
} public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public String getFunction(){
return function;
}
public void setFunction(String function){
this.function = function;
}
} class PhoneTest{
public static void main(String[] args){
//创建对象
Phone p = new Phone(); //没赋值前输出
System.out.println(p.getBrand()+"--"+p.getPrice()+"--"+p.getColor()+"--"+p.getFunction());
//赋值:
p.setBrand("三星");//p对象调用该方法,该方法中的this就代表该对象
p.setPrice(2999);
p.setColor("土豪金");
p.setFunction("拍照");
System.out.println(p.getBrand()+"--"+p.getPrice()+"--"+p.getColor()+"--"+p.getFunction());
}
}

加入内存图片帮助理解:

《java入门第一季》之面向对象this关键字的更多相关文章

  1. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  2. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  3. 《java入门第一季》之面向对象(谈谈接口)

    软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...

  4. Java入门第一季

    慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...

  5. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  6. 《java入门第一季》之面向对象(final关键字)

    /* final可以修饰类,方法,变量 特点: final(可以修饰类),该(类)(不能被继承).一旦修饰了一个类,这个类就不能被继承了! final以修饰方法,该方法可以被继承但是不能被重写.(覆盖 ...

  7. 《java入门第一季》之面向对象(static关键字)

    /* static的特点:(它可以修饰成员变量,还可以修饰成员方法) A:随着类的加载而加载 回想main方法. B:优先于对象存在 C:被类的所有对象共享 举例:班级的学生应该共用同一个班级编号. ...

  8. 《java入门第一季》之面向对象(private关键字与封装概念的初探)

    /* 定义一个学生类: 成员变量:name,age 成员方法:show()方法 在使用这个案例的过程中,发现了一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据.例如:name你赋值了一个3 ...

  9. 《java入门第一季》之面向对象面试题(fianl关键字)

    /* 面试题:final修饰局部变量的问题 基本类型:基本类型的值不能发生改变. 引用类型:引用类型的(地址值)(不能发生改变),但是,该对象的堆内存的值是可以改变的. */ class Studen ...

随机推荐

  1. Android简易实战教程--第四十三话《上拉加载与下拉刷新》

    ListView的下拉刷新很常见,很多开源的框架都能做到这个效果,当然也可以自己去实现.本篇案例是基于xlistview的. 布局: <RelativeLayout xmlns:android= ...

  2. solr多集合配置

    1.1 多SolrCore配置 一个solr工程中可以配置多个SolrCore实例. 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_ ...

  3. 理解性能的奥秘——应用程序中慢,SSMS中快(5)——案例:如何应对参数嗅探

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(4)--收集解决参数嗅探问题的信息 首先我们需要明白,参数嗅探本身不是问 ...

  4. static 变量(静态变量)

    在C++的面向对象编程中,static还可以加在类的数据成员或成员函数之前.这样定义的数据成员或成员函数就被类所拥有,而不再属于类的对象. #include <iostream> usin ...

  5. 使用Android Studio向GitHub提交代码

    使用Android Studio向GitHub提交代码 在GitHub上创建一个仓库 填写仓库名称.描述.类型(公有.私有)等信息,点击创建 到此,成功创建了我们的仓库,并且初始化创建了README. ...

  6. FORM调用FORM(标准调客户化&客户化调标准)并执行查询的实现研究

    一.先来个比较简单的,标准FORM调用客户话FORM并执行查询 1.修改CUSTOM.PLL,使用 fnd_function.execute实现打开和传递参数 参考例子如下 PROCEDURE eve ...

  7. 你知道RxJava也可以实现AsyncTask吗?

    使用RxJava实现异步操作(AsyncTask) 常见的异步操作我们可以联想到AsyncTask或者handler,其实google创造出的目的也就是为了让代码更加清晰明了,让代码更加简洁. 而Rx ...

  8. TCP的发送系列 — tcp_sendmsg()的实现(二)

    主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 在上篇blog中分析了tcp_sendmsg()这个主要函 ...

  9. 如何禁止App在后台运行以及如何保存和恢复App的状态

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 如果禁止App在后台运行 iOS上的App类似于Windows ...

  10. Linux系统编程-----进程fork()

    在开始之前,我们先来了解一些基本的概念: 1. 程序, 没有在运行的可执行文件 进程, 运行中的程序 2. 进程调度的方法: 按时间片轮转 先来先服务 短时间优先 按优先级别 3. 进程的状态: 就绪 ...