Integer.parseInt не делает то же самое, что и приведение типов.
Давайте посмотрим на ваш первый пример:
int randomNumber=(int) (Math.random()*5)
Math.random возвращает двойное число, и когда вы умножаете двойное число на целое число, Java считает результат двойным. Таким образом, выражение Math.random()*5 имеет тип double. То, что вы пытаетесь сделать, это присвоить это значение переменной типа int. По умолчанию Java не позволит вам присвоить двойное значение переменной типа int, если вы явно не сообщите компилятору, что это нормально. По сути, вы можете думать о приведении типа double к типу int как о сообщении компилятору: «Я знаю, что эта переменная типа int не может содержать десятичную часть этого значения типа double, но это нормально, просто усеките ее».
Теперь взгляните на преобразование String в int:
int value = Integer.parseInt("5");
Строка «5» не может быть немедленно преобразована в целое число. В отличие от double, которые по определению могут быть преобразованы в целое число путем отбрасывания десятичной части, String нельзя легко или последовательно преобразовать в int. «5», «042» и «1000» имеют целочисленное представление, но что-то вроде «Hello, World!» не. Из-за этого нет функции языка первого порядка для преобразования String в int. Вместо этого вы используете метод для анализа строки и возврата значения.
Итак, чтобы ответить на все ваши вопросы:
Почему два разных способа сделать значение int ?
Вы должны принять во внимание тип значения, которое вы конвертируете. Если вы конвертируете примитив в int, вы можете использовать приведение, если вы конвертируете объект, вам нужно будет использовать какой-то метод преобразования, специфичный для этого типа.
Также я сделал поиск, и он говорит, что parseInt() принимает строку в качестве аргумента. Значит ли это, что parseInt() ТОЛЬКО для преобразования строки в целое число?
Правильный. Вы не можете передать какой-либо другой тип в метод parseInt, иначе вы получите ошибку компилятора.
А как насчет этого кастинга тогда (инт) ?? Можем ли мы также использовать это для преобразования строки в int?
Нет, приведение к типу int будет работать только для примитивных значений, а в Java String не является примитивом.
person
Mike Deck
schedule
20.05.2010
java.util.Random
. Вы можете сделатьRandom rand = new Random()
иint dieRoll = rand.nextInt(6)+1;
(обратите внимание,nextInt
возвращает 0 в (n-1), поэтому на нем лишняя 1) - person corsiKa   schedule 20.05.2010Math.random() * N
бессмыслицу. - person polygenelubricants   schedule 20.05.2010