Вопрос по java – Как System.out.printIn () может принимать целые числа?

8

Поэтому я начал изучать Java несколько дней назад и получил вопрос. Для следующего выражения:

String foo=123;

не допускается. Однако вSystem.out.printIn()мы можем использовать что-то вроде:

int x=5;
System.out.println(x);

Поскольку неявное присвоение целого числа строке не допускается, почему вышеприведенное выражение работает? Кто-нибудь может дать подробное объяснение? Мне также интересно, когда мы можем использовать такого рода неявные вещи, а когда мы не можем.

Пожалуйста прочтите это:meta.stackexchange.com/questions/5234 David Heffernan

Ваш Ответ

5   ответов
10

Есть так много перегруженных методовPrintStream System.out:

println(boolean x)
println(char x)
println(int x)
println(long x)
println(float x)
println(double x)
println(char x[])
println(String x)
println(Object x)
Error: User Rate Limit Exceeded OneZero
Error: User Rate Limit ExceededObject.toString()Error: User Rate Limit Exceeded
1

Я предполагаю, что вы имеете в виду, что «println не printin», java имеет функцию println для каждого типа данных, так что вы можете вызывать println для логических значений, целых, строк и т. Д., И он выберет правильную функцию. Конечно, вы не можете назначить целое число строковой переменной, потому что они разных типов.

15

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

Посмотрите здесь:PrintStream

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

Посмотрите на API дляPrintStream (System.out этоPrintStream). У него есть методыprintln(), println(boolean), println(char), println(char[]), println(double), println(float), println(int), println(long), println(Object) а такжеprintln(String), Это называетсяперегрузка метода (прокрутите вниз, чтобы найти раздел о перегрузке метода).

Если вы хотите создатьString из целочисленного литерала вы можете заключить его в кавычки (String s = "123";) или использоватьInteger.toString (String s = Integer.toString(123);) или жеString.valueOf (String s = String.valueOf(123);).

3

Статический членout классаSystem этоPrintStream у которого есть метод с подписьюprintln(int).

Похожие вопросы