java 知识点突击-(131-140)

Posted 栗子~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 知识点突击-(131-140)相关的知识,希望对你有一定的参考价值。

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


java 知识点扫盲目录

https://blog.csdn.net/weixin_38316697/article/details/121991582

java 知识点突击-(131-140)

131 当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?

可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java 没有为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法没有声明为同步,即使你在使用共享数据 Java 照样会调用,而不会做检查是否安全,所以在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critial section access),如果方法不访问临界区(共享资源或者数据结构)就没必要声明为同步的。


132 什么是反射?

Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法。
Java反射机制主要提供了以下功能:

  • 在运行时判断任意一个对象所属的类

  • 在运行时构造任意一个类的对象

  • 在运行时判断任意一个类所具有的成员变量和方法

  • 在运行时调用任意一个对象的方法


133 包装类和基本属性的不同?

默认值不同:
包装类的默认值是null,而基本数据类型是对应的默认值(比如整型默认值是0,浮点型默认值是0.0)
存储区域不同:
基本数据类型是把值保存在栈内存里,包装类是把对象放在堆中,然后通过对象的引用来调用他们
传递方式不同:
基本数据类型变量空间里面存储的是值,传递的也是值,一个改变,另外一个不变,而包装类属于引用数据类型,变量空间存储的是地址(引用),传递的也是引用,一个变,另外一个跟着变。


134 包装类优点?

–应用层
controller 传过来的vo中的数值类型可以使用包装类。
好处,默认值为0,防止后续计算出现空指针风险。
–逻辑层
1、为了建立基本类型和引用类型之间的通信。
2、包装类可以让我们像操作对象一样操作基本数据。


135 既然有包装类,为什么不放弃基本类型?

1、基本数据类型就是纯粹的数据,没有封装在类中,所以没有方法,保留基本类型的好处就是,可以提高运算速度。
2、基本类型是java中最基本的数据类型。


136 什么是内部类?

内部类是一个类中定义的类,并且再内部类中不能定义静态成员。


137 内部类可以引用其他的包含类的成员吗?

只要不是静态内部类都可以。


138 匿名内部类可以继承其他类和实现其他接口吗?

可以,但必须是某个类的子类或者某个接口的实现类。


139 Java泛型的原理?什么是泛型擦除机制?

Java的泛型是JDK5新引入的特性,为了向下兼容,虚拟机其实是不支持泛型,所以Java实现的是一种伪泛型机制,也就是说Java在编译期擦除了所有的泛型信息,这样Java就不需要产生新的类型到字节码,所有的泛型类型最终都是一种原始类型,在Java运行时根本就不存在泛型信息。

类型擦除其实在类常量池中保存了泛型信息,运行时还能拿到信息,比如Gson的TypeToken的使用。

泛型算法实现的关键:利用受限类型参数

受限的类型参的作用是对泛型变量的范围作出限制, 格式
单一限制:
多种限制:<U extends A & B & C>
多种限制的时候,类必须写在第一个。


140 设计模式七大原则?

1)单一原则(Single Responsibility Principle):一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;

2)里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能;
(实际项目中,每个子类对应不同的业务含义,使父类作为参数,传递不同的子类完成不同的业务逻辑。

3)依赖倒置原则(dependence inversion principle):面向接口编程;(通过接口作为参数实现应用场景)
  抽象就是接口或者抽象类,细节就是实现类
  含义:
    上层模块不应该依赖下层模块,两者应依赖其抽象;
    抽象不应该依赖细节,细节应该依赖抽象;
通俗点就是说变量或者传参数,尽量使用抽象类,或者接口
【接口负责定义public属性和方法,并且申明与其他对象依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑】

4)接口隔离(interface segregation principle):建立单一接口;(扩展为类也是一种接口,一切皆接口)
   定义:
    a.客户端不应该依赖它不需要的接口;
    b.类之间依赖关系应该建立在最小的接口上;

简单理解:复杂的接口,根据业务拆分成多个简单接口;(对于有些业务的拆分多看看适配器的应用)

【接口的设计粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低】
5)迪米特原则(law of demeter LOD):最少知道原则,尽量降低类与类之间的耦合;

一个对象应该对其他对象有最少的了解

6)开闭原则(open closed principle):用抽象构建架构,用实现扩展原则
7) 组合/聚合复用原则
合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。


创作不易、点关注、不迷路

点击主页、更精彩 !!!

以上是关于java 知识点突击-(131-140)的主要内容,如果未能解决你的问题,请参考以下文章

算法手撕代码131~140

java 知识点突击-(121-130)

java 知识点突击-(101-110)

java 知识点突击-(171-180)

java 知识点突击-(161-170)

LeetCode刷题模版:131 - 140