为什么阵列看起来比它的最大长度长?

时间:2017-11-25 17:57:05

标签: java arrays

我是新手,我尝试编写一些代码,用于计算字符串字母,空格等。所以,我设置数组长度为50.但是当我稍后运行代码并输入超过50个字符时,它仍然可以运行,总计数可以超过50,为什么?谢谢。

import java.util.Scanner;

public class javaexcrises {


    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String astrg = new String();
        char[] ch = new char[50];
        int charcount=0;
        int spaccount=0;
        int numcount=0;
        int othcount=0;

        System.out.println("Please enter some word ");
            if(scan.hasNextLine()){
                astrg = scan.nextLine();
                ch = astrg.toCharArray();

                int i;
                for(i=0;i<astrg.length();i++){
                    if(Character.isLetter(ch[i])){
                        charcount++;
                    }
                    else if(Character.isDigit(ch[i])){
                        numcount++;
                    }
                    else if(Character.isSpaceChar(ch[i])){
                        spaccount++;
                    }
                    else{
                        othcount++;
                    }
                }
                System.out.println("Character = "+charcount);
                System.out.println("Space = "+spaccount);
                System.out.println("Number = "+numcount);
                System.out.println("Others ="+othcount);
                System.out.println("Total = "+ch.length);
            }
            scan.close();
    }

}

2 个答案:

答案 0 :(得分:5)

 ch = astrg.toCharArray();

toCharArray()返回对新数组的引用,该引用将替换您分配的旧数组。新数组足够大,可以包含整个输入字符串。

答案 1 :(得分:1)

当我们执行astrg.toCharArray()时,它返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列。

如果删除新的字符[50]也不会影响。