Java基础学习汇总

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java基础学习汇总脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

主要学习自:https://www.pdai.tech/md/java/basic/java-basic-lan-basic.htML;附加一些其他文章参考引用和个人碎片式总结。

Java—面向对象:

三大特性:封装、继承、多态。

封装:用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象、PRivate 修饰类中的属性,4种修饰符。

继承:继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。只能继承一个父类,但可以实现多个接口。

多态:多态分为编译时多态和运行时多态。编译时多态主要是方法的重载;运行时多态主要是继承,重写、向上转型:https://www.cnblogs.COM/chanchan/p/7787453.html

Java—知识点

数据类型

整型:byte 1个字节 范围在(-128~127) 、short 2个字节 范围在(-2^16~2^16-1)、int 4个字节 范围在(-2^32~2^31-1)、long 8个字节 范围在(-2^63~2^63-1)

浮点型:float 4个字节 范围在(-3.4*10^-45~3.4*10^38)、double 8个字节 范围在(-1.79*10^-308~1.79*10^308)

字符型:char 1个字节 范围在(0~65535)

布尔类型:boolean (true/false)

基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。

Integer x = 2; // 装箱int y = x; // 拆箱

缓存池

编译器会在缓冲池范围内的基本类型自动装箱过程调用 valueOf() 方法,因此多个 Integer 实例使用自动装箱来创建并且值相同,那么就会引用相同的对象。

String

被声明为final,不可被继承,不可修改。private final char value[];

  • 不可变的好处:
  1. 可以缓存 hash 值
  2. String Pool 的需要
  3. 安全性
  4. 线程安全
  • 对比StringBuffer和Stringbuilder:
  1. StringBuffer和StringBuilder是可变的,都使用可变长的char[]存储数据
  2. StringBuilder是非线程安全的
  3. String因为不可变所以线程安全、StingBuffer内部使用Sychronized同步

String.intern()可以保证相同内容的字符串变量引用同一的内存对象。

存储位置:Java7之前,字符串常量池在运行时常量池中,之后放在本地方法区,在堆中。

另外一篇从JVM存储角度分析String类的文章:https://bLOG.csdn.net/QQ_41907991/article/details/106799400

参数传递

Java中参数以值传递形式传入方法。比如传递对象时传入的是对象的地址的值传给了形参,方法内是一个新的对象。

抽象类

抽象类和接口:

  1. 接口的字段都是public、static和final;
  2. Java7之前接口的方法都不能有方法体,Java8之后可以有;
  3. 子类只能继承一个抽象类而实现多个接口;

抽象类和普通类:

  1. 抽象类使用abstract声明,
  2. 不能实例化,
  3. 包含抽象方法和非抽象方法,或者无方法
  4. 子类必须重写抽象类所有抽象方法(满足里氏替换原则,即:子类用到的地方,父类也能用。

suPEr可以访问父类的构造函数,成员,包括属性和方法

重写发生在继承关系中的子类里,方法的访问权限和返回值的范围都要大于等于父类;重载发生在同一个类中,方法名和返回值相同,但参数的类型,个数,顺序有所不同

Object通用方法:

public final native Class<?> getClass()

public native int hashCode()

public boolean equals(Object obj) 引用比较和值比较

protected native Object clone() throws CloneNotSupportedException 浅拷贝和深拷贝:区别在于是否在堆中生成新的对象内容。

最好不要去使用 clone(),可以使用拷贝构造函数或者拷贝工厂来拷贝一个对象。Effective Java

public String toString()

public final native void notify()

public final native void notifyAll()

public final native void waIT(long timeout) throws InterruptedException

public final void wait(long timeout, int nanos) throws InterruptedException

public final void wait() throws InterruptedException

protected void finalize() throws Throwable {}

反射

各种框架中都用到反射来达到通用的目的。分享一下:https://www.sczyh30.com/posts/Java/java-reflection-1/

异常

try-catch、throws、throw

泛型(暂)

&nbsp;https://www.cnblogs.com/coprince/p/8603492.html

注解(暂)

https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html

SPI机制(破坏了双亲委派模型)

 

脚本宝典总结

以上是脚本宝典为你收集整理的Java基础学习汇总全部内容,希望文章能够帮你解决Java基础学习汇总所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。