本文主要解决以下几个问题 String源码解析? String和new String的区别? String通过"+"或concat累加时的对象创建机制? StringBuilder和StringBuffer?区别和联系? String源码解析 String类的定义 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ...... } 通过上…
Java基础之String.StringBuffer.StringBuilder浅析 一.前言: 位于java.lang包下的String.StringBuilder.StringBuffer一般都是用来操作字符串的,这三个类都被final关键字修饰,不能被继承 相关的API我们可以在这里查看:https://docs.oracle.com/javase/8/docs/api/index.html 首先说明: String:字符串常量 StringBuffer:字符串变量(线程安全的) Stri…
Java基础之多态和泛型浅析 一.前言: 楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结 二.什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口(这里所谓的接口是楼主自己发明的,这里不是局限于Java的interface,可以把它看作为广义定义的对象源)的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据…
Java基础之Collection与Collections浅析 一.前言: 位于Java.util包下的Collection与Collections都是Java中重要的工具类,它们都是Java集合框架的成员,这俩个类对于Java基础不太好的朋友来说很容易搞混,现在我对其做一简单辨析 二.Collection简单介绍: 2.1Collection概述 Collection是Java集合框架的顶级接口(注意:它是一个接口),继承了Iterable接口 它提供了对集合对象进行基本操作的通用接口方法.C…
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量/方法,都需要在类信息已经加载进入内存的前提下.在Java虚拟机规范中,类加载过程也就是类的生命周期包括7个部分:加载.验证.准备.解析.初始化.使用.卸载.不过我们先不写这几个阶段,先讲讲类加载器的知识,然后再来看具体的类加载过程. 1. 类加载器 关于类加载器,我主要关注两个方面,一是类加载器的…
String 相关知识点总结 字符串的不可变性 概述 String 被声明为 final,因此它不可继承 在 Java8 中,String 内部使用 char 数组存储数据 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char v…
无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识点还是比较多的.今天就和大家来一起讨论一下,关于String的一些容易让人疑惑的地方,废话不多说进入正题...如有谬误请批评指正,如果有疑问请留言.我会在第一时间修改或回答 通过本篇博客你将学到以下知识 ①==和equals的区别,String a="abc"和String a=new S…
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的一个系统级线程会自动释放该内存块.垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃.当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用.事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片.由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,…
String String 被声明为 final,因此不能被继承.(Integer 等包装类也不能被继承) 在 java8 中,String 内部使用 char 数组 来存储数据 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final cha…
JVM运行的时候,将内存分为两个部分,一部分是堆,一部分是栈.堆中存放的是创建对象,而栈中存放的则是方法调用过程中的局部变量或引用.在设计JAVA字符串对象内存实现的时候,在堆中又开辟了一块很小的内存,称之为字符串常量池,专门用来存放特定的字符串对象的. 例如: String s1="JavaSE6.0"; //存放在字符串常量池中.性能高 String str = new String("JavaSE6.0"); //存放在堆中 s1==str ; //返回fal…