Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Java. Создание объекта. Советы про использование String

#java


Я недавно начал изучать Java и у меня возникло несколько вопросов. 


Мне непонятно почему в Java  нет простого механизма (метода) ввода\ вывода  чего
либо. То есть когда в Pascal - это write\read или Python - print\input. В Java есть
стандартное средство вывода - System.out.println, но ввод нужно реализовывать через
импорт Scanner.
Подскажите это я чего-то не понимаю или реально в таком мощном языке
нету таких базовых методов?
Также как я понял Scanner подходит лишь для текста, а что  если мне нужно вводить
числа? Что использовать? Можно полностью написать как это будет выглядеть. 
Объясните пожалуйста, что значат аргументы в этой команде.

public static void main(String[] args)

Можно объясните принцип создание экземпляра класса. Например: 

String variable = new String ("Text");  


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

    


Ответы

Ответ 1



Java - объектно-ориентированный язык в отличие от Паскаля, и его богатая система классов ввода-вывода, базирующаяся на потоках (streams), позволяет использовать одни и те же механизмы для любых ситуаций: работа с консолью, работа с файлами, работа с сетью, работа с архивами. Раз речь зашла про класс Scanner - обратимся к документации. Класс предоставляет кучу методов для разных ситуаций: String next(String pattern) - вернет строку, если она соответствует шаблону; boolean nextBoolean() - вернет значение булева типа; int nextInt() - вернет целочисленное значение; float nextFloat() - вернет значение с плавающей точкой типа float. Это не все, то умеет Scanner, но теперь вы знаете, где искать. Это не команда. Это объявление публичного (public - доступного всем) статического (static - доступного без создания экземпляра класса) метода main, который принимает массив строк (String[] args) и ничего не возвращает (void). Согласно спецификации, метод с такой сигнатурой является точкой входа в вашу программу. То есть, при запуске в командной строке java MyClass выполнение программы начнется с этого метода в классе MyClass. В качестве массива args будут переданы аргументы из командной строки. Например, при запуске java MyClass foo bar массив args будет иметь значение ["foo", "bar"]. почему дважды вызывается Класс String в начале и при создании String variable = new String ("Text"); Класс не "вызывается", класс нельзя "вызвать". В данном случае происходит три действия: Объявляется переменная variable типа String. Создается новый экземпляр типа String через конструктор с одним аргументом "Text". Переменной variable присваивается ссылка на созданный объект. В случае со строками это можно было сократить до вида: String variable = "Text"; PS. Крайне рекомендую начать изучение Java, вооружившись одним из учебников для начинающих, там есть ответы на подобные вопросы: Книги по Java и другая литература PPS. В следующий раз, пожалуйста, соблюдайте правила и задавайте по одному вопросу за раз.

Ответ 2



В java все вводы/выводы основаны на потоках и их реализациях для консоли, файла и т.д. Чтение/запись в консоль - частный случай работы с потоками. Scanner - класс, имеющий в себе реализацию чтения чего-либо из потока. Но из консоли читать не только с его помощью можно. Аргументы String[] args - это те параметры, которые будут переданы в метод при вызове его из коммандной строки. Т.е. если будет вызов вида java MyClass param1 param2, то args - это строковый массив, содержащий строки param1 и param2. Если вызов происходит без параметров, этот массив будет пустым. Первый String - указание типа объявляемой далее переменной variable. В java имеет место статическая типизация, в отличие от Python. И в отличие от паскаля, где сначала объявляются все переменные, а затем происходит их использование, в java возможно объявление переменных в любом месте, главное чтобы до их непосредственного использования. Второй String - это вызов конструктора класса String с передачей ему параметра. В результате получаем объект класса String, который присваивается переменной variable.

Ответ 3



1 простых методов типа write\read в Java нет. Ввод чисел можно сделать так: Scanner scanner=new Scanner(System.in); String st=scanner.nextLine(); int i=Integer.parseInt(st); 2 это аргументы командной строки с которыми запускается ваше приложение. 3 первое слово String задает тип переменной variable, new String ("Text") создает новый объект String. Вообще можно сразу и не инициализировать variable: String variable; /...какой-то код.../ variable=new String("text");

Ответ 4



Проблема с выводом не ясна. Чтобы что-то вывести в консоль просто пишите System.out.println(ТУТ_ЧТО_ТО); В качестве аргумента (ТУТ_ЧТО_ТО) можно подставить или примитив или объект. В последнем случае он будет автоматически преобразован с строку и выведен в консоль. В метод main передаётся массив строк, являющихся параметрами для запуска программы. Например, запуская через командную строку, вы можете передать что-то и получить это в качестве аргкумента метода main. Класс не вызывается дважды. Сначала объявляется его тип, указывается имя переменной-ссылки, после чего создаётся объект и присваивается этой переменной-ссылке. Сделано так, а не иначе т.к. java - язык со строгой типизацией. Например в php тип переменной не указывают и вы можете всё что угодно ей присвоить. И никакой компилятор вас не одёрнет, если вы попытаетесь сложить число 1.(3) со строкой "Вася".

Комментариев нет:

Отправить комментарий