Topic: 求教各位学长一个关于String的问题

  Print this page

1.求教各位学长一个关于String的问题 Copy to clipboard
Posted by: awardwy
Posted on: 2005-09-10 12:23

public class InterceptString {
public String convertString(byte[] bytes,int beginwith,int endwith){
  byte[] a=new byte[bytes.length];
  StringBuffer s=new StringBuffer();
  for(int i=beginwith;i<endwith;i++){
    a[i]=bytes[i];
  }
  s.append(a.toString());
   return "截取之后的字符串是"+s.toString();
}
  public static void main(String[] args) {
    // TODO Auto-generated method stub
   String str=new String(";jidtdtj");
   byte[] bytes=str.getBytes();
   InterceptString a=new InterceptString();
   String s=new String();
   s=a.convertString(bytes,2,4);
   for(int i=0;i<s.length();i++){
     System.out.print(s.charAt(i));
   }

  }

}
它打印的是这个STRING对象地址,如何打印出它的内容啊!
望各位能够不惜赐教,谢谢

2.Re:求教一个关于String的问题 [Re: awardwy] Copy to clipboard
Posted by: why
Posted on: 2005-09-10 20:05

There seems to be some 全形空格 in the source code you posted, please post the correct version.

> 它打印的是这个STRING对象地址
What did you mean?
Which line were you referring to?Question

...
okay, I see,
s.append(a.toString()); // a is byte[], a.toString() returns the "address"
return "截取之后的字符串是" + s.toString(); // new String( a ) instead of s.toString

Anyway, I don't think this works -- or should I say, I don't know what you're trying to do
    for (int i = beginwith; i < endwith; i++) {
      a[i] = bytes[i];
    }
Think about what a[0]..a[beginwidth-1] and a[endwith]..a[bytes.length-1] are.

3.Re:求教各位学长一个关于String的问题 [Re: awardwy] Copy to clipboard
Posted by: GlennLi
Posted on: 2005-09-12 10:39

awardwy wrote:
public class InterceptString {
public String convertString(byte[] bytes,int beginwith,int endwith){
  byte[] a=new byte[bytes.length];
  StringBuffer s=new StringBuffer();
  for(int i=beginwith;i<endwith;i++){
    a[i]=bytes[i];
  }
  s.append(a.toString());
   return "截取之后的字符串是"+s.toString();
}
  public static void main(String[] args) {
    // TODO Auto-generated method stub
   String str=new String(";jidtdtj");
   byte[] bytes=str.getBytes();
   InterceptString a=new InterceptString();
   String s=new String();
   s=a.convertString(bytes,2,4);
   for(int i=0;i<s.length();i++){
     System.out.print(s.charAtLight Bulb);
   }

  }

}
它打印的是这个STRING对象地址,如何打印出它的内容啊!
望各位能够不惜赐教,谢谢


我认为你如果你不需要考虑单双字节,你没有必要使用StringBuffer这个类。

直接使用String的构造函数:
******************************************
public String(byte bytes[], int offset, int length)
功能:
用平台缺省的字符编码方式转换指定的字节子数组生成一个新的 String 。
参数:
bytes - 要转换为字符的字节。
offset - 要转换的第一个字节的索引。
length - 要转换的字节数。
******************************************
而且你的很多参数和方法没有必要,比如 byte[] a=new byte[bytes.length];就没有必要,直接使用参数中的byte[] bytes就行了;也没有使用append的方法的必要,String类的构造函数已经可以实现你的要求。
我改动后的程序:

(缩略图,点击图片链接看原图)


   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