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关键字修饰的方法不能被重写 ...
随机推荐
- [转]Python十个高大上的语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手.不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了.本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并 ...
- 【Objective-C】Objective-C语言的动态性
Objective-C语言的动态性主要体现在以下3个方面 (1)动态类型:运行时确定对象的类型. (2)动态绑定:运行时确定对象的方法. (3)动态加载:运行时加载需要的资源或者或代码模块. 一.动态 ...
- 一图了解 CODING 2.0:企业级持续交付解决方案
近日,CODING 在 KubeCon 2019 上海站上正式推出了 DevOps 的一站式解决方案:CODING 2.0. CODING 2.0 进行了产品.产品理念.功能.首页的升级,对用户服务进 ...
- 关于web.xml配置的那些事儿
参考文章:重新认识web.xml
- C++编译器优化技术:RVO、NRVO和复制省略
现代编译器缺省会使用RVO(return value optimization,返回值优化).NRVO(named return value optimization.命名返回值优化)和复制省略(Co ...
- 05-文档编辑与yum命令
一.Linux vi/vim vi是所有的Unix系统都会有,但是目前我们使用最多的是vim编辑器.vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性. vim是从vi发展出来的一个文本编辑 ...
- idea实战技巧
一.背景 为什么想写这个,因为编码一线更多的是实战,实战中,可能一个快捷键,一个小技巧,就能省很多时间. 本文会持续记录,持续更新. 二.技巧 1.全局替换(带正则) 场景是: 多profile的情况 ...
- SSM整合1(springMVC+mybatis)
整合目标:控制层采用springmvc.持久层使用mybatis实现 整合思路: Dao层: 1.SqlMapConfig.xml,空文件即可,但是需要文件头. 2.applicationContex ...
- 练手爬虫用urllib模块获取
练手爬虫用urllib模块获取 有个人看一段python2的代码有很多错误 import re import urllib def getHtml(url): page = urllib.urlope ...
- 使用PrintWriter完成写操作 ,实现简易记事本工具
package seday07; import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOExce ...