1. Создание объектов
Для прямых строковых констант в программах Java JVM будет использовать пул строк для их сохранения. Когда строковая константа используется впервые, JVM помещает ее в пул строк для кэширования. В обычных обстоятельствах строковые объекты в пуле строк не будут подвергаться сборке мусора. Когда программе необходимо снова использовать строку, ссылочная переменная может напрямую указывать на существующую строку в строке без повторного создания новой строки. Строковый объект, созданный с помощью новой операции, не указывает на объект в пуле строк , но вы можете использовать метод intern(), чтобы указать его на объект в пуле строк.
Скопируйте код кода следующим образом:
общественный класс StringDemo1 {
public static void main(String[] args){
Строка str1="abc";
Строка str2 = «abc»;
Строка str3 = новая строка («abc»);
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
}
}
Часто задаваемые вопросы
Скопируйте код кода следующим образом:
Строка str3 = новая строка («abc»);
Сколько объектов было создано?
Ответ: Два
Скопируйте код кода следующим образом:
Строка str="ab"+"cd";
Сколько объектов было создано? Ответ: Один. «ab» и «cd» — константы, помещенные в пул строк. Таким образом, создается только один пул строк abcd, и строка abcd сохраняется в пуле строк.
Скопируйте код кода следующим образом:
общественный класс StringDemo1 {
public static void main(String[] args){
Строка str1 = "ab";
Строка str2="cd";
String str3 ="ab"+"cd";//Создаем объект и добавляем его в пул строк
Строка стр4 =стр1+стр2;
Строка str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
Это видно из приведенного выше кода: в пул строк можно добавлять только объекты String, созданные с кавычками и содержащими текст. Для выражения соединения «+», содержащего новый объект, созданный новым методом, будет создан новый объект. не добавляться в строку в пуле.
Но есть ситуация, которая требует нашего внимания:
Скопируйте код кода следующим образом:
общественный класс StringDemo1 {
частная окончательная статическая строка str1 = "ab";
частная окончательная статическая строка str2 = "cd";
public static void main(String[] args){
String str3 ="ab"+"cd";//Создаем объект и добавляем его в пул строк
Строка стр4 =стр1+стр2;
Строка str5 =str1+"cd";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
}
}
Почему это? Причина в том, что константы. Его значение фиксировано и поэтому может быть определено во время компиляции.
Немного измените приведенный выше код и посмотрите, что произойдет.
Скопируйте код кода следующим образом:
общественный класс StringDemo1 {
частная окончательная статическая строка str1;
частная окончательная статическая строка str2;
статический {
стр1="аб";
стр2="кд";
}
public static void main(String[] args){
String str3 ="ab"+"cd";//Создаем объект и добавляем его в пул строк
Строка стр4 =стр1+стр2;
Строка str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
Хотя str1 и str2 определены как константы, им присваиваются значения непосредственно перед вычислением значения s, когда они присваиваются и какое значение им присваивается, являются переменными, поэтому их свойства такие же, как у переменных. Может быть создан только во время выполнения.
2. Строковый метод
Получить метод
• длина целого числа()
•char charAt(int index) получает символ в зависимости от позиции
•int indexOf(int ch) возвращает позицию первого вхождения ch в строке
•int indexOf(int ch,int fromIndex) начинается с позиции, указанной параметром fromIndex, и получает позицию первого вхождения ch в строке.
•int indexOf(строка строка)
•int indexOf(строка str,int fromIndex)
•int LastIndexOf(int ch)
Метод решения
•boolean contains(String str) Другой метод оценки: if(str.index(str)!=-1)
•логическое значение startWith(String str)
•логическое значение endWith(String str)
•bolean isEmpty(String str)
• логическое равенство (строка str)
•логическое значение равноIgnoreCase(String str);
Метод преобразования
• Преобразование массива символов в строку.
Конструктор
1.Строка(символ[] чс)
2.String(char[] chs,offset,count) преобразует часть массива символов в строку.
статический метод
1.статическая строка copyValueOf(char[] chs)
2.статическая строка copyValueOf(char[] chs,int offset,int count)
3.статическое строковое значениеOf(char[])
4.static String valueOf(char[] chs,int offset,int count)
• Преобразование строки в массив символов.
char[] вCharArray
• Преобразование массива символов в строку.
• Преобразование строки в массив байтов.
байт[] в байты
метод замены
Замена строки (olderStr, newStr)
Метод резки
Разделение строки (регулярное выражение)
Получить подстроку[изменить категорию]
Строка subString(начало)
Строка subString(begin,end) содержит начало, но не хвост.
Преобразование строки в верхний и нижний регистр Android(10)
Строка toUpperCase()
Строка в нижний регистр()
Удалить пробелы с обоих концов строки
Обрезка строки()
Сравнить две строки в естественном порядке
int CompareTo (String str)
3.Упражнения на струнах
1. Переворачивание струн
Скопируйте код кода следующим образом:
общественный класс StringDemo2 {
public static void main(String[] args){
Строка str = "avdkfasjks";
обратныйМетод_1 (стр);
}
public static voidverseMethod_1(String str){
for(int i=str.length();i>0;i--){
System.out.print(str.charAt(i-1));
}
}
}
2. Получить наибольшую идентичную подстроку
Скопируйте код кода следующим образом:
общественный класс StringDemo2 {
public static void main(String[] args){
Строка str1 = "avdkfasjks";
String str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
}
общественная статическая строка commonMaxSubstring(String str1,String str2){
int len = str1.length();
Строка str3 = ноль;
внешний:
//i — длина подстроки
for(int i = len;i>0;i--){
//j — подстрока подстроки
for(int j=0;j<len-i+1;j++){
str3=str1.substring(j,j+i);
если(str2.contains(str3))
сломать внешний;
}
}
вернуть стр3;
}
}