源码-JDK1.7中java.lang.String类的toCharArray方法注释:不能用Arrays.copyOf实现?求解惑

问题描述

JDK1.7中java.lang.String类的toCharArray方法注释:不能用Arrays.copyOf实现?求解惑
JDK1.7重新设计了String类,各个String对象各自维护一个属于自身的char数组,下面是该类中的toCharArray方法的实现源码:
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value 0 result 0 value.length);
return result;
}
这个方法中有一段注释,说不能使用Arrays.copyOf方法来实现,请问为什么?在下不太明白注释中的解释,还请高手指教:)。
另外,在String的以char[]为参数的构造方法中却正常地使用了Arrays.copyOf方法。源码如下:
public String(char value[]) {
this.value = Arrays.copyOf(value value.length);
}
为什么toCharArray不能用Arrays.copyOf来实现?为什么构造方法就可以了呢?请高人解惑呀:)。

时间: 2025-01-08 04:13:47

源码-JDK1.7中java.lang.String类的toCharArray方法注释:不能用Arrays.copyOf实现?求解惑的相关文章

Java中java.lang.Void类学习笔记

在阅读JDK源代码的时候发现了有Void这么个类,Void类是一个不可实例化的占位符类,它持有对标识Java关键字void的Class对象的引用. Void的类定义如下: package java.lang; public final class Void {   private Void() {   }   public static final Class TYPE = Class.getPrimitiveClass("void"); } 我是在看ThreadGroup类的源码时发

java中JSONException: java.lang.String cannot be converted to JSONObject

在Android系统中进行JSON解析时碰到以下问题: org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject 使用Notepad++设置文件编码时,采用utf8编码,出现上面的问题.原因是文件中包含了utf8 bom头信息.采用utf8无BOM格式编码的形式即可. 具体设置,查看下图: 补充:   bom格式处理  代码如下 复制代码 String st="utf-8的

Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String'

一.发现问题 <select id="queryStudentByNum" resultType="student" parameterType="string">   select num,name,phone from student  <where> <if test = " num!=null and num!='' ">AND num = #{num}</if><

java.lang.String的cloassloader为null的原因

问题描述 本意是取自定义对象的classloader,但由于参数错误,传入了一个string对象.发现String对象调用getClassLoader()的返回为null.查看了JDK1.6的源码,对getClassLoader()的说明如下:"If this object represents a primitive type or void, null is returned."JDK官网对primitive type[即基本类型]的解释在这里:http://docs.oracle

调用注册时出错【版本easemobchat_2.2.6.jar,报java.lang.String com.easemob.chat.core.j$c.c】

问题描述 报错:Attempt to read from field 'java.lang.String com.easemob.chat.core.j$c.c' on a null object reference 源码: 解决方案 注册中的toast操作在ui线程中执行

Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property &#039;xxx&#039;: no matching editors or conversion strategy found

今天在完成项目的时候遇到了下面的异常信息: 04-Aug-2014 15:49:27.894 SEVERE [http-apr-8080-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [cms] in context with path [/cms] threw exception [Request processing failed; nested excep

从源码看Android中sqlite是怎么读DB的(转)

执行query 执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询. (query的源码追踪路径) 执行move(里面的fillwindow是真正打开文件句柄并分配内存的地方) 当执行Cursor的move系列函数时,第一次执行,会为查询结果集创建一块共享内存,即cursorwindow moveToPosition源码路径   fillWindow----真正耗时的地方 然后会执行sql语句,向共享内存中填入数据, fillWindow源码路径 在SQLi

安卓开发闪退-安卓开发中java.lang.RuntimeException: Unable to start activity ComponentInfo问题

问题描述 安卓开发中java.lang.RuntimeException: Unable to start activity ComponentInfo问题 package com.example.test; import android.app.ActivityGroup;import android.app.LocalActivityManager;import android.content.Intent;import android.os.Bundle;import android.vi

android-Value ? of type java.lang.String cannot be

问题描述 Value ? of type java.lang.String cannot be public class Register_ extends Activity{ private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); EditText name; EditText password; Button login_button; private static String url = "htt