Java当中:this关键字

简介: Java当中:this关键字

Java中的this用于类中的方法体内,当一个对象被创建后,Java虚拟机就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,this指向对象本身,this主要可以实现一下三个方面的功能!!


访问类的成员变量!

简化重载的构造方法!

作为参数传递给其他对象或方法!

1.访问类的成员变量!

当类中使用类成员变量时,引方式是this.变量名(注意:点号!!),一般情况下,可以把this省略。但是当成员方法或构造方法中的局部变量与类成员变量同名时,类的成员变量就会被隐藏!此时,若要访问类的成员变量,则必须要有“this.变量名”的方式显示调用成员变量!


public class Book{
    public String title;
    public Book (String title) {
        this.title=title;
    }
}

上述代码段中的:this.title=title; 语句的含义就是将参数:title 的赋值给对象的成员变量title,关键字this代表了实列化Book的当前对象!


2.简化重载的构造方法!


this可以用在构造方中, 以调用一个类中的另一个构造方法,必须注意的是,调用时this必须放法在方法的第一句!


下面笔者用代码来举列一下:this调用构造方法!


public class Book{
    public String title;
    public Book (String title) {
        this.title=title;
    }
    public Book() {
        this("面向对象编程!");
    }
    public void printTitle() {
        System.out.println(title);
    }
    public static void main(String[] args) {
        Book book1 =new Book();
        book1.printTitle();
    }
}


上述代码的运行结果为:


0a2653c851af460fa595bd959398a8f1.png


在上述代码中,Book类中,有两个重载的构造方法,当实列化book1对象时,调用用的是无参构造方法,其中,无参构造方法内部的第一句是调用对应的有参构造方法,设置title的值为:“面向对象编程”,因此,book1对象的printTitle()方法输出的值为:“面向对象编程”!


3.作为参数传递给其他对象或方法!


this可以把当前对象的引用作为参数传递给其他对象或方法,这种情况发生在两个类之间互相传递对方的信息,如方法或变量等!


下面用代码讲解一下:


class Container {
    Component comp;
    public void addComponent() {
        comp = new Component(this);//将this作为对象引用传递
    }
}
class Component {
    Container myContainer;
    public Component(Container c) {
        myContainer = c;
    }
    public static void main(String[] args) {
        Container c1 = new Container();
        c1.addComponent();
    }
}


对于上述的代码:容器类  Container 里面有个方法:addComponent ,含义是将组件加入当前这个容器对象,因此需要实列化租价 类 Component , Component类是一个组件类,当他在实列化时必须依附于一个容器,因此在构造函数需要传递一个容器对象,当:new Component(this) 中的this作为实列化组件时,指定其依附的容器对象就是当前的容器对象!!


相关文章
|
4月前
|
Java 开发者
Java中的并发编程:深入理解synchronized关键字
在Java并发编程的领域中,synchronized关键字是实现线程同步的基础工具之一。本文将深入剖析synchronized的作用机制,探讨其在多线程环境下确保数据一致性的重要性,并通过实际案例展示其应用。同时,文章还将比较synchronized与Lock接口的不同之处,以助于开发者更好地选择适合自己场景的同步策略。
|
4月前
|
存储 安全 Java
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
37 1
|
4月前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
45 0
|
4月前
|
存储 SQL Java
Java实现关键字模糊查询的高效方法及实践
实现关键字模糊查询的方法有多种,每种方法都有其适用场景。在选择合适的方法时,应考虑实际需求、数据量大小、性能要求等因素。正则表达式适用于处理简单文本或小数据集;数据库模糊查询适用于存储在RDBMS中的数据;而第三方库,则适合需要进行复杂搜索的大型项目。选用合适的工具,可以有效提升搜索功能的性能和用户体验。
95 6
|
4月前
|
算法 Java API
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
|
4月前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
77 4
|
4月前
|
安全 Java
Java面试题:解释synchronized关键字在Java内存模型中的语义
Java面试题:解释synchronized关键字在Java内存模型中的语义
46 1
|
4月前
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
57 1
|
4月前
|
存储 安全 Java
(二) 彻底理解Java并发编程之 Synchronized关键字实现原理剖析
Synchronized 关键字(互斥锁)原理,一线大厂不变的面试题,同时也是理解 Java 并发编程必不可少的一环!其中覆盖的知识面很多,需要理解的点也很多,本文会以相关书籍和结合自己的个人理解,从基础的应用范围到底层深入剖析的方式进行阐述,如果错误或疑问欢迎各位看官评论区留言纠正,谢谢!
|
4月前
|
存储 缓存 Java
(一) 玩命死磕Java内存模型(JMM)与 Volatile关键字底层原理
文章的阐述思路为:先阐述`JVM`内存模型、硬件与`OS`(操作系统)内存区域架构、`Java`多线程原理以及`Java`内存模型`JMM`之间的关联关系后,再对`Java`内存模型进行进一步剖析,毕竟许多小伙伴很容易将`Java`内存模型(`JMM`)和`JVM`内存模型的概念相互混淆,本文的目的就是帮助各位彻底理解`JMM`内存模型。
113 0