Java String类为什么用final修饰?

很多人都知道String类是final修饰的,但是可能不太清楚为啥用final修饰,以及用final修饰的好处。

Java

Java不可变类型

一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。 可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。 二、不可变类的优点不可变类有两个主要有点,效率和安全。 效率 当一个对象是不可变的,那么需要拷贝这个对象的内容时,就不...
Java

Collection-ArrayList源码解析

本文转载与 Java全栈体系Collection - ArrayList 源码解析

Java

Java线程安全的集合类

一、早期线程安全的集合我们先从早期的线程安全的集合说起,它们是Vector和HashTable 1.VectorVector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所以现在Vec...
Java

字节码增强技术探索

转载于美团技术团队字节码增强技术探索

Java

Java泛型以及类型擦除

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。

Java

浅谈StringBuilder和StringBuffer的区别

String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

Java

Java中父类和子类的加载顺序

加载顺序:父类静态属性(成员变量) > 父类静态代码块 > 子类静态属性 > 子类静态代码块 > 父类非静态属性 > 父类非静态代码块 > 父类构造器 > 子类非静态属性 > 子类非静态代码块 > 子类构造器

Java

JVM调优(二)

JVM调优相关步骤

Java

try-catch与throw的区别

简述try-catch与throw的区别。

Java