fixed some translation issues (#22351)
* fixed some translation issues also added russian code comments * chpull/34393/head
parent
557e7bbb7b
commit
da0d02d2bd
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
title: Strings
|
||||
localeTitle: Струны
|
||||
localeTitle: Строки
|
||||
---
|
||||
# Струны
|
||||
# Строки
|
||||
|
||||
Строки - это последовательности символов. В Java `String` является `Object` . Строки не следует путать с символом `char` как символы имеют буквально значение 1, а не последовательность символов. Вы все равно можете использовать 1 значение в пределах String, однако предпочтительно использовать `char` когда вы проверяете 1 символ.
|
||||
Строки - это последовательности символов. В Java `String` наследует класс `Object` . Строки не следует путать с типом данных `char` так как `char` это лишь один символ, а не последовательность символов. Вы все равно можете использовать String для хранения одного символа, однако в таком случае предпочтительнее использовать `char`.
|
||||
|
||||
```java
|
||||
String course = "FCC";
|
||||
|
@ -18,32 +18,32 @@ true
|
|||
|
||||
Вы можете создать объект String следующими способами:
|
||||
|
||||
1. `String str = "I am a String"; //as a String literal`
|
||||
2. `String str = "I am a " + "String"; //as a constant expression`
|
||||
3. `String str = new String("I am a String"); //as a String Object using the constructor`
|
||||
1. `String str = "Это строка"; //как значение строки`
|
||||
2. `String str = "Это " + "строка"; //как выражение константа`
|
||||
3. `String str = new String("Это строка"); //как объект класса String используя конструктор`
|
||||
|
||||
Возможно, вы думаете: в чем разница между тремя?
|
||||
Возможно, вы думаете: в чем разница между этими тремя?
|
||||
|
||||
Ну, используя `new` ключевое слово гарантирует, что будет создан новый объект `String` , и новая ячейка памяти будет выделена в `Heap` памяти [(нажмите здесь, чтобы узнать больше)](https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html) . строка литералы и постоянные выражения String кэшируются во время компиляции. Компилятор помещает их в пул строк String для предотвращения дублирования и улучшить потребление памяти. Распределение объектов дорогое, и этот трюк увеличивает производительность при создании строк. Если вы используете тот же самый буквальный, JVM использует тот же объект. Использование такого конструктора, как и выше, почти всегда является худшим выбором.
|
||||
Используя ключевое слово `new` гарантирует, что будет создан новый объект `String`, и новая ячейка памяти будет выделена в `Heap` памяти [(нажмите здесь, чтобы узнать больше)](https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html). Cтроковые литералы и постоянные выражения `String` кэшируются во время компиляции. Компилятор помещает их в пул строк `String` для предотвращения дублирования и улучшения потребления памяти. Распределение памяти для объектов дорогое, и этот прием увеличивает производительность при создании строк. Если вы используете те же самые значения строк, JVM использует тот же объект. Использование такого конструктора, как и выше, почти всегда является худшим выбором.
|
||||
|
||||
В этом фрагменте кода сколько объектов String создано?
|
||||
|
||||
```java
|
||||
String str = "This is a string";
|
||||
String str2 = "This is a string";
|
||||
String str3 = new String("This is a string");
|
||||
String str = "Это строка";
|
||||
String str2 = "Это строка";
|
||||
String str3 = new String("Это строка");
|
||||
```
|
||||
|
||||
Ответ: 2 Создаются объекты String. `str` и `str2` оба относятся к одному и тому же объекту. `str3` имеет тот же контент, но с использованием `new` принудительных создание нового, отличного объекта.
|
||||
Ответ: 2 Создаются объекты String. `str` и `str2` оба относятся к одному и тому же объекту. `str3` имеет то же самое значение, но с использованием ключевого слова`new` произойдет принудительное создание нового, отличного объекта.
|
||||
|
||||
Когда вы создаете строковый литерал, JVM внутренне проверяет, что называется `String pool` , чтобы увидеть, может ли он найти аналогичный (контентный) Строковый объект. Если он найдет его, он вернет ту же ссылку. В противном случае он просто продолжит работу и создаст новый объект String в пуле, чтобы такая же проверка может быть выполнена в будущем.
|
||||
Когда вы создаете строковый литерал, JVM внутренне проверяет пул строк, так называемый `String pool` , чтобы увидеть, может ли он найти аналогичный (по значению) строковый объект. Если он найдет его, он вернет ту же ссылку. В противном случае он просто продолжит работу и создаст новый объект String в пуле, чтобы такая же проверка могла быть выполнена в будущем.
|
||||
|
||||
Вы можете проверить это, используя ласточку, быстрое сравнение объектов `==` и реализованное `equals()` .
|
||||
Вы можете проверить это, используя быстрое сравнение объектов `==` и реализованное `equals()` .
|
||||
|
||||
```java
|
||||
System.out.println(str == str2); // This prints 'true'
|
||||
System.out.println(str == str3); // This prints 'false'
|
||||
System.out.println(str.equals(str3)); // This prints 'true'
|
||||
System.out.println(str == str2); // Выведет 'true'
|
||||
System.out.println(str == str3); // Выведет 'false'
|
||||
System.out.println(str.equals(str3)); // Выведет 'true'
|
||||
```
|
||||
|
||||
Вот еще один пример того, как создать строку в Java с помощью разных методов:
|
||||
|
@ -52,10 +52,10 @@ System.out.println(str == str2); // This prints 'true'
|
|||
public class StringExample{
|
||||
|
||||
public static void main(String args[]) {
|
||||
String s1 = "java"; // creating string by Java string literal
|
||||
String s1 = "java"; // создание строки присвоением строкового значения
|
||||
char ch[] = {'s','t','r','i','n','g','s'};
|
||||
String s2 = new String(ch); // converting char array to string
|
||||
String s3 = new String("example"); // creating Java string by new keyword
|
||||
String s2 = new String(ch); // конвертация массива символов в строку
|
||||
String s3 = new String("example"); // создание нового объекта строки используя слово new
|
||||
System.out.println(s1);
|
||||
System.out.println(s2);
|
||||
System.out.println(s3);
|
||||
|
@ -65,7 +65,7 @@ public class StringExample{
|
|||
|
||||
#### Сравнение строк
|
||||
|
||||
Если вы хотите сравнить значение двух переменных String, вы не можете использовать ==. Это связано с тем, что это будет сравнивать ссылки переменных а не значения, которые связаны с ними. Чтобы сравнить сохраненные значения строк, вы используете метод равно.
|
||||
Если вы хотите сравнить значение двух переменных String, вы не можете использовать ==. Это связано с тем, что это будет сравнивать _ссылки_ переменных а не значения, которые связаны с ними. Чтобы сравнить значения строк, вы используете метод equals().
|
||||
|
||||
```java
|
||||
boolean equals(Object obj)
|
||||
|
@ -77,15 +77,15 @@ boolean equals(Object obj)
|
|||
String str = "Hello world";
|
||||
String str2 = "Hello world";
|
||||
|
||||
System.out.println(str == str2); // This prints false
|
||||
System.out.println(str.equals(str2); // This prints true
|
||||
System.out.println(str == str2); // Выведет false
|
||||
System.out.println(str.equals(str2); // Выведет true
|
||||
```
|
||||
|
||||
Первое сравнение ложно, потому что «==» рассматривает ссылки, и они не совпадают.
|
||||
|
||||
Второе сравнение верно, потому что переменные сохраняют одни и те же значения. В этом случае «Hello world».
|
||||
Второе сравнение верно, потому что переменные хранят одни и те же значения. В этом случае «Hello world».
|
||||
|
||||
У нас есть несколько встроенных методов в String. Ниже приведен пример метода String Length ().
|
||||
У нас есть несколько встроенных методов в String. Ниже приведен пример метода String.length(), который вычисляет длину строки в символах.
|
||||
|
||||
```java
|
||||
public class StringDemo {
|
||||
|
@ -100,13 +100,17 @@ public class StringDemo {
|
|||
|
||||
Это приведет к: - `String Length is : 17`
|
||||
|
||||
**Ответ: 2** Создаются объекты String. **Заметки**
|
||||
**Ответ: 2**
|
||||
|
||||
Создаются объекты String.
|
||||
|
||||
**Заметки**
|
||||
|
||||
1. В методах String используются индексы с нулевым значением, за исключением второго аргумента `substring()` .
|
||||
2. Класс String является окончательным - его методы нельзя переопределить.
|
||||
3. Когда литерал String найден JVM, он добавляется в пул строковых литералов.
|
||||
4. Класс String имеет имя метода `length()` , а массивы имеют длину имени атрибута.
|
||||
5. В java строковые объекты неизменяемы. Неизменяемый просто означает неизменяемость или неизменяемость. После создания строкового объекта его данные или состояние не могут быть изменены, но создается новый строковый объект.
|
||||
5. В java строковые объекты неизменяемы. Неизменяемый просто означает что созданную строку нельзя изменить. После создания строкового объекта его данные или состояние не могут быть изменены, но создается новый строковый объект.
|
||||
|
||||
Длина строки
|
||||
|
||||
|
@ -114,12 +118,12 @@ public class StringDemo {
|
|||
|
||||
```java
|
||||
String a = "Hello";
|
||||
int len = a.length(); // len is 5
|
||||
int len = a.length(); // длина равна 5
|
||||
```
|
||||
|
||||
#### Другие методы сравнения, которые также могут использоваться в String:
|
||||
|
||||
1. equalsIgnoreCase (): - сравнивает строку без учета чувствительности к регистру.
|
||||
1. equalsIgnoreCase(): - сравнивает строку без учета чувствительности к регистру.
|
||||
|
||||
```java
|
||||
String a = "HELLO";
|
||||
|
@ -127,14 +131,14 @@ String a = "HELLO";
|
|||
System.out.println(a.equalsIgnoreCase(b)); // It will print true
|
||||
```
|
||||
|
||||
2. compareTo: - сравнивает значение лексикографически и возвращает целое число.
|
||||
2. compareTo(): - сравнивает значение лексикографически и возвращает целое число.
|
||||
|
||||
```java
|
||||
String a = "Sam";
|
||||
String b = "Sam";
|
||||
String c = "Ram";
|
||||
System.out.println(a.compareTo(b)); // 0
|
||||
System.out.prinltn(a.compareTo(c)); // 1 since (a>b)
|
||||
System.out.println(c.compareTo(a)); // -1 since (c<a)
|
||||
System.out.prinltn(a.compareTo(c)); // 1 потому что (a > b)
|
||||
System.out.println(c.compareTo(a)); // -1 потому что (c < a)
|
||||
|
||||
```
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue