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关键字修饰的方法不能被重写 ...
随机推荐
- 解决:target overrides the `GCC_PREPROCESSOR_DEFINITIONS`
[!] Please close any current Xcode sessions and use `******.xcworkspace` for this project from now o ...
- Violet音乐社区 - 个人总结报告
一.项目概述 1.1 项目背景 音乐是一门艺术,是由有组织的乐音来表达人们情感.反映人类现实生活情感的艺术.现代科技的发展使得人们可以利用网络随时随地的享受音乐,然而在当今互联网却很少有一个以音乐为媒 ...
- 数据库表数据统计及数据表的数据大小统计SQL
USE [YourDBName] -- replace your dbname GO SELECT s.Name AS SchemaName, t.Name AS TableName, p.rows ...
- [20191125]oracel SQL parsing function qcplgte 2.txt
[20191125]oracel SQL parsing function qcplgte 2.txt --//参考前面的测试:http://blog.itpub.net/267265/viewspa ...
- Java之Collection接口(单列集合根接口)
集合概述 集合到底是什么呢?集合:集合是java中提供的一种容器,可以用来存储多个数据 集合和数组既然都是容器,它们有啥区别呢? 区别1: 数组的长度是固定的. 集合的长度是可变的. 区别2: 数组 ...
- (day68)Vue-CLI项目、页面跳转和传参、生命周期钩子
目录 一.Vue-CLI (一)环境搭建 (二)项目的创建 (三)项目目录结构 (四)Vue组件(.vue文件) (五)全局脚本文件main.js(项目入口) (六)Vue请求生命周期 二.页面跳转和 ...
- js获取input checkbox的选中值
HTML代码: <form action="/test/action" method="get"> <input type="che ...
- 【RTOS】基于V7开发板的最新版uCOS-III V3.07.03程序模板,含MDK和IAR,支持uC/Probe,与之前版本变化较大
模板下载: 链接:https://pan.baidu.com/s/1_4z_Lg51jMT87RrRM6Qs3g 提取码:2gns 对MDK的AC6也做了支持:https://www.cnblog ...
- 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...
- 死磕 java线程系列之线程的生命周期
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的. 常见的错 ...