我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java中的This关键字和单例模式是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java中的This关键字和单例模式是什么

这篇文章主要介绍“java中的This关键字和单例模式是什么”,在日常操作中,相信很多人在java中的This关键字和单例模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java中的This关键字和单例模式是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

 一、this关键字

1.假设在类定义int类型成员变量年龄age,在构造方法使用的是a(age=a),这样造成可读性比较差,所以需要将一个类中表示年龄的变量统一的命名,都声明为age。此时当成员变量和局部变量名一样导致在构造方法中无法访问对象的其他成员。,这时候在java程序中引用了这个this关键字。

2.this关键字可以为调用了方法的那个对象生成相应的地址,从而获得了对调用本方法的那个对象的引用。当方法需要访问类的成员变量时,就可以使用this引用指明要操作的对象。

3.解决成员变量和局部变量的名一样,我们可以使用this关键字去访问一个类的成员变量。

例如:

public class Person1 { public String name;//成员变量--年龄 public int age;//成员变量--年龄 public Person1(String name, int age){         this.name = name;//为name属性赋值         this.age = age;//为age属性赋值 } //say()方法 public void say(){     System.out.println("你好!我是" + this.name + ",今年" + this.age + "岁。"); } public static void main(String[] args) {     // TODO Auto-generated method stub     Person1 p1 = new Person1("李华", 20);//创建第一个对象     Person1 p2 = new Person1("小名", 19);//创建第二个对象     p1.say();//调用对象的方法     p2.say();//调用对象的方法     } }

输出的结果是:

你好!我是李华,今年20岁。 你好!我是小名,今年19岁。

上面代码中,构造方法的参数定义为(String name,int  age),它是一个局部变量,在类中定义了成员变量name和age,如果在构造方法使用name和age访问的是局部变量,在构造方法使用this.name和this.age的访问的是成员变量。

4.通过this关键字调用成员方法:

public class Person1 { public String name;//成员变量--年龄 public int age;//成员变量--年龄 public Person1(String name, int age){         this.name = name;//为name属性赋值         this.age = age;//为age属性赋值 } //print()方法 public void print() { System.out.println("************************"); } //say()方法 public void say(){ this.print();//调用方法     System.out.println("你好!我是" + this.name + ",今年" + this.age + "岁。"); } public static void main(String[] args) {     // TODO Auto-generated method stub     Person1 p1 = new Person1("李华", 20);//创建第一个对象     Person1 p2 = new Person1("小名", 19);//创建第二个对象     p1.say();//调用对象的方法     p2.say();//调用对象的方法     } }

输出的结果是:

************************ 你好!我是李华,今年20岁。 ************************ 你好!我是小名,今年19岁。

上面代码中,通过this关键字调用成员方法,写了一个print()方法在say()放在中调用成员方法并输出。5.构造方法在实例化对象时被java虚拟机(JVM)自动调用,在程序不能像调用其他方法去调用构造方法,可以在构造方法中使用this([参数1,参数2,...,参数n])的方式来调用其他的构造方法。

例如:

public class Person2 { public String name; public int age; //定义无参的构造方法 public Person2(){     System.out.println("无参构造方法被调用...."); } //定义两个有参的构造方法 public Person2(String name,int age){     this();//调用无参的构造方法     this.name=name;     this.age=age;     System.out.println("你好!我叫"+this.name+"今年"+this.age+"岁!");      } public static void main(String[] args) {     // TODO Auto-generated method stub     Person2 p=new Person2("李华",19);//实例化Person2对象     } }

输出的结果是:

无参构造方法被调用.... 你好!我叫李华今年19岁!

上面代码中,在实例化Person2对象后,调用了两个有参的构造方法,在这个方法中调用了无参的构造方法,并打印出”无参构造方法被调用....”,在实例化Person2对象中传入了参数的值,最后输出”你好!我叫李华今年19岁!”,这两个构造方法都被调用了。

二、单例模式

1.什么是单例模式

单例模式是:一个类当中只有一个实例,并且提供一个访问它的全局访问点。

2.单线程中,单例模式根据实例化对象时机不同,由两种经典实现分别是饿汉式单例和懒汉式单例。

3.饿汉式单例定义类的静态私有变量同时进行实例化

饿汉式单例案例:

public class Singleton { // 自己创建一个对象 private static Singleton singleton = new Singleton(); // 私有的构造方法 private Singleton(){  } // 提供返回这个对象的静态方法 public static Singleton getInstance() {     return singleton; } public static void main(String[] args) {     // TODO Auto-generated method stub     Singleton s1=Singleton.getInstance();     Singleton s2=Singleton.getInstance();     System.out.println(s1==s2);     } }

输出的结果是:true

从上面的代码中,声明静态私有类变量,并且立马实例化,实例化一次。类的构造方法中使用private修饰,这样就不能在类的外部使用new来创建实例化对象。私有的构造方法,是为了防止外部实例化,如果想让类的外部获取类的实例对象,提供public中的getInstance()方法获取单例实例。

4.懒汉式单例就是延迟加载,等到需要使用的时候去创建实例,不是主动创建。

懒汉式单例案例

public class Singleton1 { //声明私有变量 private static Singleton1 singleton1 = null; // 私有的构造方法 private Singleton1() { } //提供返回这个对象的静态方法 public static Singleton1 getInstance() {     //被动创建,真正需要使用时才去创建     if (singleton1 == null) {     singleton1 = new Singleton1();     }     return singleton1; } public static void main(String[] args) {     // TODO Auto-generated method stub     Singleton1 s1=Singleton1.getInstance();     Singleton1 s2=Singleton1.getInstance();     System.out.println(s1==s2);     } }

输出的结果是:true

从上面的代码中,单例实例被延迟加载,只要真正需要用到的时候才会实例化一个对象交给自己使用。

三、总结

本文主要介绍了this关键字、单例模式。

this关键字可以为调用了方法的那个对象生成相应的地址,从而获得了对调用本方法的那个对象的引用。当方法需要访问类的成员变量时,就可以使用this引用指明要操作的对象。

单例模式是一个类当中只有一个实例,并且提供一个访问它的全局访问点。通过饿汉式和懒汉式案例来理解这个单例模式的用法。希望大家通过本文的学习,对你有所帮助!

到此,关于“java中的This关键字和单例模式是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java中的This关键字和单例模式是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java中this关键字的作用是什么

在Java中,this关键字代表当前对象的引用。它的主要作用有以下几点:1. 表示当前对象:在类的方法中,this关键字可以用来引用当前对象。这样可以在方法中访问当前对象的属性和方法。例如,可以使用this来引用当前对象的成员变量,或者调用
2023-08-31

java中this关键字的用法是什么

在Java中,this关键字用于表示当前对象的引用。它可以用于以下几种情况:1. 使用this调用类的构造函数:当一个类中有多个构造函数时,可以使用this关键字来调用其他构造函数,以避免重复代码。例如:```public class My
2023-09-15

java中的this关键字是什么意思

什么是this?this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。用法如下:用"this.成员变量名称"和重名的局部变量区分开来;用"this.成员方法名"访问成员方法。class Person{private String name
java中的this关键字是什么意思
2018-03-31

C# 中this关键字的作用是什么

这篇文章给大家介绍C# 中this关键字的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。以下是 this 的常用用途:◆限定被相似的名称隐藏的成员◆将对象作为参数传递到其他方法◆声明索引器C# this关键字
2023-06-17

Java的单例模式是什么

单例(Singleton)模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。 (推荐学习:java课程)这种模式涉及一个类,它负责创建一个对象,同时确保只创建一个对象。这个类
Java的单例模式是什么
2015-11-05

JavaScript中的this关键字是什么及怎么用

今天小编给大家分享一下JavaScript中的this关键字是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。例子
2023-06-26

Java单例模式与破坏单例模式的概念是什么

本文小编为大家详细介绍“Java单例模式与破坏单例模式的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java单例模式与破坏单例模式的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是单例
2023-07-05

Java中super关键字的用法和细节是什么

这篇文章将为大家详细讲解有关Java中super关键字的用法和细节是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种
2023-06-26

java中abstract关键字的作用是什么

在Java中,abstract关键字用来定义抽象类和抽象方法。抽象类:使用abstract关键字修饰的类称为抽象类。抽象类是一种不能被实例化的类,它只能用作其他类的父类。抽象类可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法,只有
2023-10-23

Java中final关键字的作用是什么

这篇文章主要讲解了“Java中final关键字的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中final关键字的作用是什么”吧!final关键字的作用final关键字可以
2023-06-20

java中static关键字的作用是什么

在Java中,static关键字有以下几种作用:1. 静态变量:使用static关键字修饰的变量称为静态变量,也叫类变量。静态变量在整个类中只有一份拷贝,被所有对象共享。静态变量可以通过类名直接访问,无需创建对象。2. 静态方法:使用sta
2023-08-22

java中instanceof 关键字的作用是什么

本篇文章给大家分享的是有关java中instanceof 关键字的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。instanceof1. instanceof 是Ja
2023-06-14

java中const关键字的作用是什么

在Java中,const并不是一个关键字,而是一个保留字,表示常量(constant)的意思。在Java中,我们可以使用final关键字来声明一个常量,即用final修饰的变量的值在初始化后不能被修改。以下是const和final关键字的区
2023-09-05

java单例模式的应用场景是什么

Java单例模式的应用场景是在需要保证系统中只有一个实例对象存在的情况下使用。以下是几个常见的应用场景:1. 数据库连接对象:在一个系统中,通常只需要一个数据库连接对象,使用单例模式可以确保只有一个数据库连接对象被创建和使用。2. 日志记录
2023-10-11

java中什么是单例模式?有哪些优点?

一.什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。单例模式就是: 在程序运行期间, 某些类有且最多只有一个实例对象。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供
java中什么是单例模式?有哪些优点?
2016-08-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录