Здравствуйте. Начал изучать Java. Вот собственно код одной из первых написанных программ (описание программы и вопросы даны после кода):
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ReadAndParse {
public static void main(String[] args) throws Exception {
double a, b, c;
double D;
double x1, x2;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("A=");
String s1 = br.readLine();
System.out.print("B=");
String s2 = br.readLine();
System.out.print("C=");
String s3 = br.readLine();
a = Double.parseDouble(s1);
b = Double.parseDouble(s2);
c = Double.parseDouble(s3);
D = b * b - 4 * a * c;
x1 = (-b - Math.sqrt(D)) / (2 * a);
x2 = (-b + Math.sqrt(D)) / (2 * a);
System.out.println("x1=" + Double.toString(x1));
System.out.println("x1=" + x2);
}
}
Программа считает корни квадратного уравнения. Все работает хорошо, но делал по книжке, поэтому остались некоторые непонятные моменты.
void
значит "пустота", "пустой" это значит что функция, в данном случае main не возвращает значение после конца выполнения" - прочитал я в интернете, но не очень понял, что к чему, хотел бы увидеть пример/сравнение с функцией, которая возвращает значение.
Не до конца разобрался со строчкой вызова BufferedReader
, для чего пишется "new" и для чего нужен текст в скобках (new InputStreamReader(System.in));
Почему(и для чего, ведь число уже отпарсено в коде раннее) в первом случае мы пишем Double.toString(x1)
, а во втором - нет?
System.out.println("x1=" + Double.toString(x1));
System.out.println("x2=" + x2);
Сложно ли найти работу Java-программисту? Какие затраты по времени, примерно, могут ожидать, чтобы найти первую, пусть и не крутую, но работу. (Если учитывать, что высшего образования нет, я вот только-только закончил школу, и даже не знаю, поступлю ли в ВУЗ).
Какую литературу посоветуете по Java?
1) Функция может возвращать любой тип данных, существующий в Java, или объект класса, созданного вами:
public static String myMethod() {
String s = "Hello!";
return s;
}
Тогда, при вызове в коде, вы сможете присваивать возвращаемые методом значения переменным, имеющим тип, совпадающий с возвращаемым методом, либо наследуемым от него:
String st = myMethod();
Или же:
public static void main(String[] args) {
MyClass a = new MyClass();
MyClass b;
b = a;
}
class MyClass {
MyClass() {}
}
2) Ключевое слово new
означает создание экземпляра класса, таким образом вы вызываете конструктор.
3) Изначально вы вводите строку String s1 = br.readLine()
, а значит, оперировать с ней, как с double, у вас не получится, для этого нужно привести её к типу double, ибо в строке может содержаться что угодно.
Переменную x2 вы изначально объявляете как double, а при инициализации присваиваете ей также double значение.
4) Этот вопрос может касаться не только работы Java-программистом, а вообще любой работы, и является слишком общим.
5) Этот вопрос тоже является слишком общим. Вот первый же ответ из поиска в google: https://habrahabr.ru/post/153373/. Но всё же, от себя Head First Java от O'Reilly Media, чтобы понять основы, вам будет более чем достаточно.
Насчёт первых трёх вопросов: вся эта информация общедоступна, находится очень легко и быстро в интернете. Найдите нормальное руководство, хорошую книжку, туториал, читайте документацию. Заданные вами вопросы слишком элементарны, и если бы каждый задавал, не стараясь найти эту информацию сам, было бы не очень хорошо.
В Java, законченную последовательность действий, направленных на решение некоторой задачи, принято называть методом, а не функцией, как, например, в C++.
Пример метода, который имеет возвращаемое значение:
private static int inc(int value) {
return ++value;
}
Где-то в коде Вы можете вызвать этот метод и получить из него значение:
int incValue = inc(1);
BufferedReader
, для чего пишется "new" и для чего нужен текст в скобках (new InputStreamReader(System.in));
Оператор new
используется для создание объекта. Здесь создается объект класса InputStreamReader
с помощью конструктора, куда передается объект System.in
.
Почему(и для чего, ведь число уже отпарсено в коде раннее) в первом случае мы пишем Double.toString(x1), а во втором - нет?
System.out.println("x1=" + Double.toString(x1));
System.out.println("x2=" + x2);
В данном случае, явная конвертация Double -> String
не нужна, так как она происходит неявно.
Хорошему – не сложно. Все очень индивидуально. Можно ориентироваться на год.
Классика: Шилдт, Эккель, Хорстманн. И ни в коем случае не следует изучать фундаментальные вещи по статьям из интернета и видеоурокам.
А, кстати, лично мне, серия Head First не нравится.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Например, приложение делится на три модуля: Core, Personal, Client; В Core определены основные библиотеки и методы которые будут переиспользовать остальные...
Создал макет для простого калькулятораДля создания наложения общего градиента на некоторые элементы использовал следующий код :
Как сделать чтобы программа запрашивала ввод номера месяца до тех пор, пока пользователь не введёт символ ‘q’