1. Встроенная поддержка Java для струн;
Так называемая встроенная поддержка означает, что типы строк не реализуются с использованием указателей ChAR, таких как C, а кодирование строки Java соответствует стандартам кодирования Unicode, что также означает, что ее не нужно реализовать с использованием классов String и Wstring, таких как C ++ Будьте совместимы с языком C и стандартом Unicode. Java поддерживает типы строк через класс строки внутри.
Это означает: мы можем напрямую вызвать тот же метод, что и объект строки:
// Вы можете напрямую вызвать все методы строкового объекта на «ABC»
int length = "abc" .length ();
а также
String abc = new String ("ABC");
int length = abc.length ();
2. Строковое значение в Java постоянное (постоянное)
Мы имеем в виду, что после создания типа строки значение не может быть изменено. String («def») «ABC» и «def» в постоянном пуле, хранящемся в виртуальной машине Java.
«ABC» в следующем коде хранится в постоянном пуле, поэтому адреса, на которые указывают переменные A и AB, являются одинаковыми «ABC» в постоянном пуле.
Кода -копия выглядит следующим образом:
открытый класс stringtest {
public static void main (string [] args) {
Строка a = "abc";
String ab = "abc";
String abc = new String ("ABC");
System.out.println (ab == a);
System.out.println (a == ABC);
}
}
/*Вывод программы:
* истинный
* ЛОЖЬ
* */
Итак, как реализованы динамически сгенерированные и переменные строки? Java обеспечивает классы StringBuffer и StringBuilder для достижения этого требования; Реализованы ли StringBuilder и StringBuffer? Он хранит струны через массив персонажей. Ниже приведен фрагмент из исходного кода, который поставляется с JDK.
3. Кодирование проблем в струнах.
Два вопроса, которые нужно понять здесь: как справиться с кодированием строки в исходных файлах? Какое кодирование использует строки при компиляции в файлы класса или код запуска в виртуальной машине Java?
Первая проблема заключается в том, что строка, кодирующая в исходном коде, зависит от вашего IDE или текстового редактора. Например, следующий код редактируется в формате кодирования GBK, а затем откройте его, используя декодирование UTF-8 и GBK
// формат кодирования GBK, открытый в формате GBK
// Формат кодирования GBK, открытый в формате UTF-8, искаженно;
Так как же решить эту проблему кодирования исходного кода? Ответ указан в параметрах -кодировании компилятора Javac. Кодирование по умолчанию Windows обычно является GBK (это значение можно получить через System.getProperty ("file.encoding")); Используйте Javac -Enchoding UTF- 8 Compile.
Какова кодировка строк при компиляции в файл класса или код при запуске виртуальной машины Java? Как кодирование исходного кода? Это означает, что до тех пор, пока компилятор Javac правильно понимает кодирование строк в файле исходного кода, строки во время выполнения или класса байткодов не зависят от формата кодирования в исходном коде. Здесь мы можем дополнительно понимать основной тип символов или класс символов в Java. «1 длина персонажей или китайских иероглифы в Java составляет 16 битов.
Кроме того, в типе строки мы также используем указанное фиксированное кодирование символов для преобразования базового двоичного представления и строки, что означает, что мы можем правильно считывать кодирование GBK, кодирование UTF-8 или другие кодируемые текстовые файлы или другие это в правильную строку в памяти.
Например, в классе строки есть следующие методы:
public String (Byte [] Bytes, Charset charset);
Public Byte [] Getbytes (Charset charset);
Есть еще один метод участника, на который необходимо обратить внимание на:
Общественный байт [] getbytes ();