
Java基础强化
文章平均质量分 71
Java基础强化
程光CS
Auf dem Wasser zu singen, Op.72, D.774 - Auf dem Wasser zu singen, Op.72, D.774
展开
-
Java String类详解
## 一、如何理解String的不可变性### 1. 为什么String不可变- String字符串内部是由一个被private final修饰的字符数组实现的(java 9改成byte[] value实现了,但这不影响不可变性)- 且String内部没有对外暴露的修改这个数组内部元素的api- 并且String也被final修饰,这个字符数组不会被子类“遮蔽”故String对象中字符数组是无法通过常规手段修改的(反射除外),因此我们说String字符串是不可变的。>通过反射中的getDecl原创 2023-07-18 15:31:57 · 304 阅读 · 0 评论 -
Java IO流知识总结
IO 操作是很消耗性能的,如果一个字节一个字节的读取效率很低,缓冲字节流BufferedInputStream将数据加载至缓冲区,一次性可读取多个字节到一个数组中,从而避免频繁的 IO 操作,提高流的传输效率。:与缓存字节流稍有不同的是,缓冲字符流的读写方法通过synchronized锁方法内的代码块,锁对象为构造传入的Reader/Writer对象。:并且缓冲字节流的读/写方法通过synchronized关键字对方法加锁,保证了使用同一个缓冲字节流对象并发读/写时的线程安全。原创 2023-07-03 18:07:51 · 184 阅读 · 0 评论 -
Java中抽象类与接口的区别
**相同点**:1. 都不能实例化2. 都可以定义抽象方法3. 都可以定义成员方法,接口中成员方法要用default修饰4. 都可以定义静态方法,但接口中的静态方法只能通过接口访问,无法通过实现类访问**不同点**:1. 抽象类只能继承自一个抽象类,接口可以extends多个接口2. 抽象类中可以定义构造/静态代码块,接口中不能3. 抽象类中可以定义普通成员变量;接口中定义的变量是默认用public static final修饰的(无论有没有显示指定),且必须初始化4. 抽象类中的变量和原创 2023-07-03 18:09:47 · 183 阅读 · 0 评论 -
Java反射详解
类加载时会根据class文件(其中包括字段表、方法表、属性表和常量池等信息)生成一个InstanceKlass对象(C++)存放在方法区,并在堆中生成一个唯一代表这个类的java.lang.Class对象,它们互相持有对方的引用。在程序代码中获取一个类的Class对象后,通过这个Class对象中的反射相关方法就可以获取到类的运行时结构体InstanceKlass中的信息,即可以获取一个类中的全部信息,并且可以调用类的实例中的属性和方法。原创 2023-07-02 16:43:25 · 1059 阅读 · 0 评论 -
Java中的static与final关键字
1、final 关键字可以用于修饰类、类变量、成员变量以及方法。2、final 成员变量,必须在声明的时初始化或者在构造器中初始化,否则报编译错误。3、final 变量不能再次赋值(引用类型指向的对象中的数据还是可以修改的);final 方法不能被重写;final 类不能被继承。4、在匿名类中声明的变量都必须是 final 变量。5、接口中声明的所有变量本身是 final 的。6、修饰类时final 和 abstract 这两个关键字是反相关的,final 类就不可能是 abstract 的。原创 2023-03-09 20:46:16 · 1015 阅读 · 0 评论 -
Java中的自动类型提升与强制类型转换
自动类型提升是指在程序**运行时**因为某种情况需要,JVM将较小的基础数据类型自动转换为较大的基础数据类型,以保证精度和正确性。在Java中,需要进行类型提升的情况有以下几种:### 1. 运算时byte、short和char提升为int类型### 2. 运算时较小数值类型提升为较大范围数值类型### 3. 调用方法时实参提升为方法形参类型## 二、强制类型转换类型提升是自动将较小基础数据类型提升为较大基础数据类型,而强制类型转换是指程序员在代码中使用类型标识强制将较大基础数据类型转换为较小基础原创 2023-03-04 11:57:30 · 1684 阅读 · 0 评论 -
Java异常Throwable的分类
**编译时异常**:编译期就会检查的异常,若调用的方法中throw了此类异常,则必须进行显式处理处理(用try...catch捕获或者throws向上抛出),否则无法通过编译。常见的例如IOException、ClassNotFoundException等。**RuntimeException**:运行时异常,常见的比如空指针异常、访问越界异常。此类异常编译期不会检查,就算throw了不显式处理也能通过编译。若不显式处理 运行时遇到此异常则调用其内部默认的方法并打印出错误栈。原创 2023-02-27 22:06:31 · 893 阅读 · 0 评论 -
Java位运算符及应用
Java位运算符可直接应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型上,这些数据类型在进行位运算时会按照其实际的**二进制补码**表示进行计算,得到的结果也是一个补码 然后显示时再转换出的真值。例:原创 2023-02-27 21:59:45 · 1285 阅读 · 0 评论