Java: преобразование строки в число и наоборот

Преобразование с использованием Integer.toString(int)

Класс Integer имеет статический метод, который возвращает объект String, представляющий параметр int, указанный в функции Integer.toString(int). Этот подход, в отличие от других, может возвращать исключение NullPointerException.

Синтаксис

Есть два разных выражения для метода Integer.toString():

public static String toString(int i)

public static String toString(int i, int radix)

Параметры

Параметры этого метода:

  • i: целое число, которое будет преобразовано.
  • radix: используемая система счисления базы для представления строки.

Возвращаемое значение

Возвращаемое значение для обоих выражений — строка Java, представляющая целочисленный аргумент «i». Если используется параметр radix, возвращаемая строка определяется соответствующим основанием.

Пример

package MyPackage;
public class Method1 
{
	public static void main(String args[]) 
	{
		  int n = Integer.MAX_VALUE;
		  String str1 = Integer.toString(n);
		  System.out.println("The output string is: " + str1);
		  int m = Integer.MIN_VALUE;
		  String str2 = Integer.toString(m);
		  System.out.println("The output string is: " + str2);
	}
	 
}

Преобразование чисел в строкиConversion of Numbers to Strings

Функцию можно использовать для преобразования числа в отформатированную строку, которая может включать не только соответствующие цифры, но и символы форматирования, такие как знак валюты (например ,), разделители тысяч или символы группирования цифр (например,), и десятичный разделитель (например,) .You can use the function to convert a number to a formatted string, which can include not only the appropriate digits but also formatting symbols such as a currency sign (such as ), thousands separators or digit grouping symbols (such as ), and a decimal separator (such as ). автоматически использует соответствующие символы в соответствии с региональными параметрами, заданными на панели управленияWindows. automatically uses the appropriate symbols according to the Regional Options settings specified in the Windows Control Panel.

Обратите внимание, что оператор конкатенации ( ) может преобразовать число в строку неявным образом, как показано в следующем примере.Note that the concatenation () operator can convert a number to a string implicitly, as the following example shows

Конвертация C-style

В программировании на языке Cи явное преобразование типов данных выполняется с помощью оператора . Внутри круглых скобок мы пишем тип, в который нужно конвертировать. Этот способ конвертации типов называется конвертацией C-style. Например:

int i1 = 11;
int i2 = 3;
float x = (float)i1 / i2;

1
2
3

inti1=11;

inti2=3;

floatx=(float)i1i2;

В программе, приведенной выше, мы используем круглые скобки, чтобы сообщить компилятору о необходимости преобразования переменной (типа int) в тип float. Поскольку переменная станет типа float, то также затем автоматически преобразуется в тип float, и выполнится деление типа с плавающей точкой!

Язык C++ также позволяет использовать этот оператор следующим образом:

int i1 = 11;
int i2 = 3;
float x = float(i1) / i2;

1
2
3

inti1=11;

inti2=3;

floatx=float(i1)i2;

Конвертация C-style не проверяется компилятором во время компиляции, поэтому она может быть неправильно использована, например, при конвертации типов const или изменении типов данных, без учета их диапазонов (что приведет к ).

Следовательно, конвертацию C-style лучше не использовать.

Правило: Не используйте конвертацию C-style.

Приведение к булеву типу

Следующие значения в результате преобразования дают значение :

  • само значение
  • 0 и 0.0 (нуль)
  • пустая строка, и строка «0»
  • массив без элементов
  • Объекты , созданные из пустых тегов

Все остальные значения при преобразовании дают в результате значение . Значение и шесть значений, которые при преобразовании приводятся к этому значению, обычно называют ложными значениями, а все остальные — истинными:

echo (bool)"", ": FALSE", "<br>";   // FALSE
echo (bool)1, ": TRUE", "<br>";     // TRUE
echo (boolean)[], ": FALSE";        // FALSE

В любом контексте, когда интерпретатор PHP ожидает получить булево значение, ложные значения интерпретируются как , а истинные значения — как .

Преобразование типов и класс Convert

Последнее обновление: 17.06.2017

Методы Parse и TryParse

Все примитивные типы имеют два метода, которые позволяют преобразовать строку к данному типу. Это методы Parse() и TryParse().

Метод Parse() в качестве параметра принимает строку и возвращает объект текущего типа. Например:

int a = int.Parse("10");
double b = double.Parse("23,56");
decimal c = decimal.Parse("12,45");
byte d = byte.Parse("4");
Console.WriteLine($"a={a}  b={b}  c={c}  d={d}");

Стоит отметить, что парсинг дробных чисел зависит от настроек текущей культуры. В частности, для получения числа double я передаю строку «23,56» с запятой в качестве разделителя.
Если бы я передал точку вместо запятой, то приложение выдало ошибку выполнения. На компьютерах с другой локалью, наоборот, использование запятой вместо точки выдало бы ошибку.

Чтобы не зависеть от культурных различий мы можем установить четкий формат с помощью класса NumberFormatInfo и его свойства
NumberDecimalSeparator:

using System;
using System.Globalization;

namespace FirstApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            IFormatProvider formatter = new NumberFormatInfo { NumberDecimalSeparator = "." };
            double b = double.Parse("23.56", formatter);
        }
    }
}

В данном случае в качестве разделителя устанавливается точка. Однако тем не менее потенциально при использовании метода Parse мы можем столкнуться с ошибкой, например,
при передачи алфавитных символов вместо числовых. И в этом случае более удачным выбором будет применение метода TryParse().
Он пытается преобразовать строку к типу и, если преобразование прошло успешно, то возвращает true. Иначе возвращается false:

int number;
Console.WriteLine("Введите строку:");
string input = Console.ReadLine();

bool result = int.TryParse(input, out number);
if (result == true)
	Console.WriteLine("Преобразование прошло успешно");
else
	Console.WriteLine("Преобразование завершилось неудачно");

Если преобразование пройдет неудачно, то исключения никакого не будет выброшено, просто метод TryParse возвратит false, а переменная number будет содержать значение по умолчанию.

Convert

Класс Convert представляет еще один способ для преобразования значений. Для этого в нем определены следующие статические методы:

  • ToBoolean(value)

  • ToByte(value)

  • ToChar(value)

  • ToDateTime(value)

  • ToDecimal(value)

  • ToDouble(value)

  • ToInt16(value)

  • ToInt32(value)

  • ToInt64(value)

  • ToSByte(value)

  • ToSingle(value)

  • ToUInt16(value)

  • ToUInt32(value)

  • ToUInt64(value)

В качестве параметра в эти методы может передаваться значение различных примитивных типов, необязательно строки:

int n = Convert.ToInt32("23");
bool b = true;
double d = Convert.ToDouble(b);
Console.WriteLine($"n={n}  d={d}");

Однако опять же, как и в случае с методом Parse, если методу не удастся преобразовать значение к нужному типу, то он выбрасывает исключение FormatException.

НазадВперед

Операторы явного преобразования типов данных

В языке C++ есть 5 видов операций явного преобразования типов:

   конвертация C-style;

   применение оператора static_cast;

   применение оператора const_cast;

   применение оператора dynamic_cast;

   применение оператора reinterpret_cast.

На этом уроке мы рассмотрим конвертацию C-style и оператор static_cast. Оператор dynamic_cast мы будем рассматривать, когда дойдем до указателей и наследования. Применения операторов const_cast и reinterpret_cast следует избегать, так как они полезны только в редких случаях и могут создать немало проблем, если их использовать неправильно.

Правило: Избегайте использования const_cast и reinterpret_cast, если у вас нет на это веских причин.

Преобразование String в массив char

Тип данных Char позволяет объявлять текстовые строки несколькими способами:

  • char myStr1; – в данном случае объявлен массив определенного размера.
  • char myStr2 = {‘a’, b, ‘c’, ‘d’, ‘e’}; – объявлен сам массив. Конечный символ не записанявно, его прибавит сам компилятор.
  • char myStr3 = {‘a’, b, ‘c’, ‘d’, ‘e’’/0’}; – объявлен массив, при этом в конце прописан признак окончания строки.
  • char myStr4 = “abcde”; – инициализация массива строковой постоянной. Размер и завершающий символ добавляются автоматически компилятором.
  • char myStr5 = “abcde”; – инициализация массива с точным указанием его размера.
  • char myStr 6 = “abcde”; – аналогично, но размер указан больше для возможности использования строк большей длины.

Еще раз напомним, что в типе данных char строковые константы нужно записывать в двойные кавычки «Abcde», а одиночные символы – в одинарные ‘a’.

Конвертировать строку в массив сhar array можно при помощи следующего кода:

String stringVar = “111”;

char charBufVar;

stringVar.toCharArray(charBufVar, 20);

Можно сделать обратное преобразование – char to string.

char[] chArray = “start”;

String str(chArray);

Пример преобразования String to const char*. Указание звездочкой char*означает, что это массив указателей.

String stringVar=string (`start);

Char charVar;

stringVar.toCharArray(charVar, sizeof(charVar));

Как преобразовать строку в число в Java?

Речь идёт о преобразовании String to Number

Обратите внимание, что в наших примерах, с которыми будем работать, задействована конструкция try-catch. Это нужно нам для обработки ошибки в том случае, когда строка содержит другие символы, кроме чисел либо число, которое выходит за рамки диапазона предельно допустимых значений указанного типа

К примеру, строку «onlyotus» нельзя перевести в тип int либо в другой числовой тип, т. к. при компиляции мы получим ошибку. Для этого нам и нужна конструкция try-catch.

Преобразуем строку в число Java: String to byte

Выполнить преобразование можно следующими способами:

C помощью конструктора:

    try {
        Byte b1 = new Byte("10");
        System.out.println(b1);
    } catch (NumberFormatException e) {
        System.err.println("Неправильный формат строки!");
    }

С помощью метода valueOf класса Byte:

    String str1 = "141";
    try {
        Byte b2 = Byte.valueOf(str1);
        System.out.println(b2);
    } catch (NumberFormatException e) {
        System.err.println("Неправильный формат строки!");
    }

С помощью метода parseByte класса Byte:

    byte b = ;
    String str2 = "108";
    try {
        b = Byte.parseByte(str2);
        System.out.println(b);
    } catch (NumberFormatException e) {
        System.err.println("Неправильный формат строки!");
    }

А теперь давайте посмотрим, как выглядит перевод строки в массив байтов и обратно в Java:

    String str3 = "20150";
    byte[] b3 = str3.getBytes();
    System.out.println(b3);

    //массив байтов переводится обратно в строку 
    try {
      String s = new String(b3, "cp1251");
      System.out.println(s);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }

Преобразуем строку в число в Java: String to int

Здесь, в принципе, всё почти то же самое:

Используем конструктор:

    try { 
        Integer i1 = new Integer("10948");
        System.out.println(i1);
    }catch (NumberFormatException e) {  
        System.err.println("Неправильный формат строки!");  
    }   

Используем метод valueOf класса Integer:

    String str1 = "1261";
    try {
        Integer i2 = Integer.valueOf(str1);
        System.out.println(i2);    
    }catch (NumberFormatException e) {  
        System.err.println("Неправильный формат строки!");  
    }  

Применяем метод parseInt:

    int i3 = ;
    String str2 = "203955";
    try {
        i3 = Integer.parseInt(str2);
        System.out.println(i3);  
    } catch (NumberFormatException e) {  
        System.err.println("Неправильный формат строки!");  
    }     

Аналогично действуем и для других примитивных числовых типов данных в Java: short, long, float, double, меняя соответствующим образом названия классов и методов.

Преобразование строки в число путём приведения типов

Возможность приведения типов есть во многих языках программирования, и PHP исключением не является. В PHP мы тоже можем поменять тип переменной, применив для этого синтаксис приведения типов: (int)$variable, (float)$variable. Посмотрим, как это выглядит в коде:

$stringNumberToParse = "2";
//var_dump($stringNumberToParse); // string '2' (length=1)

// Convert the string to type int
$parsedInt = (int)$stringNumberToParse;

//var_dump(is_int($parsedInt)); // boolean true
//var_dump($parsedInt); // int 2

echo $parsedInt;

Результатом будет следующий вывод:

2

Итак, что тут происходит:
1. Объявляется переменная, содержащая строку 1.
2. Есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях).
3. С помощью синтаксиса приведения типа для переменной устанавливается префикс (int).
4. Полученное числовое значение присваивается переменной $parsedInt.

Приведение типов можно успешно использовать и в PHP 5 и в PHP 7+.

Приведение к числу с плавающей точкой

Строки преобразуются по следующим правилам:

  • Если первый символ строки является цифрой, точкой, знаком или , то интерпретатор переходит к анализу второго символа, если второй символ строки является цифрой, точкой (если перед этим была цифра), буквой e или E (если перед этим была цифра или точка), то интерпретатор переходит к анализу третьего символа и так до тех пор, пока не будет обнаружен символ, который не может быть преобразован в числовое значение, после этого интерпретатор возвращает полученное число с плавающей точкой.
  • Если строка пустая или первый символ строки не является цифрой, точкой, знаком или , она преобразуется в 0.
echo (float)"12abc", "<br>";    // 12
echo (float)"a123bc", "<br>";   // 0
echo (float)"-12", "<br>";      // -12
echo (float)"12.3", "<br>";     // 12.3
echo (float)".13", "<br>";      // 0.13
echo (float)"1.2e5", "<br>";    // 120000
echo (float)"1.e5";             // 100000

Значения других типов сначала преобразуются в , а затем уже из происходит преобразование в тип .

Логическое преобразование

Преобразование к происходит в логическом контексте, таком как , и при применении логических операторов.

Все значения, которые интуитивно «пусты», становятся . Их несколько: , пустая строка, , и .

Остальное, в том числе и любые объекты – .

Полная таблица преобразований:

Значение Преобразуется в…
,
Числа Все , кроме , — .
Строки Все , кроме пустой строки —
Объекты Всегда

Для явного преобразования используется двойное логическое отрицание или вызов .

Обратите внимание: строка становится

В отличие от многих языков программирования (например PHP), в JavaScript является , как и строка из пробелов:

Логическое преобразование интересно тем, как оно сочетается с численным.

Два значения могут быть равны, но одно из них в логическом контексте , другое – .

Например, равенство в следующем примере верно, так как происходит численное преобразование:

… А в логическом контексте левая часть (0) даст , правая («\n0\n») – , так как любая не пустая строка в логическом контексте равна :

С точки зрения преобразования типов в JavaScript это совершенно нормально. При сравнении с помощью «==» – численное преобразование, а в – логическое, только и всего.

Неявные преобразованияImplicit conversions

Для встроенных числовых типов неявное преобразование можно выполнить, если сохраняемое значение может уместиться в переменной без усечения или округления.For built-in numeric types, an implicit conversion can be made when the value to be stored can fit into the variable without being truncated or rounded off. При использовании целочисленных типов это означает, что диапазон исходного типа является надлежащим подмножеством диапазона для целевого типа.For integral types, this means the range of the source type is a proper subset of the range for the target type. Например, переменная типа long (64-разрядное целое число) может хранить любое значение, которое может хранить переменная int (32-разрядное целое число).For example, a variable of type long (64-bit integer) can store any value that an int (32-bit integer) can store. В следующем примере компилятор неявно преобразует значение справа в тип перед назначением .In the following example, the compiler implicitly converts the value of on the right to a type before assigning it to .

Полный список всех неявных числовых преобразований см. в разделе в статье Встроенные числовые преобразования.For a complete list of all implicit numeric conversions, see the section of the Built-in numeric conversions article.

Для ссылочных типов неявное преобразование всегда предусмотрено из класса в любой из его прямых или косвенных базовых классов или интерфейсов.For reference types, an implicit conversion always exists from a class to any one of its direct or indirect base classes or interfaces. Никакой специальный синтаксис не требуется, поскольку производный класс всегда содержит все члены базового класса.No special syntax is necessary because a derived class always contains all the members of a base class.

Логическое преобразование в JavaScript

Кроме преобразования в число и строку, в JavaScript существует и логическое преобразование. Это преобразование в JavaScript является наиболее простым и происходит в логических операторах. Вдобавок к этому, может выполняться посредством функции Boolean(value).

Правила логического преобразования:
— интуитивно «пустые» значения (типа пустой строки, 0, undefined, null и NaN) становятся false;
— все прочие значения становятся true.

alert( Boolean(1) ); // true
alert( Boolean() ); // false

alert( Boolean("Здравствуйте!") ); // true
alert( Boolean("") ); // false

Ещё один нюанс

Следует заметить, что строка с нулём «0» — это true. Некоторые языки программирования (тот же PHP) воспринимают строку «0» в качестве false. Однако в JavaScript всё иначе, и если строка не является пустой, она всегда true.

alert( Boolean("0") ); // true
alert( Boolean(" ") ); // пробел — это тоже true (любая непустая строка является true)

Вступление

Когда вы хотите изменить один тип данных на другой, более крупный (по размеру/диапазону), то неявное преобразование является хорошим вариантом.

Но многие начинающие программисты часто пытаются сделать что-то вроде следующего: . Однако, поскольку и являются целыми числами, никакого числового расширения не происходит. Выполняется целочисленное деление , результатом которого будет значение , которое затем неявно преобразуется в и присвоится переменной !

В случае, когда вы используете (такие как или ), замена одного или обоих целочисленных литералов значением типа с плавающей точкой ( или ) приведет к конвертации обоих операндов в значения типа с плавающей точкой и выполнится деление типа с плавающей точкой.

Но что будет, если использовать переменные? Например:

int i1 = 11;
int i2 = 3;
float x = i1 / i2;

1
2
3

inti1=11;

inti2=3;

floatx=i1i2;

Значением переменной будет . Как сообщить компилятору, что мы хотим использовать деление типа с плавающей точкой вместо целочисленного деления? Правильно! Использовать один из операторов явного преобразования типов данных, чтобы указать компилятору выполнить явное преобразование.

Преобразование строки в число функцией intval()

Представим, что у нас есть строка, включающая в себя один символ — «2». Вот, как будет выглядеть PHP-код преобразования этой строки в число с помощью встроенной функции intval():

$stringNumberToParse = "2";
// var_dump($stringNumberToParse); // string '2' (length=1)

// Convert the string to type int
$parsedInt = intval($stringNumberToParse);

// var_dump(is_int($parsedInt)); // boolean true
// var_dump($parsedInt); // int 2

echo $parsedInt;

На выходе получим 2, но уже в виде числа, а не строки.

Давайте пошагово разберём, что же произошло, и расшифруем каждую строчку кода:
1. Объявляется переменная, содержащая строку с символом «1».
2. У нас есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях).
3. Переменная $stringNumberToParse передаётся в функцию intval() в виде аргумента (если речь идёт не о целых числах, используют floatval()).
4. Функция возвращает нам число, которое мы присваиваем с помощью переменной $parsedInt.

Остаётся добавить, что вышеописанная функция работает в PHP разных версий: 4, 5, 7+.

Приведение к целому числу

При приведении в , преобразуется в 0 (нуль), а — в 1 (единицу). При приведении в , дробная часть будет округлена в сторону нуля. Значение преобразуется в 0:

echo (int)FALSE, "<br>";   // 0
echo (int)TRUE, "<br>";    // 1
echo (int)12.3, "<br>";    // 12
echo (int)NULL;            // 0

Строки преобразуются по следующим правилам:

  • Если первый символ строки является цифрой, знаком или , то интерпретатор переходит к анализу второго символа, если второй символ строки является цифрой, то интерпретатор переходит к анализу третьего символа и так до тех пор, пока не будет обнаружен символ отличный от цифры, после этого интерпретатор возвращает полученное целое число.
  • Если строка пустая или первый символ строки не является цифрой, знаком или , она преобразуется в 0.
echo (int)"12abc", "<br>";    // 12
echo (int)"a123bc", "<br>";   // 0
echo (int)"-12", "<br>";      // -12
echo (int)"12.3", "<br>";     // 12
echo (int)"";                 // 0

Для других типов поведение преобразования в не определено. Поэтому не нужно полагаться на любое наблюдаемое поведение, так как оно может измениться без предупреждения.

ValueError Exception при преобразовании строки Python в int

Сценарий: Если какая-либо из входных строк содержит цифру, не принадлежащую к десятичной системе счисления.

В приведенном ниже примере, если вы хотите преобразовать строку «A» в целочисленное значение A с основанием 16, и мы не передаем base = 16 в качестве аргумента методу int(), тогда это вызовет исключение ValueError.

Поскольку, хотя ‘A’ является шестнадцатеричным значением, оно не принадлежит к десятичной системе счисления, оно не будет рассматривать A как эквивалент десятичного числа 10, пока мы не передадим base = 16 в качестве аргумента в функцию int().

Пример:

string_num = 'A'
print("The data type of the input variable is:\n")
print(type(string_num))
result = int(string_num)

print(type(result))
print("The converted variable from string(base 16) to int:\n")
print(result) 

Выход:

The data type of the input variable is:

<class 'str'>
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    result = int(string_num)
ValueError: invalid literal for int() with base 10: 'A'

Преобразование в число в JavaScript

Преобразование в число (численное преобразование) осуществляется в математических функциях и выражениях. Допустим, когда операция деления (/) применяется не к числу:

alert( "6"  "2" ); // 3, Строки преобразовываются в числа

Кроме того, можно задействовать функцию Number(value) — это позволит явно преобразовать value к числу:

let str = "123";
alert(typeof str); // string

let num = Number(str); // станет числом 123

alert(typeof num); // number

Также применяется явноe преобразование в число. Это актуально, если мы ожидаем получить, допустим, число из строкового контекста (к примеру, из текстовых полей форм).

Когда строка не может быть приведена к числу явно, результатом преобразования станет NaN:

let age = Number("Любая строка вместо числа");

alert(age); // NaN, преобразование  не получилось

Существуют правила преобразования в число:

А теперь приведём примеры:

alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN (ошибка чтения числа в "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0

Обратите внимание, что undefined и null и ведут себя по-разному. Если null становится нулём, то undefined приводится к NaN

Кроме того, нужно учесть, что сложение (+) объединяет строки. Как известно, практически все математические операторы выполняют преобразование в число. Исключением является +. Если одно из слагаемых будет строкой, все остальные тоже приведутся к строкам.

Речь идёт о конкатенации (присоединении) друг к другу:

alert( 1 + '2' ); // '12' (строка справа)
alert( '1' + 2 ); // '12' (строка слева)

Такое происходит, когда хотя бы один из аргументов — это строка. В остальных случаях значения складываются, как числа.

Оператор static_cast

В языке C++ есть еще один оператор явного преобразования типов данных — оператор static_cast. Ранее, на уроке о символьном типе данных char, мы уже использовали оператор static_cast для конвертации переменной типа char в тип int, выводя вместо символа целое число:

char c = 97;
std::cout << static_cast<int>(c) << std::endl; // в результате выведется 97, а не ‘a’

1
2

charc=97;

std::cout<<static_cast<int>(c)<<std::endl;// в результате выведется 97, а не ‘a’

Оператор static_cast лучше всего использовать для конвертации одного фундаментального типа данных в другой:

int i1 = 11;
int i2 = 3;
float x = static_cast<float>(i1) / i2;

1
2
3

inti1=11;

inti2=3;

floatx=static_cast<float>(i1)i2;

Основным преимуществом оператора static_cast является проверка его выполнения компилятором во время компиляции, что усложняет возможность возникновения непреднамеренных проблем.

Конвертировать с использованием StringBuffer или StringBuilder

StringBuilder и StringBuffer — это классы, используемые для объединения нескольких значений в одну строку. StringBuffer является потокобезопасным, но медленным, тогда как StringBuilder не является поточно-ориентированным, но работает быстрее.

Пример 1

class Method5
{
  public static void main(String args[]) 
  { 
    int number1 = -1234;
    StringBuilder sb = new StringBuilder(); 
    sb.append(number1); 
    String str1 = sb.toString(); 
    System.out.println("With StringBuilder method: string = " + str1); 
    StringBuffer SB = new StringBuffer(); 
    SB.append(number1); 
    String str2 = SB.toString(); 
    System.out.println("With StringBuffer method: string = " + str2); 
  } 
}

Вывод

With StringBuilder method: string = -1234
With StringBuffer method: string = -1234

Объект StringBuilder представляет объект String, который можно изменять и обрабатывать как массив с последовательностью символов. Чтобы добавить новый аргумент в конец строки, экземпляр StringBuilder реализует метод append().

Пример 2

class Method6
{
  public static void main(String args[]) 
  { 
	String str1 = new StringBuilder().append(1234).toString(); 
    System.out.println("With StringBuilder method: string = " + str1); 
    String str2 = new StringBuffer().append(1234).toString(); 
    System.out.println("With StringBuffer method: string = " + str2); 
  } 
}

Вывод

With StringBuilder method: string = -1234
With StringBuffer method: string = -1234

Наиболее важным является вызов метода toString(), чтобы получить строковое представление данных.

Преобразование строк в числаConversion of Strings to Numbers

Функцию можно использовать для явного преобразования цифр из строки в число.You can use the function to explicitly convert the digits in a string to a number. считывает строку, пока не встретится символ, отличный от цифры, пробела, табуляции, перевода строки или точки. reads the string until it encounters a character other than a digit, space, tab, line feed, or period. Последовательности «&O» и «&H» изменяют основание системы счисления и завершают сканирование.The sequences «&O» and «&H» alter the base of the number system and terminate the scanning. До тех пор пока не будет остановлено чтение, преобразует все соответствующие символы в числовое значение.Until it stops reading, converts all appropriate characters to a numeric value. Например, следующая инструкция возвращает значение .For example, the following statement returns the value .

Когда Visual Basic преобразует строку в числовое значение, она использует региональные параметры , заданные на панели управления Windows, для интерпретации разделителя групп разрядов, десятичного разделителя и символа валюты.When Visual Basic converts a string to a numeric value, it uses the Regional Options settings specified in the Windows Control Panel to interpret the thousands separator, decimal separator, and currency symbol. Это означает, что преобразование может быть выполнено в одном параметре, но не в другом.This means that a conversion might succeed under one setting but not another. Например, допустим в английской (США) национальной настройке, но не на французском языке.For example, is acceptable in the English (United States) locale but not in any French locale.

Делаем выводы

Итак, в JavaScript есть три самых популярных преобразований: в строку, в число и логическое преобразование. Вспомним основные моменты статьи для наилучшего усвоения материала:
1.Преобразование в строку — происходит, если нужно что-то вывести. Вызывается посредством String(value). Работает очевидным образом (для примитивных значений).
2.Преобразование в число — происходит в математических операциях. Вызывается посредством Number(value). Подчиняется правилам:

3.Логическое преобразование — происходит в логических операторах. Вызывается Boolean(value), подчиняется правилам:

В целом правила несложны и запоминаются довольно легко. Тем не менее начинающие разработчики на JavaScript могут допускать следующие ошибки:
— undefined при численном преобразовании становится не , а NaN;
— при логическом преобразовании «0» и строки из одних пробелов типа » » всегда являются true.

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

– Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью . Для примитивных значений работает очевидным образом.

– Происходит в математических операциях. Может быть вызвано с помощью .

Преобразование подчиняется правилам:

Значение Становится…
Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем , иначе из непустой строки «считывается» число. При ошибке результат .

– Происходит в логических операциях. Может быть вызвано с помощью .

Подчиняется правилам:

Значение Становится…
, , , ,
любое другое значение

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • при численном преобразовании становится , не .
  • и строки из одних пробелов типа при логическом преобразовании всегда .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий