Как работает System.out.print ()?

Один ужасный, ужасный способ добиться этого - отменить обязанности:

class SomeObject():
    def __init__(self, def_name):
        self.defined_name = def_name
        globals()[def_name] = self

SomeObject("ThisObject")
print ThisObject.defined_name

Если вы хотите поддержать что-то иное, чем глобальное пространство, вам придется сделать что-то еще более ужасное.

17
задан Tom 12 July 2015 в 16:23
поделиться

2 ответа

Это очень чувствительный момент, чтобы понять, как работает System.out.print. Если первый элемент - String, то оператор плюс (+) работает как оператор String concate. Если первый элемент целочисленный плюс (+), оператор работает как математический оператор.

public static void main(String args[]) {
    System.out.println("String" + 8 + 8); //String88
    System.out.println(8 + 8+ "String"); //16String
}
1
ответ дан Samuel Philipp 12 July 2015 в 16:23
поделиться

Очевидно, что компилятор был сделан запутанным способом, хотя разработчики компилятора думали, что они добавили некоторую смекалку. Истинная мудрость, которую они действительно должны добавить, состоит в том, чтобы смотреть весь аргумент и последовательно интерпретировать оператор +. Например, System.out.println(1+2+"hello"+3+4); должен вывести 3hello7 вместо 3hello34

0
ответ дан Thomas Fritsch 12 July 2015 в 16:23
поделиться
Другие вопросы по тегам:

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