Java数组的空位是用什么占位的

tn_java 2017-01-31 10:44:26
比如
String str="we are happy!!";
char[] ch=new char[30];
for(int i=0;i<str.length();i++){
ch[i]=str.charAt(i);
}
数组长度为30,但是字符没有30个,空位是用什么占据的?c语言的数组有个结尾符号'\0',并且结尾符号会算进数组长度里面。Java数组有结尾符号么?
...全文
444 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
西欧海 2017-02-02
  • 打赏
  • 举报
回复
引用 3 楼 tn_java的回复:
[quote=引用 2 楼 QuinnNorris 的回复:] java和c不同 如果是int类型等数字数组 未初始化的时候全为0。 如果是char类型等字符数组 未初始化的时候全为“ ”。结尾没有\0,和String没有关系。
public class Test {
    public static void main(String[] args) {
        String str="wearehappy";
        char[] ch=new char[30];
        for(int i=0;i<str.length();i++){
            ch[i]=str.charAt(i);
        }
        int len=0;
        for(int j=0;j<ch.length;j++){
            if(ch[j] != '\0'){
                ++len;
            }
        }
        System.out.println(len);//输出为10
    }
}
这个代码的输出为10,如果把代码ch[j]!='\0'改成ch[j]=='\0',输出就为20.感觉char数组的空位就是用'\0'占据的,但是我又没有在书上看到过,所以来求证一下[/quote] java里char的默认值是‘\u0000’,看起来意义跟你这里的‘\0’是一样的吧,至于数组后面肯定没有结尾符什么的,String有没有就不清楚了
tn_java 2017-02-01
  • 打赏
  • 举报
回复
引用 2 楼 QuinnNorris 的回复:
java和c不同 如果是int类型等数字数组 未初始化的时候全为0。 如果是char类型等字符数组 未初始化的时候全为“ ”。结尾没有\0,和String没有关系。
public class Test {
    public static void main(String[] args) {
        String str="wearehappy";
        char[] ch=new char[30];
        for(int i=0;i<str.length();i++){
            ch[i]=str.charAt(i);
        }
        int len=0;
        for(int j=0;j<ch.length;j++){
            if(ch[j] != '\0'){
                ++len;
            }
        }
        System.out.println(len);//输出为10
    }
}
这个代码的输出为10,如果把代码ch[j]!='\0'改成ch[j]=='\0',输出就为20.感觉char数组的空位就是用'\0'占据的,但是我又没有在书上看到过,所以来求证一下
UsagiKnight 2017-02-01
  • 打赏
  • 举报
回复
java和c不同 如果是int类型等数字数组 未初始化的时候全为0。 如果是char类型等字符数组 未初始化的时候全为“ ”。结尾没有\0,和String没有关系。
小虫大大 2017-02-01
  • 打赏
  • 举报
回复
char 的是\u0000
UsagiKnight 2017-02-01
  • 打赏
  • 举报
回复
引用 3 楼 tn_java 的回复:
[quote=引用 2 楼 QuinnNorris 的回复:] java和c不同 如果是int类型等数字数组 未初始化的时候全为0。 如果是char类型等字符数组 未初始化的时候全为“ ”。结尾没有\0,和String没有关系。
public class Test {
    public static void main(String[] args) {
        String str="wearehappy";
        char[] ch=new char[30];
        for(int i=0;i<str.length();i++){
            ch[i]=str.charAt(i);
        }
        int len=0;
        for(int j=0;j<ch.length;j++){
            if(ch[j] != '\0'){
                ++len;
            }
        }
        System.out.println(len);//输出为10
    }
}
这个代码的输出为10,如果把代码ch[j]!='\0'改成ch[j]=='\0',输出就为20.感觉char数组的空位就是用'\0'占据的,但是我又没有在书上看到过,所以来求证一下[/quote] 我觉得,java和c、c++看起来很像,但做的工作不一样,java没有指针,c和c++更适合偏底层的东西。 在java里就不要研究数组了呀,ArrayList多方便啊。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧