среда, 21 ноября 2018 г.

Eclipce горячие клавиши

ctrl + shift + L вызвать шпаргалку горячих клавиш. ( Кстати если повторно нажать  ctrl + shift + L, то можно эти горячие клавиши редактировать). Но все же решил написать для себя свою шпаргалку, чтобы в случае чего к ней обращаться. Пост будет полезен новичкам, кто только только начинает работать с Eclipse.
ctrl + /   —  позволяет закоментировать выделенную часть кода
ctrl + shift + 0 —  заставляет среду разработки Eclipse автоматически орга-
низовать инструкции import. Среда разработки Eclipse удаляет неиспользуемые инструкции import и добавляет новые инструкции для используемых пакетов, которые еше не были импортированы
Alt + Shift + J  —  добавление блока комментария в код
ctrl + пробел — автозаполнение, самая популярная горячая клавиша.  Вы можете легко найти статические методы, используя имя класса или имя переменной экземпляра. Для этого введите нужное имя, поставьте точку, нажмите комбинацию клавиш Ctrl+Пробел и прокрутите список всех доступных имен. После этого вы можете начать ввод первой части имени, чтобы отфильтровать результаты.
Alt + Shift + T  —  позволяет вызвать меню рефакторинга.
Alt-Shift-R —  переименовывает выделенную переменную, метод, класс.
Ctrl-Shift-F —  автоформатирование, убирает весь беспорядок в коде. Если никакой фрагмент кода не выделен, будет отформатирован весь код в файле.
Tab | Shift+Tab — Табуляция выделенных строк кода.
Ctrl+1 —   Быстрое исправление. Появляется то же самое окно, если подержать курсор над подчеркнутым текстом, где есть ошибка.

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

Если у вас класс с приличным количеством кода и вы хотите видеть два разных фрагмента кода из одного класса. Щелкните правой кнопкой мыши по вкладке нужного файла и в появившемся контекстном меню выберите команду Open With Text Editor (Новый редактор), В результате появится вторая вкладка для одного и того же файла. Теперь, воспользовавшись предыдущим советом, вы можете иметь два разных представления одного и того же файла.

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

Навигация
Описание
Ctrl+F+FПростой поиск/замена
Ctrl+HCtrl+HПродвинутый поиск/замена
Ctrl+Shift+R+⇧+RОткрыть ресурс
Ctrl+Shift+T+⇧+TОткрыть логическую структуру(Класс)
Ctrl+Shift+G+⇧+GНайти вхождения переменной, метода, класса
F4F4Открыть меню иеарархии
Ctrl+LeftClick+LeftClickПерейти к реализации или определению класса, функции, переменной
F3F3Перейти к определению
Ctrl+T⌘+TПерейти к реализации
Ctrl+L+LПерейти к линии с определенным номером
Alt+( left right )+( [  ] )Перемещение в предыдущее/следующее место просмотра в редакторе
Ctrl+QCtrl+QПерейти к последнему месту редактирования
Ctrl+E+EПоказать список открытых в редакторе файлов
Ctrl+F6 (Ctrl+Shift+F6)⌘+F6 (⌘+⇧+F6)Следующий/предыдущий редактор
Ctrl+O+OПоказать поля и методы класса
Ctrl+T+TПоказать иерархию класса
F2F2Открыть javadoc
Ctrl+Shift+(up | down)Ctrl+⌥+(up | down)Перейти к следующему/предыдущему методу
Редактирование
Описание
Ctrl+SpaceCtrl+SpaceАвтодополнение
Ctrl+1+1Возможные действия
Ctrl+Shift+O+⇧+OОрганизация импорта пакетов
Ctrl+Shift+F+⇧+FАвтоформатирование кода
Shift+Alt+S⇧+⌥+SМеню генерации кода
Shift+Alt+T⇧+⌥+TМеню рефакторинга
Shift+Alt+R⇧+⌥+RПереименование переменной, метода, класса
Shift+Alt+M+⌥+MВыделение части кода в отдельный метод
Ctrl+Alt+(up|down)+⌥+(up|down)Дублирование строки
Alt+(up|down)⌥+(up|down)Перемещение строки
Ctrl+/ Ctrl+7⌘+/ ⌘+7Однострочный комментарий
Ctrl+Shift+/+⇧+/Многострочный комментарий
Ctrl+D⌘+DУдалить строку или выделенный фрагмент

Рассмотрим каждый инструмент более подробно:

среда, 7 ноября 2018 г.

Ограничение вывода цифр после запятой

1. System.out.printf("%8.2f", double_value);(2 -количество знаков после запятой)

2. System.out.println(String.format("%8.2f", double_value).replace(',', '.')); 
                                                (- с заменой запятой на точку)

вторник, 6 ноября 2018 г.

Конструктор класса Integer


Поля объекта Integer

МодификаторТип                 АтрибутОписание
staticIntMAX_VALUEКонстанта, являющаяся максимальным значением данных типа int, равная 2^31-1.
staticIntMIN_VALUEКонстанта, являющаяся минимальным значением данных типа int, равная -2^31.
staticIntSIZEЧисло битов, использованное для представления значения типа int в двоичной форме.
staticClass<Integer>TYPEЭкземпляр класса, представляющий примитивный тип int.

Конструктор класса Integer

СинтаксисОписание
Integer(int value)Создает новый объект Integer, который представляет указанное целочисленное значение.
Integer(String s)Это создает новый объект Integer, который представляет целочисленное значение, указанное строковым параметром конструктора.

Примеры использования методов класса Integer

МодификаторВозвращаемый типМетодОписание
staticIntbitCount(int i)Этот метод возвращает целочисленное значение, которое соответствует количеству единиц в двоичном представлении числа-аргумента метода.
bytebyteValue()Возвращает значение объекта Integer в виде типа byte. Этот метод переопределяет метод byteValue() класса Number.
staticIntcompare(int x, int y)Метод просто возвращает целочисленное представление результата сравнения двух целочисленных аргументов.
IntcompareTo(Integer anotherInteger)Возвращает целочисленное значение результата сравнения аргумента метода и объекта Integer.
staticIntegerdecode(String nm)Возвращает декодированное значение строкового аргумента в объект Integer.
DoubledoubleValue()Возвращает эквивалент объекта Integer типа double (java double to integer). Метод doubleValue() унаследован из класса Number.
booleanequals(Object obj)Возвращает результат сравнения объекта Integer и объекта-аргумента типа Object.  Этот метод переопределяет метод equals класса Object.
FloatfloatValue()Возвращает эквивалент объекта Integer в типе float. Метод floatValue унаследован из класса Number.
staticIntegergetInteger(String nm)Возвращает значение свойства, указанного в качестве аргумента, в объекте Integer.
staticIntegergetInteger(String nm, int val)Определяет целочисленное значение свойства, указанного в строковом параметре. Если свойство не найдено, возвращает объект Integer со значением, указанным во втором параметре.
staticIntegergetInteger(String nm, Integer val)Возвращает целочисленное значение свойства, указанного в строковом параметре. Если свойство не найдено, возвращает объект Integer, указанный во втором параметре.
InthashCode()Возвращает хэш-код объекта Integer.
staticInthighestOneBit(int i)Определяет позицию старшего бита. Возвращает значение, в котором установлен только этот бит. Если ни один из битов не установлен, возвращает 0.
IntintValue()Возвращает целочисленный эквивалент объекта Integer. Метод унаследован из класса Number.
LonglongValue()Возвращает значение объекта Integer как тип long.
staticIntlowestOneBit(int i)Возвращает целое число, получающееся, если оставить только младшую (крайнюю правую) единицу в двоичном представлении числа-аргумента.
staticIntnumberOfLeadingZeros(int i)Возвращает количества нулей слева в двоичном представлении числа-аргумента.
staticIntnumberOfTrailingZeros(int i)Возвращает количества нулей справа в двоичном представлении числа-аргумента.
staticIntparseInt(String s)Преобразует строку-аргумент в десятичное число со знаком.
staticIntparseInt(String s, int radix)Преобразует строку-аргумент в целом число со знаком в системе исчисления, указанной во втором аргументе.
staticIntreverse(int i)Возвращает число, получаемое в результате перестановки битов числа-аргумента в обратном порядке.
staticIntreverseBytes(int i)Возвращает число, получаемое в результате перестановки байтов числа-аргумента в обратном порядке.
staticIntrotateLeft(int i, int distance)Возвращает число, полученное в результате сдвига битов числа-аргумента на указанное количество позиций влево. (Биты, вышедшие за пределы слева, возвращаются в правую часть).
staticIntrotateRight(int i, int distance)Возвращает число, полученное в результате сдвига битов числа-аргумента на указанное количество позиций вправо. (Биты, вышедшие за пределы справа, возвращаются в левую часть).
ShortshortValue()Возвращает эквивалент объекта Integer в типе short. Этот метод переопределяет метод shortValue класса Number.
staticintsignum(int i)Возвращает результат функции signum  от указанного целого числа.
staticStringtoBinaryString(int i)Возвращает строковый эквивалент двоичного представления числа-аргумента.
staticStringtoHexString(int i)Возвращает строковое представление целочисленного аргумента в виде шестнадцатеричного числа без знака.
staticStringtoOctalString(int i)Возвращает строковое представление целочисленного аргумента в виде восьмеричного числа без знака.
StringtoString()Возвращает объект String, представляющий значение объекта Integer.
staticStringtoString(int i)Возвращает объект String, представляющий значение целочисленного аргумента.
staticStringtoString(int i, int radix)Возвращает строковый эквивалент целого десятичного числа-аргумента в указанной системе исчисления.
staticIntegervalueOf(int i)Возвращает экземпляр объекта Integer, представляющий указанное целое число.
staticIntegervalueOf(String s)Возвращает экземпляр объекта Integer, содержащий значение, указанное в строке-аргументе.
staticIntegervalueOf(String s, int radix)Возвращает экземпляр объекта Integer, содержащий значение, передаваемое в строке-аргументе в системе исчисления, указанной во втором параметре.
Перевод статьи “Java Integer Class Tutorial and Example” был подготовлен дружной командой проекта Сайтостроение от А до Я.

понедельник, 5 ноября 2018 г.

Операторы if, else, swich, case

Ключевое слово if выполняет условную проверку, оценивая логическое значение  выражения. Оператор, следующий за этим выражением, будет выполняться, только если данное значение равно true (истина). В противном случае программа переходит на последующие строки кода, выполняя альтернативное ветвление.
Синтаксис оператора  if выглядит следующим образом:

 if ( проверочное-выражение ) код-для-исполнения-если-результат-истина ;

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

Логический оператор И (&&) будет возвращать true, только если оба проверяемых выражения имеют значение true:

if ( ( условие-1 ) && ( условие-2 ) ) исполнить-этот-код ; 

Логический оператор ИЛИ (||) будет возвращать значение true, если хотя бы одно из проверочных выражений имеет значение true:

if ( (условие-1 ) || ( условие-2) ) исполнить-этот-код ;

Комбинации вышеуказанных выражений могут составлять более сложные и длинные проверочные выражения. 
В дополнение к ключевому слову if можно использовать ключевое слово else, которое вместе с if образует оператор if else, обеспечивающий альтернативные ветви для продолжения программы в соответствии с результатом оценки проверочного выражения. В простейшем случае он просто предлагает альтернативный оператор для исполнения, а когда проверка не успешна — выдает значение false:

if (проверочное-выражение) 
     код-для-исполнения-если-результат-истина; 
else 
     код-для-исполнения-если-результат-ложь ; 

Каждая альтернативная ветвь может являться либо отдельным оператором, либо блоком операторов, заключенным внутри фигурных скобок . При помощи оператора if else можно строить более сложные конструкции для осуществления дополнительных проверок внутри каждой из ветвей if и else. При этом получаются вложенные операторы if. Когда программа обнаруживает выражение, оцененное как true, она исполняет операторы, связанные с этой ветвью, а затем выходит из оператора if else.

if(a<b)
  a=a+1;
else if(a==b)
      a=a+1;
    else{
      a=a+1;
      b=b+1;
    }

Неприятной проблемой, унаследованной в Java от языка C, является возможность использования оператора присваивания "=" вместо оператора сравнения "=="
Например, если мы используем булевские переменные b1 и b2, и вместо
if(b1==b2)
  i=1;
else
  i=2;
напишем
if(b1=b2)
  i=1;
else
  i=2;
никакой диагностики ошибки выдано не будет. 
Дело в том, что по правилам C Java любое присваивание рассматривается как функция, возвращающая в качестве результата присваиваемое значение. Поэтому присваивание b1=b2 возвратит значение, хранящееся в переменной b2. В результате оператор будет работать, но совсем не так, как ожидалось. Более того, будет испорчено значение, хранящееся в переменной b1.

Оператор выбора switch

Является аналогом if для нескольких условий выбора. Синтаксис оператора следующий:
switch(выражение){
  case значение1: операторы1;
  ……………………………
  case значениеN: операторы N;
  default: операторы;
}
Правда, крайне неудобно, что нельзя ни указывать диапазон значений, ни перечислять через запятую значения, которым соответствуют одинаковые операторы.
Тип выражения должен быть каким-нибудь из целых типов. В частности, недопустимы вещественные типы.
Работает оператор следующим образом: сначала вычисляется выражение. Затем вычисленное значение сравнивается со значениями вариантов, которые должны быть определены еще на этапе компиляции программы. Если найден вариант, которому удовлетворяет значение выражения, выполняется соответствующий этому варианту последовательность операторов, после чего НЕ ПРОИСХОДИТ выхода из оператора case, что было бы естественно. - Для такого выхода надо поставить оператор break.Эта неприятная особенность Java унаследована от языка C.
Часть с default является необязательной и выполняется, если ни один вариант не найден.
Пример:
switch(i/j){
    case 1:
        i=0;
        break;
    case 2:
        i=2;
        break;
    case 10:
        i=3;
        j=j/10;
        break;
    default:
        i=4;
};
У оператора switch имеется две особенности:
  • Можно писать произвольное число операторов для каждого варианта case, что весьма удобно, но полностью выпадает из логики операторов языка Java.
  • Выход из выполнения последовательности операторов осуществляется с помощью оператора break. Если он отсутствует, происходит "проваливание" в блок операторов, соответствующих следующему варианту за тем, с которым совпало значение выражения. При этом никакой проверки соответствия очередному значению не производится. И так продолжается до тех пор, пока не встретится оператор break или не кончатся все операторы в вариантах выбора. Такие правила проверки порождают типичную ошибку, называемую "забытый break ".

Условное выражение …?... : …

Эта не очень удачная по синтаксису функция унаследована из языка C. Ее синтаксис таков:
условие?значение1:значение2
В случае, когда условие имеет значение trueфункция возвращает значение1, в противном случае возвращается значение2.
Например, мы хотим присвоить переменной j значение, равное i+1 при i<5, и i+2 в других случаях. Это можно сделать таким образом:
j=i<5?i+1:i+2
Иногда при вычислении громоздких выражений этот оператор приходится использовать: без него программа оказывается еще менее прозрачной, чем с ним. Приоритет разделителей "?" и ":" очень низкий – ниже только приоритет оператора присваивания (в любых его формах). Поэтому можно писать выражения без использования скобок. Но лучше все-таки использовать скобки:
j=(i<5)?(i+1):(i+2)

Статические строки


Статические строки реализуются через класс String. Объект строки автоматически создается при использовании строковой литералы. А также для строк доступна операция +, позволяющая соединить несколько строк в одну. Если один из операндов не строка, то он автоматически преобразуется в строку. Для объектов в этих целях используется метод toString().
Некоторые методы объекта String:
compareTo(String anotherString) - лексиграфическое сравнение строк;
compareToIgnoreCase(String str) - лексиграфическое сравнение строк без учета регистра символов;
regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) - тест на идентичность участков строк, можно указать учет регистра символов;
regionMatches(int toffset, String other, int ooffset, int len) - тест на идентичность участков строк;
concat(String str) - возвращает соединение двух строк;
contains(CharSequence s) - проверяет, входит ли указанная последовательность символов в строку;
endsWith(String suffix) - проверяет завершается ли строка указанным суффиксом;
startsWith(String prefix) - проверяет, начинается ли строка с указанного префикса;
startsWith(String prefix, int toffset) - проверяет, начинается ли строка в указанной позиции с указанного префикса;
equals(Object anObject) - проверяет идентична ли строка указанному объекту;
getBytes() - возвращает байтовое представление строки;
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) - возвращает символьное представление участка строки;
hashCode() - хеш код строки;
indexOf(int ch) - поиск первого вхождения символа в строке;
indexOf(int ch, int fromIndex) - поиск первого вхождения символа в строке с указанной позиции;
indexOf(String str) - поиск первого вхождения указанной подстроки;
indexOf(String str, int fromIndex) - поиск первого вхождения указанной подстроки с указанной позиции;
lastIndexOf(int ch) - поиск последнего входения символа;
lastIndexOf(int ch, int fromIndex) - поиск последнего входения символа с указанной позиции;
lastIndexOf(String str) - поиск последнего вхождения строки;
lastIndexOf(String str, int fromIndex) - поиск последнего вхождения строки с указанной позиции;
replace(char oldChar, char newChar) - замена в строке одного символа на другой;
replace(CharSequence target, CharSequence replacement) - замена одной подстроки другой;
substring(int beginIndex, int endIndex) - возвратить подстроку как строку;
toLowerCase() - преобразовать строку в нижний регистр;
toLowerCase(Locale locale) - преобразовать строку в нижний регистр, используя указанную локализацию;
toUpperCase() - преобразовать строку в верхний регистр;
toUpperCase(Locale locale) - преобразовать строку в верхний регистр, используя указанную локализацию;
trim() - отсечь на концах строки пустые символы;
valueOf(a) - статические методы преобразования различных типов в строку.
Методы поиска возвращают индекс вхождения или -1 если искомое не найдено. Методы преобразования как replace не изменяют саму строку а возвращают соответствующий новый объект строки.
Статические строки также имеют ряд методов использующие регулярные выражения:
matches(String regex) - удовлетворяет ли строка указанному регулярному выражению;
replaceAll(String regex, String rplс) - заменяет все вхождения строк, удовлетворяющих регулярному выражению, указанной строкой;
replaceFirst(String regex, String rplс) - заменяет первое вхождение строки, удовлетворяющей регулярному выражению, указанной строкой;
split(String regex) - разбивает строку на части, границами разбиения являются вхождения строк, удовлетворяющих регулярному выражению;
split(String regex, int limit) - аналогично предыдущему, но с ограничением применения регулярного выражения к строке значением limit. Если limit&gt;0, то и размер возвращаемого массива строк не будет больше limit. Если limit&lt;=0, то регулярное выражение применяется к строке неограниченное число раз.
динамические строки
Если необходимо сделать множество преобразований над строкой, то на это время эффективнее воспользоваться динамической строкой, реализуемой классом StringBuffer.
Некоторые методы объекта StringBuffer:
append(A) - преобразовать A в строку и добавить в конец;
insert(int offset, A) - преобразовать A в строку и вставить ее в указанную позицию;
delete(int start, int end) - удалить символы с указанной по указанную позицию;
deleteCharAt(int index) - удалить символ в указанной позиции;
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) - сохранить последовательность символов в массив;
indexOf(String str) - поиск первого вхождения подстроки;
indexOf(String str, int fromIndex) - поиск первого вхождения подстроки с указанной позиции;
lastIndexOf(String str) - поиск последнего вхождения подстроки;
lastIndexOf(String str, int fromIndex) - поиск последнего вхождения подстроки с указанной позиции;
replace(int start, int end, String str) - замена участка строки указанной строкой;
reverse() - расположить символы в обратном порядке;
setCharAt(int index, char ch) - заменить символ в указанной позиции;
setLength(int newLength) - установить новый размер строки;
substring(int start) - вернуть подстроку с указанной позиции и до конца как строку;
substring(int start, int end) - вернуть подстроку как строку.
интерфейс CharSequence
Оба строковых класса реализуют интерфейс CharSequence, т.е. включают в себя методы:
charAt(int index) - символ в указанной позиции;
length() - размер строки;
subSequence(int start, int end) - вернуть подстроку как последовательность символов;
toString() - вернуть строковое представление объекта.
Источник: darkraha.com