# Java ## Функция main ```Java package org.example; public class Main { public static void main(String[] args) { System.out.println("Hello world!"); } } ``` ## Сокращения InteliJ * psvm - public static void main * sout - Sytem.out.println() * serr - System.err.println() * I - for(Object object: ){} * fori - for (int i = 0; i< ; i++) {} * shift + shift - поиск по проекту * ctrl + alt + t - сниппеты для блоков кода (циклы, if, switch, try-catch) * alt + insert - сниппеты для класса ## Строки Строки неизменяемые (immutable) и не могут иметь наследников (final). Для изменения копии ```Java // foo и bar - 1 объект в Pool (аля static) String foo = "foo"; String bar = "foo"; // baz - объект в куче String baz = new String("baz"); ``` ### StringBuffer и StringBuilder Данные типы - изменяемые строки с изменениями на месте. StringBuffer синхронизирует методы, поэтому медленее, но можно работать в многопотоке. StringBuilder быстрее, но методы не синхронизирует ```Java // Можно передать строку в инициализатор, но не обязательно StringBuffer sb = new StringBuffer(); sb.append("foo"); sb.append(5); ``` #### Методы StringBuffer и StringBuilder * append (смотреть выше) * delete(int start, int end) * insert(int offeset, String str) * replace(int start, int end, String str) * reverse() * substring(int start, int end) - создаст новую строку * toString - перевести в строку ### RegEx RegEx - щаблон для поиска строки в тексте #### Примеры RegEx * "java" - только слово java подойдёт * "\\d{3}" - 3 цифры #### Pattern для RegEx Pattern - скомпилированный RegEx ```Java Pattern p = Pattern.compile("java"); p = Pattern.compile("java", Pattern.CASE_INSENSETIVE); ```