十、java基础之this介绍

/*一、this关键字:  1.this什么?    this是一个引用类型    在堆中的每一个java对象上都有this    this保存的内存地址指向自身  2.this能用在哪里?    第一:this可以用在成员方法中    第二:this可以用在构造方法中      this(实参);      通过一个构造方法去调用另一个构造方法       目的:代码复用      注意:this(实参)必须出现在构造方法中第一个语句;否则报:Error:(40, 13) java: 对this的调用必须是构造器中的第一个语句
   3.this可以用来区分成员变量和局部变量
   4.this不能用在静态方法中    1.静态方法的执行根本不需要java对象的存在,直接使用,类型,的方式访问    2.而this代表的是当前的对象,所以静态方法中根本没有this
 
 */

1.原始代码:
public class ThisTest06 {

    public static void main(String[] args){

        //创建对象
        MyDate t1=new MyDate(2018,8,23);
        System.out.println(t1.year+"年"+t1.mouth+"月"+t1.day+"日");

        //创建对象

        MyDate t2=new MyDate();
        System.out.println();
    }
}

class MyDate{
    //Field
    int year;
    int mouth;
    int day;

    //constructor

    MyDate(){}

    MyDate(int _year,int _mouth,int _day){
        year=_year;
        mouth=_mouth;
        day=_day;
    }
}
2.this可以用在成员方法中
public class ThisTest07 {

    public static void main(String[] args){
        Employee em=new Employee(1234,"chushujin");
        em.work();

        Employee em1=new Employee(12345,"chushujin1");
        em1.work();

    }
}

class Employee{

    //员工编号
    int empno;
    //员工名
    String ename;

    //Constructor
    Employee(){}

    Employee(int _empno,String _ename){
        empno=_empno;
        ename=_ename;

    }
    //提供一个员工工作方法
    //this用在成员方法中,谁去调用这个成员方法,this就代表谁
    //this指的就是当前对象
    public void work(){
        System.out.println(this.ename+"在工作!");
        //System.out.println(ename+"在工作!");//可以省略
    }

    public void m1(){
        this.m2();
    }
    public void m2(){
        System.out.println("THIS");
    }

}

2.this可以用在构造方法中

      this(实参);      通过一个构造方法去调用另一个构造方法       目的:代码复用      注意:this(实参)必须出现在构造方法中第一个语句;否则报:Error:(40, 13) java: 对this的调用必须是构造器中的第一个语句
public class ThisTest10 {

    public static void main(String[] args){
        MyDatee MDe=new MyDatee();
        System.out.println(MDe.year+"年"+MDe.mouth+"月"+MDe.day+"日");

    }
}

class MyDatee{
    //Field
    int year;
    int mouth;
    int day;

    //constructor
    //默认1999-1-1日
    MyDatee(){

        this(1999,1,1);
        /*year=1999;
        mouth=1;
        day=1;
        */
        //this(1999,1,1);
    }

    MyDatee(int _year,int _mouth,int _day){
        year=_year;
        mouth=_mouth;
        day=_day;
    }
}

3.this可以用来区分成员变量和局部变量

public class ThisTest08 {

    public static void main(String[] args){

        Manager m1= new Manager("KING");

        Manager m2=new Manager("JOY");

        System.out.println("m1---->"+m1.getName());
        System.out.println("m2---->"+m2.getName());

    }
}

class Manager{
    //Field
    private String name;

    //Constructor
    Manager(String name){
        this.name=name;
    }
    //Method
    //成员方法
    public void setName(String name){
        this.name=name;

    }
    public String getName(){
        return this.name;
    }
}
4.this不能用在静态方法中    1.静态方法的执行根本不需要java对象的存在,直接使用,类型,的方式访问    2.而this代表的是当前的对象,所以静态方法中根本没有this
public class ThisTest09 {

    //没有static的就是成员变量,成员变量不能直接访问,引用.变量名
    String str;
    public static void main(String[] args){
        Person.m1();

        //System.out.println(str);Error:(13, 28) java: 无法从静态上下文中引用非静态 变量 str

        ThisTest09 tt=new ThisTest09();
        System.out.println(tt.str);//null

    }
}

class Person{

    //Field
    String name;
    //Constructor
    Person(){}

    Person(String name){
        this.name=name;
    }

    //静态方法
    public static void m1(){
        //System.out.println(this.name);

        //如果想要访问name
        Person p=new Person("kk");
        System.out.println(p.name);

    }
}
 



原文地址:https://www.cnblogs.com/chushujin/p/10049100.html

时间: 2024-07-31 04:22:00

十、java基础之this介绍的相关文章

【java基础】IOC介绍及其简单实现

控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找.依赖注入应用比较广泛,我们这里只介绍依赖注入. 一.IOC简介 控制反转IOC,它最主要反映的是与传统面向对象(OO)编程的不同.通常我们编程实现某种功能都需要几个对象相互作用,从编程的角度出发,也就是一个主对象要保存其他类型对象的引

java基础---->摘要算法的介绍

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法.散列算法.今天,我们就开始java中摘要算法的学习. 项目结构如下: SHA算法 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorit

java基础---->摘要算法的介绍 (转)

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法.散列算法.今天,我们就开始java中摘要算法的学习. 项目结构如下: SHA算法 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorit

Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类

final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢?要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. final的特点 final修饰类不可以被继承,但是可以继承其他类. class Yy {} final clas

JAVA 基础 HTTP的介绍

目录 http的方法 http请求头Content-Type编码指定 form表单 httpClient的使用(图片来自于网络) http的方法 OPTIOINS  返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"请求测试服务器的功能性 HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含响应消息头中的元信息 GET     向特定的资源发出请求,它本质就是发送一个请求来取得

java基础之----jvm介绍

常见的垃圾收集器 参考这篇文章:https://crowhawk.github.io/2017/08/15/jvm_3/ 如何判断某个对象为垃圾 引用计数法 目前主流的java虚拟机都摒弃掉了这种算法,最主要的原因是它很难解决对象 之间相互循环引用的问题.尽管该算法执行效率很高. 例如:在testGC()方法中,对象objA和objB都有字段instance,赋值令objA.instance=objB及objB.instance=objA,除此之外这两个对象再无任何引用,实际上这两个对象都已经不

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机

java基础介绍(转)

很全面的介绍JAVA基础的文档 Java 编程简介,第 1 部分: Java 语言基础 http://www.ibm.com/developerworks/cn/java/j-introtojava1/ Java 编程简介,第 2 部分: 构建真实的应用程序 http://www.ibm.com/developerworks/cn/java/j-introtojava2/

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉