黑马程序员技术交流社区

标题: 字符串与字符数组的转换 [打印本页]

作者: 林康春    时间: 2012-2-17 07:44
标题: 字符串与字符数组的转换
本帖最后由 林康春 于 2012-2-18 21:02 编辑

class  StringAPIDemo
{
        public static void main(String[] args)
        {
                String str1="hello";
                char c[]=str1.toCharArray();
                for (int i=0;i<c.length ; i++)
                {
                        System.out.print(c+"\t");
                }
                System.out.println("");
                String str2=new String(c);
                String str3=new String(c,0,3);
                System.out.println(str2);
                System.out.println(str3);

        }
}
输出运行结果:
h       e       l       l     o
hello
hel

疑问:String str3=new String(c,0,3);
这是什么意思?
作者: 余松霖    时间: 2012-2-17 08:21
public String(char[] value,
              int offset,
              int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。

参数:
value - 作为字符源的数组。
offset - 初始偏移量。
count - 长度。

String str3=new String(c,0,3);
表示从c数组截取一个子数组创建一个新的字符串,0表示从0角标位开始,3表示截取3个。

作者: 戚雪晖    时间: 2012-2-17 08:23
0-3取头不取尾,有很多方法都跟这个类似如substring...也就是说取的是0,1,2   这三个角标的元素组成字符串,就是hel
作者: 朱辉    时间: 2012-2-17 08:42
String str3=new String(c,0,3);应该是截取数组c中0角标到2角标中的元素创建了一个新的字符串
作者: 彭小芳    时间: 2012-2-17 09:04
本帖最后由 pengfangjava 于 2012-2-17 09:07 编辑

楼主的问题可从JDK帮助文档中找到答案:
不知道楼主喜欢看中文的还是英文的,各来一份吧

public String(char[] value,
              int offset,
              int count)
Allocates a new String that contains characters from a subarray of the character array argument. The offset argument is the index of the first character of the subarray and the count argument specifies the length of the subarray. The contents of the subarray are copied; subsequent modification of the character array does not affect the newly created string.

Parameters:
value - Array that is the source of characters
offset - The initial offset
count - The length


public String(char[] value,
              int offset,
              int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。

参数:
value - 作为字符源的数组。
offset - 初始偏移量。
count - 长度。
抛出:
IndexOutOfBoundsException - 如果 offset 和 count 参数索引字符超出 value 数组的范围。

希望对你有帮助
作者: 王涛    时间: 2012-2-17 09:20
String str2=new String(c);
这个是将全部字符数组变为String,它输出以后是hello
String str3=new String(c,0,3);
这个是将部分字符数组变为String,取字符数组c中从下标0开始,取3位,也就是hel
作者: 王康    时间: 2012-2-17 09:27
public class StringAPIDemo {
          public static void main(String[] args)
      {
              String str1="hello";        //String类型变量
              char c[]=str1.toCharArray();        //把字符串转换成字符数组
              for (int i=0;i<c.length ; i++)
              {
                      System.out.print(c+"\t");        //\t为制表符  h        e        l        l        o       
              }
              System.out.println("");        //换行
              String str2=new String(c);        //把数组转换成字符串
              String str3=new String(c,0,3);        //截取字符串str2,从下标0开始,截取3个字符长度的字符.
              System.out.println(str2);        //        hello
              System.out.println(str3);        //  hel
      }
}

作者: 黄锦成    时间: 2012-2-17 09:35
String str3=new String(c,0,3);
说明从字符数组的零脚标开始,获取3个字符组成一个字符串
作者: 戚雪晖    时间: 2012-2-17 09:39
1毫秒的价值 发表于 2012-2-17 08:23
0-3取头不取尾,有很多方法都跟这个类似如substring...也就是说取的是0,1,2   这三个角标的元素组成字符串 ...

我错了,通过查API
public String(byte[] bytes,int offset,int length)
参数:
bytes - 要解码为字符的 byte
offset - 要解码的第一个 byte 的索引
length - 要解码的 byte 数

作者: 张开开    时间: 2012-2-17 10:24
class  StringAPIDemo
{
        public static void main(String[] args)
        {
                String str1="hello";//创建字符串并赋初值为:hello
                char c[]=str1.toCharArray();//将字符串转化为字符数组,调用toCharArray方法
                for (int i=0;i<c.length ; i++)
                {
                        System.out.print(c[i]+"\t");//将字符数组打印
                }
                System.out.println("");//换行操作
                String str2=new String(c);//将字符数组转换为字符串
                String str3=new String(c,0,3);//从c字符串中取值,范围是从0角标开始,长度范围为4的子串
                System.out.println(str2);
                System.out.println(str3);

        }
}

作者: 花开~的季节    时间: 2012-2-17 10:29
表示c从0开始取到第三个角标就是了《比如hello取出来就是hell,很简单,就相当 sub()
作者: 林康春    时间: 2012-2-18 21:00
明白了  谢谢




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