2015-03-30 4 views
0

Это сообщение может считаться неуместным для stackoverflow, хотя я не пытаюсь оскорбить язык Java или что-то в этом роде. Мне нравится кодирование на Java, но есть что-то относительно System.out.println, о котором я долго размышлял.Почему Java использует System.out.print/println вместо печати или печати?

Почему мы всегда вынуждены печатать System.out.println() или System.out.print() каждый раз, когда хотим распечатать? Конечно, мы могли бы сделать функцию пустот, чтобы сэкономить время и энергию в программах, которые мы будем иметь несколько операторов печати (которые я иногда делаю) как так:

public static void print(String output) { 
    System.out.print(output); 
} 

, а затем просто называют печать (и если вы действительно хотите будьте осторожны, вы можете перегрузить функцию аргументами с использованием ints, double, chars и т. д.). Но почему же сам язык Java еще не позволяет нам печатать на консоль, просто печатая печать? Некоторые языки (например, Python) делают печать на консоль такой опрятной и простой - так почему же не Java?

Опять же - я не говорю, что язык Java плохо разработан или пытается запустить поток, предназначенный для bash Java. Я уверен, что у дизайнеров языка были причины для его разработки так, как они это сделали, и это поможет мне понять, почему это так. Было бы гораздо проще просто печатать шрифт вместо System.out.print, поэтому должны быть причины, почему мы должны печатать System.out.print - я просто не могу понять эти причины. Я пробовал искать информацию по этой проблеме и не могу найти что-либо, что имеет отношение к проблеме.

Пожалуйста, воздержитесь от самоуважения ответов на язык Java - я хочу, чтобы фактические факты объясняли это явление.

+0

Я сомневаюсь, что фактические разработчики языка увидят ваш вопрос, так что вы вряд ли получите ответ, который вы ищете. –

+0

На вопрос не может быть дан окончательный ответ, поэтому он не подходит для этого форума. Однако вы делаете ряд предположений, которые неверны. Существует несколько способов избежать столь большого набора текста, если вы этого не хотите. Ваша IDE будет поддерживать шаблон 'sout', и вы можете использовать' out.println() 'вместо статического импорта или просто' println() 'путем добавления метода. Фактически вы можете использовать только 'p()', если хотите. –

+1

Вы можете увидеть: http://stackoverflow.com/questions/3406703/whats-the-meaning-of-system-out-println-in-java – chengpohi

ответ

0

Просто Java не имеет глобальных функций.

Кроме того, в соответствии с The Java Language Environment (в 90-ых книги в соавторстве с Джеймсом Гослинг):

Java не имеет никаких функций. Объектно-ориентированное программирование заменяет функциональные и процедурные стили. Смешивание двух стилей приводит лишь к путанице и разбавляет чистоту объектно-ориентированного языка. Все, что вы можете сделать с помощью функции, которую вы можете сделать, также определяется путем определения класса и создания методов для этого класса.

Нельзя сказать, что функции и процедуры по своей сути ошибочны. Но, учитывая классы и методы, мы ограничимся только одним способом выражения данной задачи. Исключая функции, ваша работа как программиста чрезвычайно упрощена: вы работаете только с классами и их методами.

Таким образом, существует, по крайней мере, один аргумент дизайнера языка.


Вы можете сократить вызов статический импортом System.out:

import static System.out; 

class Example { 
    public static void main(String[] args) { 
     out.println("hello world!"); 
    } 
} 

Поскольку System.out является объектом, его метода экземпляра не может быть статический импортирована.

+0

Кроме того, вы можете статически импортировать 'import static System.out. *'. – HyperNeutrino