栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java初学笔记11

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java初学笔记11

Java初学笔记11
  • 1 类变量(静态变量)
  • 2 类方法(静态方法)
  • 3 深入理解main方法
    • IDEAmain方法传参步骤:
  • 4 类什么时候被加载?
    • 类成员的练习题
  • 5 代码块
    • 1. 静态代码块
    • 2. 普通代码块
    • 码块练习题
  • 6 创建一个对象,在一个类中(静态部分,非静态部分,构造器)调用顺序【无继承】
  • 7 创建一个子类对象,在一个类中(静态部分,非静态部分,构造器)调用顺序【有继承】
  • 8 什么是设计模式?
  • 9 什么是单例设计模式?
  • 10 单例模式---饿汉模式
  • 11 单例模式---懒汉模式
  • 12 饿汉与懒汉的比较

1 类变量(静态变量)

(1)不管static变量实际存放在哪,static变量都是被同一个类下的所有对象所共有的
(2)static变量是类加载的时候就生成了
(3)定义:访问修饰符 static 数据类型 变量名
(4)访问方式:类名.类变量名 (推荐) 对象名.类变量名
(5)类变量的访问也要遵守访问权限
(6)生命周期:和类一样

static变量在内存中的示意图

2 类方法(静态方法)

(1)定义:访问修饰符 static 数据类型 方法名
(2)访问方式:类名.方法名 (推荐) 对象名.方法名
(3)类方法的访问也要遵守访问权限
(4)静态方法只能访问静态成员;普通方法,全部可以访问
(5)当方法中不涉及到任何与对象有关的成员时,可将方法设计成静态方法提高效率
(6)类方法中不能使用与对象有关的关键字,如,this,super。普通方法可以使用this,super。

3 深入理解main方法
public static void main(String[] args)
  1. java虚拟机JVM需要调用类的main()方法,所以该方法的访问权限必须是public
  2. java虚拟机在执行main)方法时不必创建对象,所以该方法必须是static
  3. 在main()方法中,我们可以直接调用main方法所在类的静态方法或静态属性。但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。
  4. 该方法接收String类型的数组参数,该数组中保存执行java命令时传递给所
    运行的类的参数,如下图所示
IDEAmain方法传参步骤:


2.
3.
4.

4 类什么时候被加载?

(1)用new创建对象时
(2)创建子类对象时,父类的类会被先加载
(3)直接使用类的静态成员时

类成员的练习题

1.
2.
3.

5 代码块

(1)定义:

[修饰符] { 代码块 };

有修饰符,只能写static -------> 静态代码块
无修饰符 -------> 普通代码块

(2)作用
可以作为初始化。例如,当构造器中有重复代码时,将重复代码放在普通代码块中。
(3)何时调用代码块?

1. 静态代码块

加载类的时候调用,且只执行一次。

2. 普通代码块

创建对象时候调用。且每创建一个对象,就执行一次。若只是使用类的静态成员,普通代码块不会被执行。

(4)静态代码块只能调用静态成员(静态属性和静态方法);普通代码块可以调用任意成员。
(5)构造器的最前面其实隐含了super()和调用普通代码块。
静态相关的代码块,静态的属性初始化,它们在类加载时,就执行完毕
,因此执行是优先于普通代码块和构造器。

码块练习题


6 创建一个对象,在一个类中(静态部分,非静态部分,构造器)调用顺序【无继承】
  1. 调用静态代码块和静态属性初始化
    (注意:静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)

  2. 调用普通代码块和普通属性的初始化
    (注意:普通代码块和普通属性初始化调用的优先级一样,如果有多个普通代码块和多个普通属性初始化,则按定义顺序调用)

  3. 调用构造方法

7 创建一个子类对象,在一个类中(静态部分,非静态部分,构造器)调用顺序【有继承】
  1. 父类的静态代码块和父类的静态属性初始化
    (注意:优先级一样,按定义顺序执行)

  2. 子类的静态代码块和子类的静态属性初始化
    (注意:优先级一样,按定义顺序执行)

  3. 父类的普通代码块和父类的普通属性初始化
    (注意:优先级一样,按定义顺序执行)

  4. 父类的构造方法

  5. 子类的普通代码块和子类的普通属性初始化
    (优先级一样,按定义顺序执行)

  6. 子类的构造方法

8 什么是设计模式?

(1)它是静态方法和静态属性的经典使用
(2)设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。

9 什么是单例设计模式?

单例(单个的实例)

  1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
  2. 单例模式有两种方式:(2)饿汉式(2)懒汉式
10 单例模式—饿汉模式
  1. 步骤
    (1)构造器私有化 --> 防止直接new
    (2)类的内部创建对象
    (3)向外暴露一个静态的公共方法 getlnstance
  2. 非饿汉模式 - 代码分析
  3. 饿汉模式 - 代码分析
11 单例模式—懒汉模式

12 饿汉与懒汉的比较
  1. 二者最主要的区别在于创建对象的时机不同:
    饿汉式是在类加载就创建了对象实例
    而懒汉式是在使用时才创建

  2. 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。

  3. 饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了;懒汉式是使用时才创建,就不存在这个问题。

  4. 在我们javaSE标准类中,java.lang.Runtime就是经典的单例模式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号