Автор оригинала: Pankaj Kumar.
Функция Java String length() возвращает длину последовательности символов, представленных этим объектом.
Длина строки Java
Иногда нам приходится получать длину строки в java-программах, ниже фрагмент кода показывает, как это сделать.
String str = "journaldev";
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());
}
Можете ли вы догадаться, в чем проблема с вышеуказанной функцией? Ну, это может привести к исключению NullPointerException , если кто-то вызывает эту функцию, передавая строковое значение как null . Ниже приведена лучшая реализация, позволяющая избежать исключения NullPointerException.
public static void printStringLength(String s){
if(s == null) return;
System.out.println("input string length is "+s.length());
}
Обратите внимание, что я просто игнорирую и возвращаю вызов, если ввод равен нулю, вы можете зарегистрировать его или создать исключение или сделать что-либо еще в соответствии с вашими требованиями.
Длина строки Java для представления в Юникоде
Если вы посмотрите на javadoc метода String length () , то увидите, что длина равна количеству кодовых единиц Юникода в строке. Что это значит? Давайте рассмотрим небольшой фрагмент кода, чтобы легко понять значение этого утверждения.
String str1 = "\u00A9"; //copyright character
System.out.println("String length is "+str1.length());
Когда вы запустите вышеуказанную программу, длина строки будет напечатана как 1. В java мы можем использовать символы Юникода для определения строки, а выше юникода-для символа авторского права. Следовательно, длина строки равна 1, и если вы попытаетесь ее распечатать, она будет отображаться как © .
Вот окончательная программа длины строки java.
package com.journaldev.string;
public class JavaStringLength {
public static void main(String[] args) {
String str = "journaldev";
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 без использования функции 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("");
}
Я уверен, что будут и другие забавные способы найти длину строки без использования функции length (), я думаю, что приведенные выше самые простые. Это все для примера программы длины строки java.
Ссылки: API Doc , Статья StackOverflow