美文网首页
String是一个很普通的类

String是一个很普通的类

作者: 会飞嘚蜗牛 | 来源:发表于2020-02-29 17:27 被阅读0次

上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一个类,没有之一,今天我们就讲讲它,我们打开String这个类的源码:

声明了一个char[]数组,变量名value,声明了一个int类型的变量hash(hash的作用我们后续会讲),话不多说,上代码:

我们点开构造函数看一下:

多年以前,我看到这段代码时我是懵逼的,没错,我现正在准备构造一个String的对象,那original这个对象又是从何而来?是什么时候构造的呢?

在Java中,当值被双引号引起来(如本示例中的"abc"),JVM会去先检查看一看常量池里有没有abc这个对象,如果没有,把abc初始化为对象放入常量池,如果有,直接返回常量池内容。下图是预先处理String str = new String("abc")的参数"abc"

接下来处理new关键字,在堆内存中开辟空间,由于hash这个字段是int类型的,成员变量初始化默认值为0。

处理构造函数逻辑,hash是值类型,直接赋值,数组为引用类型,直接指向地址。

继续上图

最后执行String str2 = new String("abc"),结果如下图:

利用IDE的debug功能看一下,char数组里已经有了'a','b','c'这些值。

下面我们来看一下String这个类下面这些常用的API是如何实现的:

很简单对吧,可怕的不是源码难读,而是不想,害怕去读源码的心。如果文章得到了你的认可,请为我的文章点赞,你的赞同是我继续下去的动力。

转载出自:https://zhuanlan.zhihu.com/p/27626724

相关文章

  • String是一个很普通的类

    上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一...

  • String是一个很普通的类

    上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一...

  • Kotlin基础之函数

    普通函数 fun name(str : String) : String { }fun 函数名(参数名 : 参数类...

  • Java 基础 28 String类

    1.1 String类概述   通过JDK提供的API,查看String类的说明 "abc"是String类的一个...

  • Java之String类

    String 1. String类基本特性 String类再Java类中也是一个很重要的类,String类的对象是...

  • 从String.intern()方法浅谈堆中常量池

    简介 ​ String是我们最常用的一个类,和普通java类一样其对象会存在java堆中。但是Stri...

  • 由hashCode()引发的一系列思考

    hashCode()方法实现 hashCode()属于String类,String类是一个被final修饰的类 当...

  • 2020-06-11常用数据集合List,Map,Set

    开始之前,先讲一个String字符串类型,看到String,大家觉得它是一个类,还是一个普通的数据类型呢???从写...

  • 2018-09-18 数组API

    1:String:类是不可变的,对String类的任何改变,都是返回一个新的String类对象.这样的话把Stri...

  • String大揭秘

    String类源码: 由源代码可见,String类是final修饰的,即不可变类。一旦一个String对象被创建以...

网友评论

      本文标题:String是一个很普通的类

      本文链接:https://www.haomeiwen.com/subject/gvhmhhtx.html