java String(),java中的string的运用

  java String(),java中的string的运用

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  下面有段简单的代码

  公共类字符串plust {

  公共静态void main(String[] args) {

  字符串s1= aaa

  字符串s2= bbb

  字符串s= ccc s1 s2 ddd

  }}使用javap -c,\ StringPlusTest.class反编译一下,得到

  从" StringPlusTest.java "公共类com。epoint。代码调整。测试。字符串加测试{

  公共通讯。epoint。代码调整。测试。string lustest();

  代码:

  0: aload_0 1: invokespecial #1 //方法Java/语言/对象.init:()V

  4:退货

  公共静态void main(Java。郎。string[]);

  代码:

  0: ldc #2 //字符串美国汽车协会

  2: astore_1 3: ldc #3 //String bbb

  5:astore _ 2 6:new # 4//class Java/lang/StringBuilder

  9: dup 10: invokespecial #5 //方法java/lang/StringBuilder .init:()V

  13: ldc #6 //字符串控制台控制电路

  15: invokevirtual #7 //方法Java/lang/stringbuilder。append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  18: aload_1 19: invokevirtual #7 //方法Java/lang/stringbuilder。append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  22: aload_2 23: invokevirtual #7 //方法Java/lang/stringbuilder。append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  26: ldc #8 //字符串ddd

  28: invokevirtual #7 //方法Java/lang/stringbuilder。append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  31: invokevirtual #9 //方法Java/lang/stringbuilder。tostring:()Ljava/lang/String;

  34: astore_3 35: return}其中,

  最不发达国家把常量池中的项压入栈

  阿斯托雷_1将引用类型或返回地址类型值存入局部变量一

  阿斯托雷_2将引用类型或返回地址类型值存入局部变量2

  新的创建一个新对象

  民主统一党复制栈顶部一个字长内容

  invokespecial根据编译时类型来调用实例方法

  aload_1从局部变量一中装载引用类型值

  aload_2从局部变量2中装载引用类型值

  阿斯托雷_3将引用类型或返回地址类型值存入局部变量3更多指令见虚拟机(Java虚拟机的缩写)指令手册

  对于爪哇来说,这段代码原理上应该是:

  公共类字符串plust {

  公共静态void main(String[] args) {

  字符串s1= aaa

  字符串s2= bbb

  String s=new StringBuilder().追加( ccc ).追加(s1).追加(s2).追加( ddd ).toString();

  }}由此可见,Java中使用" "拼接字符串的实现原理是通过建立临时StringBuilder对象调用附加和转换对象为字符串方法实现。

  对上面代码做一些修改

  公共类字符串plust {

  公共静态void main(String[] args) {

  字符串s1= aaa

  字符串s2=空

  字符串s= ccc s1 s2 ddd

  系统。出去。println(s);

  }}结果是什么?

  运行可以得到如下:

  cccaaanullddd查看StringBuilder源码

  @ override public StringBuilder append(String str){

  超级棒。append(字符串);

  还这个;}该方法调用继承父类AbstractStringBuilder的方法,再去父类中查看

  public AbstractStringBuilder append(String str){

  if (str==null)

  返回appendNull();

  int len=str。长度();

  ensureCapacityInternal(count len);

  str.getChars(0,len,value,count);

  计数=长度

  还这个;}私有AbstractStringBuilder appendNull(){

  int c=计数

  ensurecapacityininternal(C4);

  final char[]value=this。价值;

  值[c]= n ;

  值[c]= u ;

  值[c]= l ;

  值[c]= l ;

  count=c;

  还这个;}appendNull方法简单来说就是容量4,追加空字符串。

  所以结果为cccaaanullddd。

  这就是String在java中对“”所做的事情的细节。更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: