68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
1

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

18.01.2013, 18:49. Показов 159088. Ответов 118
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем форумчанам,в этом 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/technetw... 33151.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/%... 0%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/ (Много примеров интересных,и туториалов )
Ну и конечно:
https://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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2013, 18:49
Ответы с готовыми решениями:

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

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

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

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

118
mutagen
18.01.2013, 19:32
  #2
 Комментарий модератора 
Прошу всех желающих сюда написать, постить только по теме, остальное будет удаляться
0
любитель покушать
686 / 640 / 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/... ring(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
любитель покушать
686 / 640 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
24.01.2013, 14:27 4
Для большей читабельности большого числа, в Java (а именно начиная с 7 версии) корректна такая запись:
Java
1
int a = 2_000_000; //a = 2000000
13
любитель покушать
686 / 640 / 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
любитель покушать
686 / 640 / 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
любитель покушать
686 / 640 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
16.02.2013, 13:49 7
Маленькая утилита для построения UML-диаграмм: тынц
1
любитель покушать
686 / 640 / 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);
    }
}
Миниатюры
Java FAQ: для начинающих  
0
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
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
05.05.2013, 11:30 10
в таблице UTF-16
1
любитель покушать
686 / 640 / 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
любитель покушать
686 / 640 / 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
любитель покушать
686 / 640 / 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
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.06.2013, 13:30 14
Полная диаграмма основных коллекций:
Java FAQ: для начинающих


Диаграмма основных эксепшенов:
Java FAQ: для начинающих
8
любитель покушать
686 / 640 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
27.06.2013, 20:42 15
@AckiyBolt, вот еще вдобавок к коллекциям (где-то была на русском, не смог найти)
Миниатюры
Java FAQ: для начинающих  
5
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 17
11.07.2013, 20:25 16
Цитата Сообщение от Ванеек Посмотреть сообщение
Пуск\пр.щ.мыши по мой компьютер\свойства
или Win + Pause
2
30 / 10 / 1
Регистрация: 14.03.2013
Сообщений: 53
31.08.2013, 01:24 17
Цитата Сообщение от Ванеек Посмотреть сообщение
IntelliJ IDEA(Платная)
Уже есть и бесплатная. Правда урезана , и называется Community
Ссылочка:http://www.jetbrains.com/idea/download/index.html
0
5 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 15
06.11.2013, 07:52 18
К литературе можно добавить Шилдт Г. "Java. Полное руководство".
Книга достаточно новая (издана 2011 - в Америке, 2012 - у нас), рассказывает про Java 7.
0
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
28 / 23 / 13
Регистрация: 08.12.2012
Сообщений: 611
23.12.2013, 00:42 20
очень здорово конечно тут написано...
у меня винда 7 32 разрядная
не пойму какую там на сайте javu скачать
куча мала всего
0
23.12.2013, 00:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 00:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru