如何查找字符串数组的长度?

ama*_*ice 27 java

我遇到以下行的问题,其中car一个String数组尚未初始化/没有元素.

String car [];
System.out.println(car.length);
Run Code Online (Sandbox Code Playgroud)

什么是可能的解决方案?

Joã*_*lva 52

既然car没有初始化,它没有长度,它的价值是null.但是,编译器甚至不允许您按原样编译该代码,抛出以下错误:变量car可能尚未初始化.

您需要先将其初始化,然后才能使用.length:

String car[] = new String[] { "BMW", "Bentley" };
System.out.println(car.length);
Run Code Online (Sandbox Code Playgroud)

如果需要初始化空数组,可以使用以下命令:

String car[] = new String[] { }; // or simply String car[] = { };
System.out.println(car.length);
Run Code Online (Sandbox Code Playgroud)

如果需要使用特定大小对其进行初始化,为了填充某些位置,您可以使用以下内容:

String car[] = new String[3]; // initialize a String[] with length 3
System.out.println(car.length); // 3
car[0] = "BMW";
System.out.println(car.length); // 3
Run Code Online (Sandbox Code Playgroud)

但是,List如果您打算向其中添加元素,我建议您改用它:

List<String> cars = new ArrayList<String>();
System.out.println(cars.size()); // 0
cars.add("BMW");
System.out.println(cars.size()); // 1
Run Code Online (Sandbox Code Playgroud)

  • 你的第一个声明"因为汽车尚未初始化,它没有长度,它的值为空"是错误的.由于汽车尚未初始化,因此代码甚至无法编译.引用可能未初始化的变量是编译时错误. (3认同)
  • +1用于建议列表,这些列表几乎总是比数组更适合*接口*. (2认同)

And*_*yle 5

好吧,在这种情况下,car变量将是null,因此取消引用它(就像你访问时一样car.length)将抛出一个NullPointerException.

实际上,在完全分配了一些值之前,你根本无法访问该变量- 否则编译器会抱怨"变量汽车可能尚未初始化".

你在这里尝试做什么(我不清楚你正在寻找什么"解决方案")?