Akshit Gupta Ответов: 3

Тип по умолчанию для числа в java


Почему тип по умолчанию для number в Java int? Как в этом примере:

class TestClass {
    public static void main(String args[] ) throws Exception {
        A a = new A();
        a.test(5);
    }
}
class A{
    void test(short a){
        System.out.println("Short");
    }
    void test(int a){
        System.out.println("Integer");
    }
    void test(byte a){
        System.out.println("Byte");
    }
}
Он печатает целое число.. Мой вопрос: "почему тип по умолчанию для числа int в Java"?

Что я уже пробовал:

Тип по умолчанию для числового значения

3 Ответов

Рейтинг:
24

Jochen Arndt

Ты звонишь A.test() передача целого числа i Это не тип по умолчанию, а определенный вашим кодом:

int i = sc.nextInt();


[РЕДАКТИРОВАТЬ]
Цитата:
Сэр, я изменил код, чтобы передать 5 вместо int i.. Я получаю целое число
5-это числовой целочисленный литерал.
Да, когда в литерале нет подсказки типа, это int.
Если у него есть постфикс "L", то это a long:
a.test(5L);

Если литерал содержит точку или показатель степени, то это double.
Если у него есть постфикс "F", то это a float.

Если вы хотите рассматривать его как другой тип вы также можете использовать литье:
a.test((short)5);
[/РЕДАКТИРОВАТЬ]


Akshit Gupta

Сэр, я изменил код, чтобы передать 5 вместо int i.. Я получаю целое число

Jochen Arndt

Смотрите мой ответ на обновления.
Однако редактирование вопроса путем удаления частей, на которые ссылаются решения, не является хорошим стилем. Другие, читающие вопрос и ответы позже, могут этого не понять. Лучше оставить исходный код (например, комментируя его) и указать новые добавленные строки, как я сделал в своем обновленном ответе.

Рейтинг:
1

CPallini

Ваш код этого не доказывает.
Вы проходите мимо Ан int к test перегрузки.
По сути дела, Java строго типизирован: переменные не имеют типа по умолчанию, они имеют свой собственный тип. назначенный тип.


Akshit Gupta

Сэр, я изменил код, чтобы передать 5 вместо int i.. Я получаю целое число

CPallini

5 - это буквальное значение.
Видеть
https://en.wikibooks.org/wiki/Java_Programming/Literals

Рейтинг:
0

OriginalGriff

Хм.
Подсказка:

int i = sc.nextInt();
...
a.test(i);
Вам конкретно заявляю i как целое число, так что вполне понятно, что он рассматривает его как целое число!


Akshit Gupta

Сэр, я изменил код, чтобы передать 5 вместо int i.. Я получаю целое число

OriginalGriff

"int i = ..."
Объявляет "i" как целое число. Все, что вы помещаете в целочисленную переменную, будет ... целое число!