一、回顾

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关键字补充、回顾知识点的更多相关文章

  1. JAVA核心技术I---JAVA基础知识(单例模式和final关键字)

    一:单例模式 C++设计模式中提及,不再赘述设计模式---对象性能模式之单例模式(Singleton) public class single{ static single Instance=new ...

  2. java基本数据类型总结 类型转换 final关键字的用法

    java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...

  3. Java&&As3.0 中的final 关键字

    Java和AS3.0关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率.   可以修饰的对象:   fin ...

  4. 夯实Java基础(九)——final关键字

    1.前言 Java语言中的final关键字,想必大家都不是很陌生,我们自己用的最多的应该是用来定义常量吧,那么今天我们就来了解final这个关键字的用法,这个关键字还是非常简单的. final从字面意 ...

  5. Java中的static、final关键字

    static static 的含义是静态的,是一个静态修饰符,一般来说,被static修饰的有以下几种,类.变量.方法.代码块. static修饰类 Java中普通的类是不允许被声明为静态的,但是有一 ...

  6. java中的static和final关键字

    一:static 1)修饰成员变量: static关键字可以修饰成员变量,它所修饰的成员变量不属于对象的数据结构,而是属于类的变量,通常通过类名来引用static成员. 当创建对象后,成员变量是存储在 ...

  7. Java连载5-标识符、关键字和字面值

    一.标识符 1.标识符定义:在java源程序中凡是可以自己命名的单词 2.标识符可以标识什么元素? (1)类名(2)方法名(3)变量名(4)接口名(5)常量名 等等 3.标识符的命名要求 (1)一个合 ...

  8. Java第十一天,final关键字的使用规则

    final 最终的.不可改变的. 用法: 修饰类 修饰方法 修饰成员变量 修饰局部变量 注意事项: 对于类和方法,final和abstract不能同时修饰使用. 对于基本类型来说,不可变是说值不可变: ...

  9. final关键字(最终的)

    1.fianl关键字可以用来修饰类.属性.方法: 2.final关键字修饰的类不能再继承: 如:String   String类是final修饰的类不能被继承 3.final关键字修饰的方法不能被重写 ...

随机推荐

  1. 第03讲 fragment

    Fragment 官网文档:https://developer.android.google.cn/guide/components/fragments 什么是Fragment 在手机上,Activi ...

  2. varnish实现缓存加速

    varnish实现缓存加速 一.采用varnish为nginx实现缓存加速1.实验环境:(1)一台varnish缓存服务器,一台nginx服务器(2)关闭防火墙和selinux2.配置varnish( ...

  3. RTP中的H264的SVC相关信息

    概览 本文简单的介绍了rtp中的h264的svc相关信息 h264的svc相关格式信息 从RTP Payload Format for H.264 Video可以看见264在rtp的传输过程中,在rt ...

  4. 如何完成述职报告或年终总结PPT

    对于我们 打工仔 职场人士来说,年有年度总结,月有月度报告,指不定有些小伙伴还会有周报和日报,不仅枯燥,而且浪费时间,头都要炸了 ,简直太有趣了呢. 所以,如何准确快速的写完述职报告呢? 这是个好问题 ...

  5. 安装swoole出现make报错的原因与解决方法

    安装swoole报错,错误信息如下: 报错原因 报错很明显,找不到 openssl/ssl.h ,首先要确认电脑上有没有安装 openssl Mac安装openssl 既然它找不到,那么就需要手动的指 ...

  6. 上手Neo4j

    Neo4j是什么 软件安装及常用的配置选项介绍 下载 wget https://neo4j.com/artifact.php?name=neo4j-community-3.5.3-unix.tar.g ...

  7. Java 添加Word页眉、页脚

    本篇文章将介绍通过java程序来添加Word页眉页脚的方法.鉴于在不同文档中,对页眉页脚的操作要求不同,文章将分别从以下几种情况来阐述: 1.添加页眉页脚 添加图片到页眉 添加文本到页眉 添加页码 2 ...

  8. SpringBoot打包为war包,并在tomcat中运行

    先看一下我创建的最简单的项目吧. controller类 @RestController public class TestController { @RequestMapping("ind ...

  9. .net core 反射的介绍与使用

      1. 概述反射 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象. 反射机制允许程序在执行过程中动态地添加各种功能.   2. Type类的介绍  是BCL(基 ...

  10. python跳出多重循环的方法

    方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 cla ...