专栏首页爱明依jdk源码系列:String为啥是不能有子类?以及内内部实现

jdk源码系列:String为啥是不能有子类?以及内内部实现

版权声明:欢迎关注博主公众号:矿洞程序员 https://blog.csdn.net/qq_32423845/article/details/89336320

public final class String implements java.io.Serializable,Comparaable<String>,CharSequence{
	
	private final char value[];
	
	private int hash;
	
	private static final long serialVersionUID=-6849794470754667710L;
	
	private static final ObjectStreamField[] serialPersistentField=new ObjectStreamField();

如上图所示,String 类声明为final ,所以不能有子类。有个核心全局变量 char value[]  整个字符串的操作基本围绕其展开。

构造器提供了好多。如下图:

public String(){
		this.value="".value;
	}
	public String(String original){
		this.value=original.value;
		this.hash=original.hash;
	}
	
	public String(char value[]){
		this.value=Arrays.copyOf(value,value.length);
	}
	
	public String(char value[],int offset,int count){
		if(offset<0){
			throw new StringIndexOutBoundsException(offset);
		}
		if(count<=0){
			if(count<0){
				throw new StringIndexOutOfBoundsException(count);
			}
			if(offset<=value.length){
				this.value="".value;
				return;
			}
		}
		//Note:offset or count might be -1>>>1
		if(offset>value.length-count){
			throw new StringIndexOutBoundsException(offset+count);
		}
		this.value=Arrays.copyOfRange(value,offset,offset+count);
	}

只是列举了一部分。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jdk源码系列:String判断两个字符串是否相等以及忽略大小写相等的实现

    版权声明:欢迎关注博主公众号:矿洞程序员 https://blog.csdn.net/qq_...

    爱明依
  • apache shiro 在spring 的使用

     <!-- SECURITY begin -->         <dependency>             <groupId>org.apache....

    爱明依
  • java使用jedis操作redis

    爱明依
  • lodash 是如何做类型检测的

    JS 的基本数据类型有 Number,String,Boolean,Symbol,Null,Undefined,六种数据类型。一种引用类型 object。

    Javanx
  • 大众点评App的短视频耗电量优化实战

    前言 美团点评测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试。现在大家对手机越来越依赖,而上面各App的耗电量,直...

    美团技术团队
  • 解决js url传值中文乱码问题

    KenTalk
  • 高流量站点NGINX与PHP-fpm配置优化

    使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。 以下正是这方面的一些提示和建议: 1. 将TCP切换为...

    小小科
  • 关于 python 中使用 lambda 表达式的问题

    --------------------------------  def doLambda(val):   print "value 2:", val ...

    田春峰-JCJC错别字检测
  • AppScan安全漏洞说明及解决方案

    解决方案:向所有会话cookie 添加HttpOnly属性 ,可以在过滤器中统一添加。

    java乐园
  • 排序算法-冒泡排序

    排序算法-冒泡排序 <?php /** * 冒泡排序 * * @param array $value 待排序数组 * * @return array...

    琯琯

扫码关注云+社区

领取腾讯云代金券