Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/585: Рейтинг темы: голосов - 585, средняя оценка - 4.85
Ванеек
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
1

Java FAQ: для начинающих

18.01.2013, 18:49. Просмотров 106212. Ответов 116
Метки нет (Все метки)

Привет всем форумчанам,в этом Java FAQ,е постараюсь собрать все самое нужное о Java)
Для начала давайте разберемся,что такое Java?Как говорит нам вики:

Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems
(в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года.(http://ru.wikipedia.org/wiki/Java)

Но Java это не только язык программирования,но и платформа,которая позволяет сделать нам все,что душа захочет,и вообще это классная весчь)

Пойдем дальше,многие видели,что есть какая-то Java SE,EE и.т.дНо какую Java,мне использовать?

Java SE — Java Standard Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment; подходит для создания пользовательских приложений, в первую очередь — для настольных систем.
Java EE — Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия(сервлеты,jsp,и.тд).
Java ME — Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например в мобильных телефонах, КПК, встроенных системах;
JavaFX — технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.
Java Card — технология предоставляет безопасную среду для приложений, работающих на смарт-картах и ​​других устройствах с очень ограниченным объемом памяти и возможностями обработки.

Видите,выбирай по вкусу,идем дальше,как мне начать пользоваться и писать на Java?Очень просто Нужно выпольнить несколько простых шагов:
  1. Нужно скачать JDK(скачать отсюда http://www.oracle.com/technetwork/ja...s-2133151.html)
  2. Установить JDK.Это просто щелкайте по установленному приложению,она загрузилась,дальше настройте системные переменные.Заходите Пуск\пр.щ.мыши по мой компьютер\свойства\слева меню дополнительные параметры системы\внизу переменные среды\системные переменные.Далее нажмите создать,и пропишите сначала
    JAVA_HOME(имя переменной) C:\Program Files\Java\jdk1.8.0_92(путь взял для примера)(значение переменной)
    PATH(имя переменной) C:\Program Files\Java\jdk1.8.0_92\bin(путь взял для примера)(значение переменной)
  3. Все!!)можно уже писать на Java,но вы скажете,что прямо в командной строке,я скажу -да)Но можно и в IDE(http://ru.wikipedia.org/wiki/%D0%98%...82%D0%BA%D0%B8) .Их много,выбрал самые популярные):
    1. Eclipse
    2. Netbeans
    3. IntelliJ IDEA(версия Ultimate Edition - платная, Community Edition - бесплатная)
    4. Jdeveloper
Тут уж ваш выбор,где писать,почитайте,установите,какая вам понравится в ней и пишите)

Итак,мы все настроили ,установили,давайте что-нибудь напишем на Java,давайте,открываем понравившуюся IDE,и пишем в ней такое:
Java
1
2
3
4
5
public class Hello{
    public static void main(String[] args) {
        System.out.println("Тут не Hello Word,странно??");
    }
}
компилируем:
Bash
1
javac Hello.java
и запускаем:
Bash
1
java Hello
Смотрим в консоль ,и видим:
Тут не Hello Word,странно??
Можете порадоваться,но то,что вы сейчас написали,ради чего мучались,это капля в море,из всего моря..языка Java
Поэтому,мы же хотим стать крутыми программистами,нам нужно дольше изучать Java,и тут встает вопрос о литературе,долго о ней говорить я не буду,просто скажу:
Кей Хорстманн Гари Корнелл Java 2 Том 1.Основы
Кей Хорстманн Гари Корнелл Java 2 Том 2.Тонкости программирования
Я считаю(и не один я)лучшими книгами по Java для начинающих

На нашем форуме есть раздел Литература по Java Литература по Java .Там много интересного почитайте)

Вот пару интересных ссылок,которые могут помочь:
http://www.google.ru/
http://www.javaworld.com/
http://www.java2s.com/ (Много примеров интересных,и туториалов )
Ну и конечно:
http://www.cyberforum.ru/java/

(предлагайте ссылки в сообщениях)


P.S Предлагаю в этой теме выложить простые программы для начинающих(я в их числе)
Если я где-то ошибся ,исправьте,следующий FAQ,создание простого сайтика,с картинками!))
Всем пока,удачи!!)
И главное не путайте Java и JavaScript,это разные вещи)

Добавлено через 11 минут
Пару ссылок,дополнение:
http://habrahabr.ru/post/43293/
http://habrahabr.ru/post/66568/
http://habrahabr.ru/post/67777/
33
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2013, 18:49
Ответы с готовыми решениями:

Java FAQ: для тех кто знает (учил) С/С++
1. Строки сравниваются не при помощи оператора == а при помощи метода equals ("a" == "a") == true...

Java для начинающих
С чего начать ?

Книги по Java для начинающих
Подскажите пожалуйста какие книги вы посоветовали бы начинающему в изучении Java

Самоучитель java для начинающих.
Пожалуйста, подскажите где взять нормальный самоучитель java, не понимаю, что это за язык((( P.S....

Литература по Java для начинающих
Какие книги вы бы посоветовали для тех,кто только начинает изучение Java?

116
mutagen
18.01.2013, 19:32
  #2
 Комментарий модератора 
Прошу всех желающих сюда написать, постить только по теме, остальное будет удаляться
0
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
19.01.2013, 00:54 3
Удобная замена перебору элементов цикла:

Java
1
2
3
for(int i: arr){
  System.out.println(i+" ");
}
замена вот такого кода

Java
1
2
3
for(int i=0; i<arr.size(); ++i){
  System.out.println(arr.get(i)+" ");
}
минусы: нельзя обращаться к элементам по индексу

---------------------------------------------------------

Добавлено через 14 минут
Для обработки исключительных ситуаций можно использовать конструкцию типа
Java
1
2
3
4
5
6
try{
какое-либо действие
}
catch(Exception e){
обработка исключения
}
Один из множества примеров использования: при неверно введенных данных выводить соотвествующее сообщение, при попытке деления на ноль и т.д.

Эта конструкция в полном виде включает в себя еще и блок finally, который выполнится в любом случае, используется для закрытия файлов, освобождения ресурсов и т.д.

---------------------------------------------------------

Добавлено через 1 час 59 минут
Перевод в двоичную систему счисления
Java
1
2
3
4
5
6
7
8
9
10
11
12
public static String toBinary(int a){    
        int b;  
        String temp = "";  
        
        while(a!=0){
            b = a%2;  
            temp = b + temp;  
            a = a/2; 
        }
        
        return temp; 
    }
 Комментарий модератора 
http://docs.oracle.com/javase/6/docs...ryString(long)


Добавлено через 48 секунд
Ряд чисел Фибоначи
Java
1
2
3
public static int f(int x){
        return ((x == 1) || (x == 2))? 1 : (f(x-2) + f(x-1));
    }
Добавлено через 1 минуту
В Java поддерживается тернарный оператор, он имеет такую конструкцию:
Java
1
a = (первое условие) ? первое значение: (второе значение)
если истино первое условие то присвоится первое значение, иначе второе, удобная замена if then

---------------------------------------------------------

Добавлено через 6 минут
В Java поддерживается множество видов записей, например:

Экспоненциальная:
Java
1
double a = 123.5e+4
Шестандцатиричная:
Java
1
double a = 0xBABA
Восьмеричная:
Java
1
double a = 014;
Двоичная:
Java
1
int a = (int) 0b111000101
Добавлено через 21 минуту
В Java поддерживается переменное кол-во аргументов метода:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(sumAllInt(1,2,3,4,5));
        
    }
    
    public static int sumAllInt(int ... x){
        int sum = 0;
        
        for(int z: x){
            sum += z;
        }
 
        return sum;
    }
}
Данный метод на вход получает какое-то кол-во аргуметов типа int, складывает их и возвращает результат!
8
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
24.01.2013, 14:27 4
Для большей читабельности большого числа, в Java (а именно начиная с 7 версии) корректна такая запись:
Java
1
int a = 2_000_000; //a = 2000000
13
24.01.2013, 14:27
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
13.02.2013, 16:10 5
Как известно при работе с потоками ввода/вывода желательно обернуть этот участок к try catch finally, например:

Java
1
2
3
4
5
6
7
8
9
10
InputStream is = new FileInputStream("a.txt");
        try {
 
            /* здесь происходит чтение файла */
 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            is.close();
        }
Начиная с java 7 такую конструкцию можно переписать на следующую:
Java
1
2
3
4
5
6
7
try (InputStream is = new FileInputStream("a.txt")){
 
            /* здесь происходит чтение файла */
 
        } catch (Exception e) {
            e.printStackTrace();
        }
В этом случае можно не писать блок finally, is гарантированно закроется
зы: такой способ прокатит только для классов, реализующих интерфейс AutoCloseable

Добавлено через 13 минут
Если имеется несколько блоков catch с одинаковой обработкой исключения, т.е.
Java
1
2
3
4
5
6
7
try {
            /* Какое-то действие */
        } catch (ArithmeticException e) {
            e.printStackTrace();
        } catch (NumberFormatException e){
            e.printStackTrace();
        }
То блоки catch можно объединить:
Java
1
2
3
4
5
try {
            /* Какое-то действие */
        } catch (ArithmeticException | NumberFormatException e) {
            e.printStackTrace();
        }
Добавлено через 22 часа 48 минут
Достаточно простой алгоритм нахождения кол-ва делителей числа вот таким способом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {
        long start = System.currentTimeMillis();
        
        System.out.println(deliteli(1_000_000_000));
        
        long end = System.currentTimeMillis();
        
        System.out.println(end-start+" ms");
    }
 
    public static int deliteli(int x) {
        int rez = 1;
        int del = 2;
        int counter = 0;
 
        while (x > 1) {
            if (x % del == 0) {
                x /= del;
                ++counter;
            }
            
            if (x % del != 0) {
                rez *= (counter + 1);
                counter = 0;
                ++del;
            }
        }
 
        return rez;
    }
}
4
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
14.02.2013, 20:01 6
Велосипед для переворачивания строк:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {
    public static void main(String[] args) {
        System.out.println(reverse("Hello, cyberforum.ru"));
    }
    
    static String reverse(String s){
        StringBuilder rez = new StringBuilder();
        
        for(int i=0, j=s.length()-1; i<=s.length()-1; ++i, --j){
            rez.append(s.charAt(j));
        }
        
        return rez.toString();
    }
}
Еще один вариант с рекурсией (автор infected):
Java
1
2
3
4
5
6
7
8
9
 public String reverse(String str){
        if (str.length() <= 1) return str;
  
        String result = "";
        
        result += str.charAt(str.length()-1) + reverse(str.substring(0,str.length()-1));
          
        return result;
    }
Добавлено через 6 минут
И еще один вариант:
Java
1
2
3
static String reverse(String s){
        return new StringBuilder(s).reverse().toString();
    }
3
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
16.02.2013, 13:49 7
Маленькая утилита для построения UML-диаграмм: тынц
1
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
14.03.2013, 14:25 8
Вы можете использовать параметры, передаваемые в метод main, в своей программе.
Например:
Java
1
public static void main(String[] args)
Параметры же мы передаем при запуске программы через консоль! Пусть имя главного класса Main, тогда java Main one two, следовательно в
Java
1
args[0]
окажется "one", а в
Java
1
args[1]
"two", ну а дальше с этими данными можно оперировать как душе угодно)
зы: массив можно называть как угодно, т.е.
Java
1
public static void main(String[] wow)
не будет ошибкой

Вот маленький пример:
Java
1
2
3
4
5
6
7
8
9
10
11
public class Main {
    public static void main(String[] numbs) {
        int rez = 0;
        
        for(String x: numbs){
            rez += Integer.parseInt(x);
        }
        
        System.out.println(rez);
    }
}
0
Миниатюры
Java FAQ: для начинающих  
Recreate
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
05.05.2013, 00:26 9
здравствуйте! не нашёл темы где можно задать вопросы, поэтому согрешу и напишу здесь...
Java
1
2
3
4
String greet = "Hello";
int index = greet.offsetByCodePoints(0, 3);
int cp = greet.codePointAt(index);
System.out.println(cp);
выводит 108...что это такое 108? как в книге написано, так это кодовая точка, но где таблицу посмотреть этих точек?
0
mutagen
2572 / 2245 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
05.05.2013, 11:30 10
в таблице UTF-16
1
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
05.05.2013, 21:40 11
Как сделать окно невидимым?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;
 
/**
 * 
 * @author Севак Аветисян
 * 
 */
 
public class Main extends Application {
 
    @Override
    public void start(final Stage stage) throws Exception {
        Group root = new Group();
        Scene scene = new Scene(root, 400, 300);
 
        scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent e) {
                if (e.getCode() == KeyCode.ENTER) {
                    stage.setOpacity(stage.getOpacity() == 1 ? 0 : 1);
                }
            }
        });
 
        
        stage.setScene(scene);
        stage.show();
    }
 
    public static void main(String[] args) {
        launch(args);
    }
 
}
В программе мы вешаем на сцену обработчик, если нажатая кнопка - enter, то меняем прозрачность окна в зависимости от текущего состояния

p.s.: стандартными средствами java не перехватить событие, если приложение не в фокусе (вот статья на эту тему)
2
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
06.05.2013, 21:57 12
Метод для проверки, есть ли в числе повторяющиеся цифры:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static boolean isNotDuplicateNumber(int x) {
        String s = String.valueOf(x);
 
        if (s.length() > 10) {
            return false;
        }
 
        Set<Integer> set = new HashSet<Integer>();
 
        for (int i = 0; i < s.length(); ++i) {
            set.add(Character.digit(s.charAt(i), 10));
        }
 
        return (s.length() == set.size());
 
    }
1) Если заранее известно, что число состоит из 11 и более цифр, то в этом числе есть повторяющиеся цифры
2) Все цифры будут разными, если размер множества будет равен кол-ву цифр числа
1
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
26.06.2013, 20:46 13
Наткнулся сегодня на один интересный проект под названием AquaFX (страница проекта)
Он помогает легко привести внешний вид вашего JavaFX приложения к одноименной теме MacOS X

Поигрался и вот что получилось (Github)

Из документации видно: для того, чтобы сменить тему вашего приложения надо вызвать один метод
Java
1
AquaFx.style();
Просто, не правда ли?

Еще одна прелесть AquaFX заключается в том, что она позволяет менять размеры и стили элементво, например:
если мне захочется сделать "поисковый" TextField, то я сделаю следующее:
Java
1
2
3
TextFieldStyler tfStyler = AquaFx.createTextFieldStyler();
tfStyler.setType(TextFieldType.SEARCH);
tfStyler.style(textField);
Тоже самое можно проделать и с другими элементами, полное описание всех возможных Style'ов можно найти на сайте во вкладке Styled controls, ссылка выше!

p.s.: для того, чтобы не нагромождать код, написал классы-обертки (папка Controls)
p.s.s.: самое главное: для того, чтобы завести все это дело, нужно установить JDK 8, процитирую:
Minimum version is Build b92, latest tested and working verison is Build b94, which is recommended to use.
p.s.s.: вот еще одна полезная ссылка (тык)

_________________________________________________________________________________________________


Вчера для меня стало открытием, что в java можно метод назвать так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
package com.sevak_avet;
 
public class Main {
    public static void main(String[] args) {
        $(2,3);
    }
    
    public static void $(int a, int b){
        System.out.println(a+b);
    }
    
}
p.s.: к использованию, конечно, не рекомендуется! ну а так забавно

_________________________________________________________________________________________________

Прозрачное окно в JavaFX:

1) При создании Scene нужно указать ее цвет:
Java
1
Scene scene = new Scene(root, 500,300, Color.TRANSPARENT);
2) Нужно поменять стиль нашего Stage
Java
1
stage.initStyle(StageStyle.TRANSPARENT);
1
AckiyBolt
652 / 401 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.06.2013, 13:30 14
Полная диаграмма основных коллекций:
Java FAQ: для начинающих


Диаграмма основных эксепшенов:
Java FAQ: для начинающих
7
Севак
любитель покушать
683 / 635 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
27.06.2013, 20:42 15
@AckiyBolt, вот еще вдобавок к коллекциям (где-то была на русском, не смог найти)
5
Миниатюры
Java FAQ: для начинающих  
kolobych
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 17
11.07.2013, 20:25 16
Цитата Сообщение от Ванеек Посмотреть сообщение
Пуск\пр.щ.мыши по мой компьютер\свойства
или Win + Pause
2
revo1t
29 / 9 / 1
Регистрация: 14.03.2013
Сообщений: 53
Завершенные тесты: 1
31.08.2013, 01:24 17
Цитата Сообщение от Ванеек Посмотреть сообщение
IntelliJ IDEA(Платная)
Уже есть и бесплатная. Правда урезана , и называется Community
Ссылочка:http://www.jetbrains.com/idea/download/index.html
0
Soer
5 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 15
06.11.2013, 07:52 18
К литературе можно добавить Шилдт Г. "Java. Полное руководство".
Книга достаточно новая (издана 2011 - в Америке, 2012 - у нас), рассказывает про Java 7.
0
Rodi
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 15
17.11.2013, 02:26 19
Привет всем. Вопрос, когда создаю простейшую прогу в командной строке после java main пишет could nod find or load main class main. Что не так?

Добавлено через 43 минуты
Странное дело: дописал ";" в начале строки в переменных PATH и все норм стало. Правда один раз.Потом не находит компилируемый файл после команды javac main...
0
ujif
26 / 21 / 13
Регистрация: 08.12.2012
Сообщений: 608
23.12.2013, 00:42 20
очень здорово конечно тут написано...
у меня винда 7 32 разрядная
не пойму какую там на сайте javu скачать
куча мала всего
0
23.12.2013, 00:42
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 00:42

Java FAQ: задачи
Всем привет. Недавно увидел достаточно много интересных задач, а почему бы нам не собрать в...

задача Java для начинающих. Шилдт Г. ошибка?
Ребята возможно баян. Но правда ль выходит в варианте ответа на стр 559 для поиска простого числа...

Исходники кода для книги Java 8 (2015) Шилдт - руководство для начинающих
Там код иногда странные ошибки возникают особенно UNicode сбивается , не могу нормально точь в точь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.