package com.jsti.guiyang_01;

/*
自定义Phone类
this关键字
代表当前正在调用这个方法(访问成员变量)的对象(实例)
1.在setxxx方法中用来区分成员变量和局部变量
2.在方法中指定调动本类的其它方法 标准javaBean
私有的成员变量,公有的getxxx,setxxx方法
手动定义空参的构造方法 */
class Phone{
//私有成员变量
private String brand;
private int price;
private String color; //公有getxxx setxxx方法
public void setBrand(String brand){
this.brand = brand;
}
public String getBrand(){
return brand;
} public void setPrice(int price){
this.price = price;
}
public int getPrice(){
return price;
} public void setColor(String color){
this.color = color;
}
public String getColor(){
return color;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand,int price,String color){
this(brand,price);//在构造方法中调用其它的构造方法,必须是构造方法的第一条语句
System.out.println("三个参数的构造方法被调用"); // this.brand = brand;
// this.price = price; this.color = color; //return xxxx;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand,int price){
this(brand);
System.out.println("两个参数的构造方法被调用");
// this.brand = brand;
this.price = price;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand){
System.out.println("一个参数的构造方法被调用");
this.brand = brand;
}
//默认的构造方法
public Phone(){} //定义show方法,用于显示所有的成员变量
public void show(){
System.out.println(brand +" <> "+ price +" <> "+ color);
}
public void test(){
show();//this可以省略
call("tom");
} public void call(String name){
System.out.println("给 " + name + " 打电话");
}
} public class PhoneDemo {
public static void main(String[] args){
/*
Phone p = new Phone();
p.setBrand("iPhone");
p.setPrice(7000);
p.setColor("red");
System.out.println();
// p.show();
// p.call("Tyson");
p.test();
*/ //构造方法的调用new关键字后边实际上就是在调用构造方法
Phone p = new Phone("iPhone",7000,"red");
p.test();
}
}

下段代码源自https://blog.csdn.net/fzfengzhi/article/details/2174406

* 本示例为了说明this的三种用法!

 */

package test;

public class ThisTest {

    private int i=0;

    //第一个构造器:有一个int型形参

    ThisTest(int i){

       this.i=i+1;//此时this表示引用成员变量i,而非函数参数i

       System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);

       System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));

       //从两个输出结果充分证明了i和this.i是不一样的!

    }

    //  第二个构造器:有一个String型形参

    ThisTest(String s){

       System.out.println("String constructor:  "+s);

    }

    //  第三个构造器:有一个int型形参和一个String型形参

    ThisTest(int i,String s){

       this(s);//this调用第二个构造器

       //this(i);

       /*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。

       但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调

       用一个且仅一次构造器!*/

       this.i=i++;//this以引用该类的成员变量

       System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);

    }

    public ThisTest increment(){

       this.i++;

       return this;//返回的是当前的对象,该对象属于(ThisTest)

    }

    public static void main(String[] args){

       ThisTest tt0=new ThisTest(10);

       ThisTest tt1=new ThisTest("ok");

       ThisTest tt2=new ThisTest(20,"ok again!");

       System.out.println(tt0.increment().increment().increment().i);

       //tt0.increment()返回一个在tt0基础上i++的ThisTest对象,

       //接着又返回在上面返回的对象基础上i++的ThisTest对象!

    }

}

运行结果:

Int constructor i——this.i:  10——11

String constructor:  ok

String constructor:  ok again!

Int constructor:  21

String constructor:  ok again!

关于 this 关键字的使用的更多相关文章

  1. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  2. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  3. java面向对象中的关键字

    1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...

  4. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

  5. transient关键字的用法

    本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...

  6. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  7. Core Java 总结(关键字,特性问题)

    2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...

  8. Net中的常见的关键字

    Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...

  9. php多关键字查询

      php单一关键字查询 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 tdansitional//EN" "http: ...

  10. Keil> 编译器特有的功能 > 关键字和运算符 > __weak

    __weak 此关键字指示编译器弱导出符号. 可以将 __weak 关键字应用于函数和变量声明以及函数定义. 用法 函数和变量声明 对于声明,此存储类指定一个 extern 对象声明,即使不存在,也不 ...

随机推荐

  1. TZOJ 2569 Wooden Fence(凸包求周长)

    描述 Did you ever wonder what happens to your money when you deposit them to a bank account? All banks ...

  2. 前后端分离框架前端react,后端springboot跨域问题分析

    前后端分离框架前端react,后端springboot跨域问题分析 为啥跨域了 前端react的设置 springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必 ...

  3. requests+django+bs4实现一个web微信的功能

    前言: 今天我们利用requests模块+django+bs4浏览器来实现一个web微信的基本功能,主要实现的功能如下 a.实现返回二维码 b.实现手机扫码后二维码变成变成头像 c.实现手机点击登陆成 ...

  4. php 微信自定义分享接口

    <?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appS ...

  5. linux 7 更改主机名

    1.在/etc/default/grub 中的GRUB_CMDLINE_LINUX 加上两条参数 #vim  /etc/default/grub GRUB_CMDLINE_LINUX="cr ...

  6. 30. pt-upgrade

    用来测试新老版本数据库对sql的结果是否一致.两台开发测试数据库,一台是老版本,一台是新版本,来做比较,生产库别用. pt-upgrade h=192.168.100.101,P=3306,u=adm ...

  7. Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;

    异常:Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.co ...

  8. ef 连接mysql,code first

    方法“MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(System.Data.Common.DbConn ...

  9. 获取ADO连接字符串

    自己如何获取ADO连接字符串 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库.今天详细介绍下这个很流行的如何获取ADO字符串的方法,就能很容易直观看到这个连接字符串是否真能连接上数据库.编 ...

  10. MySQL PROFILE 跟踪语句各阶段性能开销

    PROFILE  可以跟踪查询语句各个阶段 Time,IO,CPU,MEMORY 等资源使用情况,比较详细.所以系统一般不会记录太多.启用是全局的,所以每个连接都保持语句的资源使用情况. 查看 PRO ...