黑马程序员技术交流社区

标题: 关于String的问题 [打印本页]

作者: 佛山java爱好者    时间: 2014-7-18 16:08
标题: 关于String的问题
本帖最后由 佛山java爱好者 于 2014-7-18 19:08 编辑

char[] buf=new char[10];
in len=isr.read(buf);
String str=new String(buf,0,len);

求解答,这三行代码的作用是什么啊,特别不懂String(buf,0,len)
作者: fantacyleo    时间: 2014-7-18 16:46
new String(buf,0,len)是String类的一个构造方法,用buf字符数组中从下标0开始算起的len个元素初始化一个字符串对象。其他两行的作用要看你完整的程序想做什么
作者: wisely    时间: 2014-7-18 17:36

  1. char[] buf=new char[10];   //创建了一个长度为10的数组,它指向buf
复制代码


作者: wisely    时间: 2014-7-18 17:37
wisely 发表于 2014-7-18 17:36

我擦,写半天就剩下这么一句话鸟,还得重来……
作者: meibinlove    时间: 2014-7-18 17:41
我咋看着代码是错误的,in不能声明变量吧
作者: wisely    时间: 2014-7-18 17:45
  1. <blockquote>char[] buf=new char[10];  //创建了一个长度为10的数组
复制代码



作者: wisely    时间: 2014-7-18 17:46
char[] buf=new char[10];  //创建了一个长度为10的数组

in len=isr.read(buf);  //调用read方法,将字符读入数组buf中,并返回读入数组的字符个数
                                  //这里要注意一下,虽然数组长度为10,但有可能只读入了3或7个字符,它的返回值就是3或7

String str=new String(buf,0,len);  //创建一个字符串,可参考String类的构造方法。
                                                       // 需要解释一下这里为何不用new String(buf)。就像上一句代码所说,read方法读入的字符可能不是10,比如读入了7个字符,如果用new String(buf),那么前面7个是读到的字符,而后面3个则会用null补上,而后面的3个null显然不是我们想要的数据,所以可用new String(buf,0,len)来创建对象。如果len是10,那么new String(buf)与new String(buf,0,len)的结果是一样的,如果len不是10,那就尴尬了,所以说,new String(buf,0,len)绝对是好构造方法,放心大胆地用吧、
                                                       //最后说一句,new出来的String对象指向了类类型变量str
作者: wisely    时间: 2014-7-18 17:48
wisely 发表于 2014-7-18 17:46
char[] buf=new char[10];  //创建了一个长度为10的数组

in len=isr.read(buf);  //调用read方法,将字符 ...

老天爷啊,总算发出来鸟,回个帖咋这么难泥?
作者: 渴望学习    时间: 2014-7-18 18:02
路过~~~~~~~~~~~
作者: star5603    时间: 2014-7-18 19:37
lz确定不是int len?少个t吧。
就是设置一个10字节的缓冲,读取源,然后转成字符串。
作者: 曾翀    时间: 2014-7-18 20:57
哎,多看看java基础视频。20天左右的有很多这样的,String str=new String(buf,0,len)中 0到len是指角标取值从0开始到len长度终止
作者: 淡淡柠檬茶    时间: 2014-7-18 21:37
点个赞哈
作者: 南柯一梦    时间: 2014-7-18 22:24
创建了一个数组长度为10的char类型数组,然后调用isr对象的read方法并把数组对象buf传递过去并赋值给Internet类型的len变量;最后截取字符数组buf从0开始到len结束的字符作为一个字符串常量对象赋给字符串变量str
作者: 张慈瑞    时间: 2014-7-18 23:16
你的代码不是很全面,第一行是创建一个字符数组用来临时存储字符数据,第二行是从输入流中读取buf个字符。第三行好像是创建一个String类型的对象把它打印输出出来,你没有写完,所以不好解读。
作者: 于龙超123    时间: 2014-7-18 23:32
点赞党~~
作者: ws484664    时间: 2014-7-18 23:35
学习来了            




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2