JavaSE相关问题

Java的基本数据类型

  • 4类8种:
    • 整 型: byteshortintlong
    • 浮点型: floatdouble
    • 布尔型: boolean
    • 字符型: char

image-20211003090627324

String底层使用的是char数组还是byte数组?

JDK1.8及以前,底层是char类型的数组:

image-20211003091101675

JDK1.9及以后,底层是byte类型的数组:

image-20211003091141139

这是因为开发人员发现人们使用的字符串值是拉丁字符居多,之前使用的char数组每一个char占用两个字节,而拉丁字符只需要一个字节就可以存储,剩下的一个字节就浪费了,造成内存的浪费,gc得更加频繁。因此在jdk9中将String底层的实现改为了byte数组。

类加载时的执行顺序

  1. 父类静态变量、静态代码块
  2. 子类静态变量、静态代码块
  3. 父类普通变量、代码块
  4. 父类构造方法
  5. 子类普通变量、代码块
  6. 子类构造方法

面向对象的特性及基本原则

四大特性

封装

封装是保证软件部件具有优良的模块性的基础,目标是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。

带来的好处:

  1. 提高代码的复用性;
  2. 隐藏了实现的细节,对外提供一个公共的访问方式;
  3. 提高了安全性。

继承

在一个现有的类的基础上构建一个新的类,构建的新的类被称作子类,现有的类被称为父类。

优点:

  1. 提高代码复用性;
  2. 使类与类之间产生了关系,提供了多态的前提。

缺点:

  1. 类与类之间产生了耦合,不符合OOP的开发原则。

多态

同一个行为具有多种不同的形态,多态是指子类对象可以直接赋给父类变量(父类引用指向子类对象),但运行时依然表现出子类的行为特征,也就是说,同一类型的对象在执行同一个方法时,可能表现出多种行为特征。

使用多态的三个前提:

  1. 语法上:父类引用指向子类对象
  2. 必须存在继承或实现关系
  3. 必须有方法的重写

优点:

  • 隐藏了子类的类型,提高了代码的扩展性。

缺点:

  • 只能使用父类共性的内容,无法使用子类独有的功能,存在功能上的限制。

抽象

抽象是通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。

五大基本原则

  1. 单一职责原则:每一个类,功能要求单一,只负责一件事
  2. 开放封闭原则:对修改关闭,对扩展开放
  3. 里氏替换原则:子类能够替换父类,能够出现在父类出现的任何地方
  4. 依赖倒置原则:具体依赖抽象,上层依赖下层
  5. 接口分离原则:接口中的方法要尽量细化,同时接口中的方法尽量的少

Singleton单例设计模式

单例的概念

  • 单例模式最初的定义出现于《设计模式》(艾迪生维斯理,1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
  • Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供”。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。

单例的特点

  • 单例类只能有一个实例
  • 单例类必须自己创建自己的唯一实例
  • 单例类必须给所有其他对象提供这一实例

单例模式类图

image-20211003093350048

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值