Java连载53-单例模式初步、final关键字补充、回顾知识点
一、回顾
1.类和对象的区别
2.UML(uniform makeup language)
3.方法区存储静态变量、常量(static final修饰)
4.堆内存中存储对象
5.栈存储变量
6.this()可用于构造方法第一行
7.static静态语句块(JVM中第一次使用类的时候,会进行加载静态语句块),还可以修饰变量和方法
8.设计模式是可以重复利用的解决方案可以分为四类
9.类的继承(单继承)
10.方法覆盖(相同修饰符,相同方法名,相同参数)
11.多态,子类->父类(向上转型
父类->子类(向下转换,强制类型转换)
12.super关键字,子类里面访问父类的方法
13.super()可以出现在构造方法第一行,默认自动生成,不会创建父类,只是用来初始化,用来调用父类的构造方法。
14.final关键字
15.abstract抽象类
非抽象类调用抽象类,必须将抽象类中的方法覆盖、重写
二、深入final关键字
1.抽象类不可以被final关键字修饰(抽象类定义出来就是用来继承的)
2.fianl修饰的引用类型,该引用不可以再重新指向其他的java对象
但是final修饰的引用,该引用指向的对象的属性是可以修改的。
package com.bjpowernode.java_learning; public class D53_1_FinalKeywordAddition { public static void main(String[] args) { final Customer53 c1 = new Customer53("Jack",45); // c1 = new Customer53("liuming",45); //这个语句报错,这是因为final关键字修饰了c1这个变量 // 我们当然不能再将它进行赋值了,但是下面的对c1中的属性进行赋值就是可以的 c1.name = "jfaolj"; } } class Customer53 { String name; int age; Customer53(String name,int age){ this.name = name; this.age = age; } }
运行不会报错。
三、设计模式
1.设计模式:可以重复利用的解决方案
2.设计模式从结构 上可以分为三类:创建型、结构型、行为型
3.单例模式
(1)单例模式是23种设计模式中最简单的一种设计模式
(2)为了解决什么问题呢?
为了保证JVM中某一个类型的java对象永远只有一个;为了节省内存的开销
(3)实现单例模式的方法
i.构造方法私有化
ii.对外提供一个公开的静态的获取当前类型对象的方法
ii.对外提供一个当前类型的静态变量。
package com.bjpowernode.java_learning; public class D53_2_SingletonMode { public static void main(String[] args) { Singleton53 s1 = Singleton53.getInstance(); Singleton53 s2 = Singleton53.getInstance(); System.out.println(s1==s2);//返回结果是true,说明这两个对象是同一个对象,这就达到了我们的目的 } } class Singleton53{ private static Singleton53 s;//这个很关键,因为静态变量是存储在方法区内存的,这里的s一旦被赋值了,就不会变了 //第二次调用这个类不会执行这段语句语句因为第一次调用类之前已经创建,第一次调用类改变了它,就一直不用变了 //将构造方法私有化 private Singleton53() { } //对外提供一个公开获取Singleton对象的方法 public static Singleton53 getInstance() { if(s==null) { s = new Singleton53(); } return s; }//这里必须是静态方法,如果是实例方法,我们对象都不能在外面创建,那么如果调用这个方法呢? }
四、源码:
D53_1_FinalKeywordAddition.java
D53_2_SingletonMode.java
地址:
https://github.com/ruigege66/Java/blob/master/D53_1_FinalKeywordAddition.java
https://github.com/ruigege66/Java/blob/master/D53_2_SingletonMode.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
Java连载53-单例模式初步、final关键字补充、回顾知识点的更多相关文章
- JAVA核心技术I---JAVA基础知识(单例模式和final关键字)
一:单例模式 C++设计模式中提及,不再赘述设计模式---对象性能模式之单例模式(Singleton) public class single{ static single Instance=new ...
- java基本数据类型总结 类型转换 final关键字的用法
java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...
- Java&&As3.0 中的final 关键字
Java和AS3.0关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. 可以修饰的对象: fin ...
- 夯实Java基础(九)——final关键字
1.前言 Java语言中的final关键字,想必大家都不是很陌生,我们自己用的最多的应该是用来定义常量吧,那么今天我们就来了解final这个关键字的用法,这个关键字还是非常简单的. final从字面意 ...
- Java中的static、final关键字
static static 的含义是静态的,是一个静态修饰符,一般来说,被static修饰的有以下几种,类.变量.方法.代码块. static修饰类 Java中普通的类是不允许被声明为静态的,但是有一 ...
- java中的static和final关键字
一:static 1)修饰成员变量: static关键字可以修饰成员变量,它所修饰的成员变量不属于对象的数据结构,而是属于类的变量,通常通过类名来引用static成员. 当创建对象后,成员变量是存储在 ...
- Java连载5-标识符、关键字和字面值
一.标识符 1.标识符定义:在java源程序中凡是可以自己命名的单词 2.标识符可以标识什么元素? (1)类名(2)方法名(3)变量名(4)接口名(5)常量名 等等 3.标识符的命名要求 (1)一个合 ...
- Java第十一天,final关键字的使用规则
final 最终的.不可改变的. 用法: 修饰类 修饰方法 修饰成员变量 修饰局部变量 注意事项: 对于类和方法,final和abstract不能同时修饰使用. 对于基本类型来说,不可变是说值不可变: ...
- final关键字(最终的)
1.fianl关键字可以用来修饰类.属性.方法: 2.final关键字修饰的类不能再继承: 如:String String类是final修饰的类不能被继承 3.final关键字修饰的方法不能被重写 ...
随机推荐
- 【Gradle】Android Gradle 多渠道构建
Android Gradle 多渠道构建 多渠道构建的基本原理 在Android Gradle中,定义了一个叫Build Variant的概念,一个Build Variant=Build TYpe+P ...
- Windows 2012 R2 安装RD服务
默认只能同时允许2个用户连接,如果希望更多用户同时连接服务器,需要开启并激活远程桌面服务.参考:https://jingyan.baidu.com/article/9f7e7ec0f5a8686f28 ...
- Linux(Centos7)下redis5集群搭建和使用
1.简要说明 2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂 ...
- MySQL 8.0部分弃用的参数整理
最近整理了一下MySQL 8.0的自动化安装,其中用到了一个MySQL 5.7版本的自定义配置文件,由于没有对(MySQL 8.0)做针对性修改,导致安装过程中出现了一些错误其中部分原因就是MySQL ...
- 浅谈——MySQL存储引擎
博文大纲: 一.MyISAM存储引擎: 二.InnoDB存储引擎: 三.Memory存储引擎特点: 四.如何选择合适的存储引擎? 前言 数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使 ...
- 表单生成器(Form Builder)之伪造表单数据番外篇——指定范围随机时间
为了伪造一些尽量真实的假数据,也真是够费劲的.上一篇笔记记录了一下获取一个随机车辆牌照,这篇笔记记录一下怎么获取一个随机时间.这篇就不说那么多废话了,直接上代码 // 获取指定范围的随机数 var g ...
- 《推送开发全面盘点当前Android后台保活方案的真实运行效果》
登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页 即时通讯网›专项技术区›推送开发全面盘点当前Android后台保活方案的真实运行效果(截止2 ... 帖子 打赏 分 ...
- Linux & Go & Vscode & 插件
Linux Deepin 安装Go 安装Go环境 sudo apt-get install golang 验证一下: 输入 $ go env 输出 GOARCH="amd64" G ...
- java之父类中的构造器是否能被子类继承?
子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器.子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器.如果父 ...
- Java生鲜电商平台-电商起送价的深入思考与实战
Java生鲜电商平台-电商起送价的深入思考与实战 说明:在生鲜电商中,起送价是一个非常普遍的话题,今天我们就用实战来告诉大家,如何设置起送价,如何编写起送价的代码,以及如何同步起送价. 在开始题目之前 ...