NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Преобразование Int
в String
:
let x : Int = 42
var myString = String(x)
И наоборот - преобразование String
в Int
:
let myString : String = "42"
let x: Int? = myString.toInt()
if (x != nil) {
// Successfully converted String to Int
}
Или, если вы используя Swift 2 или 3:
let x: Int? = Int(myString)
Преобразование String в Int
var numberA = Int("10")
Print(numberA) // It will print 10
К скрытому Int в String
var numberA = 10
1st way)
print("numberA is \(numberA)") // It will print 10
2nd way)
var strSomeNumber = String(numberA)
или
var strSomeNumber = "\(numberA)"
в swift 3.0, мы можем преобразовать Int
в String
и String
в Int
//convert Integer to String in Swift 3.0
let theIntegerValue :Int = 123 // this can be var also
let theStringValue :String = String(theIntegerValue)
//convert String to Integere in Swift 3.0
let stringValue : String = "123"
let integerValue : Int = Int(stringValue)!
integerValue
- Int
. то для него не может быть нулевого значения. поэтому компилятор говорит вам разворачивать его. если вы хотите этого избежать, используйте его как let integerValue = Int(stringValue)
. то у вас не возникнет проблема. Извините за поздний ответ.
– Anuradh S
22 May 2017 в 09:10
по какой-либо причине принятый ответ не сработал для меня. Я пошел с таким подходом:
var myInt:Int = 10
var myString:String = toString(myInt)
Несколько способов сделать это:
var str1:String="\(23)"
var str2:String=String(format:"%d",234)
В swift 3.0 вы можете изменить целое число на строку, как указано ниже
let a:String = String(stringInterpolationSegment: 15)
. Другой способ -
let number: Int = 15
let _numberInStringFormate: String = String(number)
// или любое целое число вместо 15
Swift 2:
var num1 = 4
var numString = "56"
var sum2 = String(num1) + numString
var sum3 = Int(numString)
let a =123456888
var str = String(a)
ИЛИ
var str = a as! String
Проверьте ответ ниже:
let x : Int = 45
var stringValue = "\(x)"
print(stringValue)
String
уже имеет конструктор, принимающий Int
– Gabriele Petronella
11 June 2014 в 12:12
String
имеет конструктор, который принимает Int
. Его гораздо яснее и кратким.
– Isuru
15 September 2014 в 07:30
Swift 4:
let x:Int = 45
let str:String = String(describing: x)
String(describing:)
никогда не должен использоваться ни для чего другого, кроме отладки. Это не обычный инициализатор строки.
– Moritz
31 March 2018 в 09:33
Swift 4:
Попытка показать значение в метке без дополнительного () слова.
здесь x является значением Int с использованием.
let str:String = String(x ?? 0)
String(describing:)
никогда не следует использовать ни для чего другого, кроме отладки. Это не обычный инициализатор строки.
– Moritz
31 March 2018 в 09:33
String()
инициализатор. Но не дайте ему опционально, сначала распакуйте. Или, как в вашем примере, используйте ??
. Например: let str = String(x ?? 0)
– Moritz
31 March 2018 в 10:07
Вот 4 метода:
var x = 34
var s = String(x)
var ss = "\(x)"
var sss = toString(x)
var ssss = x.description
Я могу себе представить, что у некоторых людей будет проблема с ss. Но если вы хотите создать строку, содержащую другой контент, то почему бы и нет.
var ss = "\(x)"
- это именно то, как они советовали преобразовать double в строку. Я думал, что это легко и просто.
– markhunte
29 January 2015 в 01:00
String(describing:)
никогда не должен использоваться ни для чего другого, кроме отладки. Это не обычный инициализатор строки.
– Moritz
3 April 2018 в 09:15
Просто для полноты вы также можете использовать:
let x = 10.description
или любое другое значение, которое поддерживает описание.
let Str = "12"
let num: Int = 0
num = Int (str)
iam, используя этот простой подход
String to Int:
var a = Int()
var string1 = String("1")
a = string1.toInt()
и от Int до String:
var a = Int()
a = 1
var string1 = String()
string1= "\(a)"
Для тех, кто хочет преобразовать строку Int в строку Unicode, вы можете сделать следующее:
let myInteger: Int = 97
// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
return ""
}
// convert UnicodeScalar to String
let myString = String(myUnicodeScalar)
// results
print(myString) // a
Или, альтернативно:
let myInteger: Int = 97
if let myUnicodeScalar = UnicodeScalar(myInteger) {
let myString = String(myUnicodeScalar)
}
String
может принимать значение UnicodeScalar
.
– Suragch
2 January 2017 в 06:17
Чтобы сэкономить время и хлопот в будущем, вы можете сделать расширение Int. Обычно я создаю общий файл кода, где я добавляю расширения, перечисления и другие забавные вещи. Вот как выглядит код расширения:
extension Int
{
func toString() -> String
{
var myString = String(self)
return myString
}
}
. Затем, когда вы хотите преобразовать int в строку, вы можете просто сделать что-то вроде:
var myNumber = 0
var myNumberAsString = myNumber.toString()
toInt
или toInt()
.
– Maury Markowitz
10 February 2016 в 18:16
myNumber.description
. Нет необходимости в каких-либо расширениях.
– nyg
16 August 2017 в 09:44
В Swift 3.0:
var value: Int = 10
var string = String(describing: value)
String(describing:)
никогда не должен использоваться ни для чего другого, кроме отладки. Это не обычный инициализатор строки.
– Moritz
31 March 2018 в 09:34
toString
, показанную в ответе ниже. – ybakos 28 January 2015 в 23:20Int
, похоже, не имеет методаtoString()
, по крайней мере, не в редакторе Xcode 6.2: я вижу, что существует глобальный методtoString
( notInt.toString()
), каждый знает, что преимущество перед использованием конструктораString()
? – Nilloc 13 April 2015 в 01:58String(describing: x)
– David Gay 20 February 2018 в 18:23