前言

今天学姐教我们有关如何查看源代码的基本知识,我受益匪浅,接下来请允许我做一个陈述。

如何查看源代码

首先,打开你的IDEA,点击上方的“文件”,选择“项目结构”,点击“SDK”,你可以看到这些文件的具体路径。那么根据这些路径找到这些文件,再用IDEA打开。

还有一种,你可以在你安装IDEA的文件夹内,找到名为“lib”的文件夹,打开后即可看到名为“src.zip”的压缩包,可以将其解压,会出现名为“src”的文件夹,将其用IDEA打开,即可看到源代码。

一些代码的解释

有关源代码的解释,我的理解能力尚且不足,因此我只在能力范围内,尽量将其列举出来,仅供参考,还有一些是搜索后加上我的个人语言糅杂而成,如有错误,还请指出并谅解。(有些我其实闻所未闻,都是从其他大佬处照抄下来的,但好歹也能增长我的知识量)


public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence,Constable, ConstantDesc {

[String 类表示字符串。 Java 程序中的所有字符串文字,例如“abc”,都是作为此类的实例实现的。字符串是常量;它们的值在创建后无法更改。字符串缓冲区支持可变字符串。因为 String 对象是不可变的,所以它们可以被共享。]

final决定了String类是不可继承的且对象是不可变的

实现了java.io.Serializable、Comparable和CharSequence共3个接口

String实现了序列化的接口Serializable,也就是说String是支持序列化和反序列化的。

Comparable这个接口只有一个compareTo(T 0)接口,用于对两个实例化对象比较大小。

CharSequence这个接口是一个只读的字符序列。包括length(), charAt(int index), subSequence(int start, int end)这几个API接口,值得一提的是,StringBuffer和StringBuild也是实现了改接口。


@Stableprivate final byte[] value;

[该值用来字符串存储]

是final修饰的数组,说明在创建后就不可更改

(以前是char[]型的,现在则用byte数组存储数据)


private final byte coder;

[用于对值中的字节进行编码的编码标识符。此实现中支持的值为 LATIN1 UTF16]

因为使用byte数组来存储数据,所以需要指定字符串的编码


 private int hash;

[缓存字符串的哈希码]


private boolean hashIsZero;

[如果哈希值被计算为实际上为零,则缓存,使我们能够避免重新计算它。]


public String(char[] value, int offset, int count) {this(value, offset, count, rangeCheck(value, offset, count));}

[分配一个新字符串,该字符串包含来自字符数组参数的子数组的字符。 offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。子数组的内容被复制;随后对字符数组的修改不会影响新创建的字符串。]

String的一个构造方法

rangeCheck就是检查了一下越界的问题


String类的源码有些多,也有些难(至少对于我这个层次来说),因此我仅列举以上几个,更多的我还要去更深入的看看。

此博文到此结束,谢谢。

如何查看源代码及一些代码的解释相关推荐

  1. 怎么在Java里辨别小数_求教java中如何判断一个数是不是小数,求详细代码及解释...

    求教java中如何判断一个数是不是小数,求详细代码及解释 关注:62  答案:2  mip版 解决时间 2021-01-29 22:49 提问者孤酒醉人心 2021-01-29 03:13 求教jav ...

  2. 吴恩达机器学习 神经网络 作业1(用已经求好的权重进行手写数字分类) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  3. 吴恩达机器学习 逻辑回归 作业3(手写数字分类) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  4. 吴恩达机器学习 逻辑回归 作业2(芯片预测) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  5. HPatches数据集(图像匹配)---2关于评估代码的解释---和python画出结果

    关于画图: 参考: Matplotlib系列: https://blog.csdn.net/yuyh131/category_7823048.html 关于评估代码的解释: 我们先提前下载所有算法对数 ...

  6. 多层感知器用实际例子和Python代码进行解释情绪分析

    多层感知器用实际例子和Python代码进行解释情绪分析 多层感知器是一种学习线性和非线性数据之间关系的神经网络. 这是专门介绍深度学习系列的第一篇文章,深度学习是一组机器学习方法,其根源可以追溯到20 ...

  7. mips汇编代码示例解释_通过示例解释cosmosdb

    mips汇编代码示例解释 Since I'm going to be giving a spiel (or two) about Data and AI at Microsoft Ignite lat ...

  8. PointNet代码详细解释(Pytorch版本)

    pointnet.pytorch的代码详细解释 1. PointNet的Pytorch版本代码解析链接 2. 代码解释 2.1 代码结构思维导图 2.2 代码注释 2.2.1 build.sh 2.2 ...

  9. idea 注解制表符_第三天,IDEA基本语法,注释,数据类型(从代码上解释数据类型)...

    IDEA基础语法,注释,数据类型(从代码上解释数据类型) idea 简单快捷键 psvm 自动生成main方法 public static void main(String[] args) { } s ...

  10. 结合matlab代码案例解释ICA独立成分分析原理

    目录 介绍 什么是ICA? 对数据进行白化 ICA算法 ICA特性 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 关于ICA,可以查看Rose小哥之前分享的 ...

最新文章

  1. 开发你的第一个LYNC应用-第二部分
  2. win10使用WSL安装CentOS7
  3. Spring使用@Required注解依赖检查
  4. 5渲染判断if_React 16 渲染流程
  5. 孩子在华艺舞校的画画投稿-天女之梦
  6. java演练 猜奇偶小游戏开发 DB游戏必输的设计
  7. 11-6缓存雪崩优化
  8. JAVA封装,继承,多态详解
  9. 最新 9个免费建站空间 网站均免备案
  10. CSS 样式定义方式
  11. 暗影精灵5风扇怎么调_惠普暗影精灵5内部结构是怎么样的 他的散热效果好不好呢...
  12. 许鞍华新片《七里地》催泪 网友:看完想回家过年
  13. 设值单元格字体和背景色的颜色-实例
  14. 利用python做词频统计
  15. SHA256 算法实现
  16. fastjson:json数组遍历
  17. 如何生成Patch及打patch
  18. MySql基础篇——变量、流程控制与游标
  19. 【机器学习】EM 算法
  20. Creator2D横版游戏(2)背景图随主角移动 | 单独相机拍UI

热门文章

  1. java怎么才能学透彻?
  2. Ablation study消融实验
  3. python股票买卖问题_LeetCode-Python-714. 买卖股票的最佳时机含手续费
  4. 华为云服务器最新信息,查询云主机信息
  5. 原来连续查询mysql天数的sql语句这么简单呀
  6. 卡贴机变无锁教程_有锁机变无锁教程 教你轻松设置去掉卡贴有锁机变无锁完美4G...
  7. big_6d77fbb7bde4011fdf01df45fef8d0dd9ddcbdd5.jpg
  8. 问答搜索 全网搜索平台
  9. webservice 传输加密
  10. 【地理信息系统GIS】教案(七章全)第五章:空间数据查询与空间分析