Topic: java中可不可以定义一个string 的长度? |
Print this page |
1.java中可不可以定义一个string 的长度? | Copy to clipboard |
Posted by: 67865695 Posted on: 2006-11-02 14:36 string 的长度可以用 length()来得出, 但能不能定义一个string 的长度?(暂时不设置string的值) 谢谢 |
2.Re:java中可不可以定义一个string 的长度? [Re: 67865695] | Copy to clipboard |
Posted by: cxp108 Posted on: 2006-11-03 08:58 如果你对JVM的机制有深入了解的话,你应该知道Java中的String 对象一旦生成,它就是完全不可变的,当你试图该变一个String时,其实JVM作的实际工作是重新生成一个String。 因此,设定String的长度意义不大。 |
3.Re:java中可不可以定义一个string 的长度? [Re: 67865695] | Copy to clipboard |
Posted by: shom0058 Posted on: 2006-11-03 09:47 同意二楼的看法,如果你想改变的话建议使用StringBuffer |
4.Re:java中可不可以定义一个string 的长度? [Re: 67865695] | Copy to clipboard |
Posted by: dejinzhao Posted on: 2006-11-05 08:04 不知道这个程序对你有无帮助:利用java的反射性能你可以改变对象的一切、无论是不是私有的还是公共的 public class TestString { public TestString() { try{ Class firstClass = String.class; java.lang.reflect.Field field=firstClass.getDeclaredField("count"); String myString=new String(); field.setAccessible(true); field.setInt(myString,5); //System.out.println(myString);现在调用该方法会发生如下异常 /** java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at java.lang.String.getChars(String.java:726) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:394) at java.lang.StringBuilder.append(StringBuilder.java:120) at fff.<init>(fff.java:22) at fff.main(fff.java:46) */ java.lang.reflect.Field newField=firstClass.getDeclaredField("value"); char[] ch={'t','h','i','s',' ','i','s',' ','s','t','r','i','n','g'}; newField.setAccessible(true); newField.set(myString,ch); field.setInt(myString,ch.length); System.out.println(myString); //运行后输出“this is string” }catch(Exception e){ e.printStackTrace(System.out); } } public static void main (String args[]) { new TestString(); } } |
5.Re:java中可不可以定义一个string 的长度? [Re: 67865695] | Copy to clipboard |
Posted by: dejinzhao Posted on: 2006-11-05 08:10 修改了疏忽处 public class TestString { public TestString() { try{ Class firstClass = String.class; java.lang.reflect.Field field=firstClass.getDeclaredField("count"); String myString=new String(); field.setAccessible(true); field.setInt(myString,5); System.out.println("myString.length()="+myString.length());//运行结果myString.length()=5 //System.out.println("myString="+myString);//现在调用该方法会发生如下异常 /** java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at java.lang.String.getChars(String.java:726) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:394) at java.lang.StringBuilder.append(StringBuilder.java:120) at TestString.<init>(fff.java:10) at TestString.main(fff.java:32) */ java.lang.reflect.Field newField=firstClass.getDeclaredField("value"); char[] ch={'t','h','i','s',' ','i','s',' ','s','t','r','i','n','g'}; newField.setAccessible(true); newField.set(myString,ch); field.setInt(myString,ch.length); System.out.println(myString); //运行后输出“this is string” }catch(Exception e){ e.printStackTrace(System.out); } } public static void main (String args[]) { new TestString(); } } |
6.Re:java中可不可以定义一个string 的长度? [Re: 67865695] | Copy to clipboard |
Posted by: 67865695 Posted on: 2006-11-05 16:22 谢谢大家了,我知道了 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |