String源码分析

最近开始阅读java底层的源码,是因为发现越到后面越发现读源码的重要性,真的很重要,不阅读源码,你会发现“路”越走越窄。

今天看到了String的这个构造方法,

 /*** Initializes a newly created {@code String} object so that it represents* an empty character sequence.  Note that use of this constructor is* unnecessary since Strings are immutable.*/public String() {this.value = "".value;}

 

刚开始一直不明白,

public String() {this.value = "".value;}
这段代码。
首先看它的变量,

 

this.value就不需要讲了,重点是不明白后面的这个"".value;

网上很多人说,这其实就是初始化赋值为空字符串,别人不说这个我也能知道,但关键是底层是怎么实现的呢?

刚开始,我也试着写过一样的代码,但是发现.value的时候抱错,网上说

/** The value is used for character storage. */private final char value[];

  这个是私有的,访问不了,依旧不明白到底是上面意思;下面我们来一段代码:

Class clazz = "".getClass();
System.out.println(""+"的class是:"+clazz);
Object o = clazz.newInstance();
Constructor declaredConstructor = clazz.getDeclaredConstructor(String.class);
Object o2 = declaredConstructor.newInstance("123123");
Field[] declaredFields = clazz.getDeclaredFields();
for (Field field: declaredFields){System.out.println("我是由"+""+"声明的对象我有字段:"+field);
}Field value = clazz.getDeclaredField("value");value.setAccessible(true);
Object o1 = value.get(o2);System.out.println(o1 instanceof  char[]);char[] o11 = (char[]) o1;
System.out.println((o11));
value.setAccessible(true);

  以上代码其实就是java的反射机制,后来才知道,这个位置其实通过反射机制实现的,可以理解为:

"".getClass.newInstance()  ---->Field.get("value") 来拿到field="value"的值。

 

转载于:https://www.cnblogs.com/ylht/p/11565619.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

575万奖金!2022年数学界「诺贝尔奖」发布,拓扑学大师获奖

来源:AI科技评论作者:西西编辑:陈彩娴3月22日晚,被誉为数学界「诺贝尔奖」的阿贝尔奖揭晓。2022年,挪威科学院决定将阿贝尔奖授予来自美国纽约市立大学研究生院的阿尔伯特爱因斯坦讲座教授、纽约州立大学石溪分校的教授…

为什么深度学习是非参数的?

来源:AI科技评论作者:Thomas Viehmann编译:钱磊编辑:陈彩娴今天我想要与大家分享的是深度神经网络的工作方式,以及深度神经与“传统”机器学习模型的不同之处。我的计划具体如下:首先简单地思考一下如何将问…

“一束光”让机器人也能拥有触觉?之江实验室这项技术惊艳世界

来源:浙江日报传递触觉的“特殊道路”我们对这个世界最初的感知通常是从触觉开始的——第一声啼哭之前,婴儿经历过诱发哭声的拍打;成长中提笔、拍球;生活中握手,敲击键盘,使用手机……触觉充斥着我们日常生…

图书管理系统~简单流程

1. 连接数据库 2. 路由url (网站目录) 2.1若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。(分组)2.2使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL中的值并以位置 参数传递给视图。在更高级的用法…

7年前轰动全球的Science论文,被发现可能搞错了

来源:iNature蛇是一个非常多样化和成功的群体,但它们的进化起源是模糊的。两条腿蛇的发现揭示了从蜥蜴到蛇的过渡,但没有描述过四条腿蛇,早期蛇的生态知之甚少。2015年7月24日,英国朴茨茅斯大学David M. Martill等人在…

Django - AJAX

一. JSON 什么是json? json指的是JavaScript对象表示法(JavaScript Object Notation)json是轻量级的文本数据交换格式独立于语言, 支持不同的编程语言具有自我描述性, 跟易理解合格的json对象: ["one", "two", "three"] { "one": 1, …

培育强人工智能的「ImageNet」:上海交大卢策吾组提出铰接物体知识库 AKB-48

来源:前沿科技编译:OGAI编辑:陈彩娴ImageNet 的出现极大推动了计算机视觉领域的发展。在通往强人工智能的路上,我们还需要考虑物体的外观、结构、物理性质、语义等因素。为此,上海交大卢策吾组近日重磅推出了大型真实世…

模块化认知:演化如何自下而上涌现出智能?

来源: 集智俱乐部作者:Michael Levin, Rafael Yuste译者:郭瑞东审校:刘志航、梁金 编辑:邓一雪 导语无论是聪明的人、哺乳动物、鸟类,还是细胞和组织、神经元网络、病毒以及蛋白质分子,在所有尺…

Stuart Russell:智能本质和人工智能安全的巨大挑战

斯图尔特罗素(Stuart Russell),加州大学伯克利分校计算机科学专业教授,著有人工智能领域“标准教科书”——《人工智能:一种现代化方法》(与谷歌研究主管Peter Norvig合著)来源:智能…

费马大定理:三百年数学圣杯的角逐

来源:和乐数学费马大定理,又被称为“费马最后的定理”。人类前赴后继挑战了三个世纪,多次震惊全世界,耗尽人类众多最杰出大脑的精力,也让千千万万业余者痴迷。费马大定理的故事与数学的历史有着千丝万缕的联系&#xf…

Django - Form和ModelForm

一. form介绍 1.生成页面可用的HTML标签 2. 提供input可以提交数据 3. 对用户提交的数据进行校验 4. 保留上次输入内容 5. 提供错误信息 二. 普通方式书写注册功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

人工智能,“抛弃”真实数据集?

来源&#xff1a;学术头条当前&#xff0c;人工智能技术已经应用在我们日常生活中的方方面面&#xff0c;比如人脸识别、语音识别、虚拟数字人等。但普遍存在的一个问题是&#xff0c;科研人员要想通过训练一个机器学习模型来执行某一特定任务&#xff08;比如图像分类&#xf…

Django - Cookie和Session

Django - Cookie和Session cookie Django中操作CookieCookie版登陆校验Session Django中Session相关方法Session流程解析Session版登陆验证Django中的Session配置Django - Cookie和Session cookie Cookie的由来 大家都知道HTTP协议是无状态的。 无状态的意思是每次请求都是独立…

一文说清AI智能平台

来源&#xff1a;海豚数据科学实验室有一天&#xff0c;小李的领导说&#xff1a;“我们要做AI平台&#xff01;”。虽然平台产品也不是新概念了&#xff0c;随着AI技术的成熟&#xff0c;AI平台产品也越来越多&#xff0c;但光凭做平台一句话&#xff0c;小李还是犯了难——大…

2D图像转3D仅需5秒,特斯拉的自动驾驶技术有救了?

来源&#xff1a;科技智谷编译&#xff1a;徐浩75年前&#xff0c;宝丽来相机拍摄出第一张即时照片&#xff0c;是人类第一次以逼真的二维图像快速捕捉三维世界&#xff0c;具有划时代的意义。今天&#xff0c;人工智能的研究人员正在进行相反的工作&#xff0c;力求在几秒钟的…

Django - 中间件

Django - 中间件 一. 什么是中间件 官方: 中间件是一个用来处理Django的请求和相应的框架级别的钩子, 他是一个轻量, 低级别的插件系统, 用于在全局范围内改变Django的输入和输出, 每个中间件都负责做一些特定的功能. 大白话: 中间件是帮助我们在视图函数执行之前和执行之后都可…

回答薛定谔问题: 生命是什么?自由能公式

来源&#xff1a;CreateAMind回答薛定谔的问题:自由能公式麦克斯韦詹姆斯德索莫拉姆斯泰德a,b,∗保罗本杰明巴德科克c,d,e,卡尔约翰弗里斯顿f,1加拿大魁北克蒙特利尔麦吉尔大学哲学系加拿大魁北克蒙特利尔麦吉尔大学精神病学系社会和跨文化精神病学分部c墨尔本大学心理科学学院…

AlphaCode能替代人类程序员吗?网友:被替代也挺好,这样就可以少写代码多开会了...

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;王强策划&#xff1a;冬梅本文属于我们的人工智能研究论文评论系列&#xff0c;这个系列旨在探讨人工智能领域的最新研究成果。DeepMind 是最新的人工智能研究实验室。它推出了一个可以生成软件源代码的深度…

Django - 内置admin

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件&#xff0c;使用方式有&#xff1a; Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件&#xff0c;使用方式有&#xff1a;复制代码依赖APP&#xff1a;django.contrib.authdjango.contri…

Auth认证模块

Auth认证模块 本文目录 1 Auth模块是什么2 auth模块常用方法3 扩展默认的auth_user表回到目录1 Auth模块是什么 Auth模块是Django自带的用户认证模块&#xff1a; 我们在开发一个网站的时候&#xff0c;无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用…