Java String length()方法

时间:2020-02-23 14:34:32  来源:igfitidea点击:

Java String length()函数返回此对象表示的字符序列的长度。

Java字符串长度

有时我们必须在Java程序中获取字符串的长度,下面的代码片段向您展示了如何做到这一点。

String str = "theitroad";
		
System.out.println("String length is "+str.length());

上面的代码片段将产生如下输出:

String length is 10

假设我们有一个函数可以打印字符串长度,如下所示。

public static void printStringLength(String s){
	System.out.println("input string length is "+s.length());
}

您能猜出上述功能有什么问题吗?好吧,如果有人通过将字符串值传递为" null"来调用此函数,则可能导致NullPointerException。
下面是避免NullPointerException的更好的实现。

public static void printStringLength(String s){
	if(s == null) return;
	System.out.println("input string length is "+s.length());
}

请注意,如果输入为null,我只是忽略并返回该调用,您可以记录它或者引发Exception或者根据您的要求执行任何其他操作。

Unicode表示形式的Java字符串长度

如果看一下Stringlength()方法的javadoc,它表示长度等于字符串中Unicode代码单元的数量。
这是什么意思?让我们看一个小的代码片段,以轻松理解该语句的含义。

String str1 = "\u00A9"; //copyright character
		
System.out.println("String length is "+str1.length());

当您在上面的程序中运行时,字符串长度将被打印为1。
在Java中,我们可以使用Unicode字符定义一个String,而上面的unicode用于版权字符。
因此,String的长度为1,如果您尝试打印它,它将显示为©

这是最终的Java字符串长度程序。

package com.theitroad.string;

public class JavaStringLength {

	public static void main(String[] args) {
		String str = "theitroad";

		System.out.println("String length is " + str.length());

		String str1 = "\u00A9";

		System.out.println("Unicode String length is " + str1.length());

		System.out.println("Unicode string value = "+str1);

		printStringLength(null);
	}

	public static void printStringLength(String s) {
		if (s == null)
			return; //do nothing
		System.out.println("input string length is " + s.length());
	}
}

Java String长度,不使用length()函数

这是一个非常有趣的面试问题,有很多替代和不推荐的方法来获取字符串的长度。
让我们看一下这些内容,它们很适合用于论证,但不要在生产环境中使用。

转换为字符数组并查找长度

public static int getStringLength(String s) {
	int count = 0;
	char [] ca = s.toCharArray();
	for (char c : ca) {
		count++;
	}
	return count;
}

字符数组的调用长度

public static int getStringLength(String s) {
	return s.toCharArray().length;
}

巧妙地使用String lastIndexOf()函数

public static int getStringLength(String s) {
	return s.lastIndexOf("");
}