utworzenie teblicy stringów z arraylisty
String[] stringArray = list.toArray(new String[0]);
albo
String[] strings = list.stream().toArray(String[]::new);
java.time
System.out.println("Instant :"+Instant.now());
System.out.println("LocalTime :"+LocalTime.now());
System.out.println("LocalDate :"+LocalDate.now());
Instant :2021-10-10T18:57:31.384Z
LocalTime :18:57:31.443
LocalDate :2021-10-10
Jeśli już dysponujemy listą i chcemy wyświetlić jej zawartosc, uzyjmy wyrazenia lambda lub nawet referencji do metod z uyciem operatora double colon.
arrayList.forEach((e)-> System.out.println(e) );
(jeśli uzywamy intellij i tak zaproponuje nam rozwiązanie z uzyciem referencji do metod)
arrayList.forEach(System.out::println);
Konstruktory i wzorzec builder
public class Patient {
private String name;
private String office;
private int age;
public Patient(String name){
this.name=name;
}
public Patient(String name, String office){
this(name);
this.office=office;
}
public Patient(String name, String office, int age){
this(name,office);
this.age = age;
}
}
public class PatientProperties {
private final String name;
private final String office;
private final int age;
private final int width;
private final int height;
public static class Builder{
private final String name;
private final String office;
//optional fields
private int age=0;
private int width=0;
private int height=0;
public Builder(String name, String office){
this.name=name;
this.office=office;
}
public Builder age(int value){
age=value;
return this;
}
public Builder width(int value){
width=value;
return this;
}
public Builder height(int value){
height=value;
return this;
}
public PatientProperties build(){
return new PatientProperties(this);
}
}
private PatientProperties(Builder builder){
name=builder.name;
office=builder.office;
age=builder.age;
height=builder.height;
width=builder.width;
}
}
PatientProperties puczyk = new PatientProperties.Builder("Puczyk","dr Alban")
.age(26)
.width(167)
.height(90).build();
Java features (9-15)
Firma Oracle zwiększyła częstotliwość wydawania nowych wersji języka, i obecnie mamy wersię 16.
Jeśli wybierasz w intellij project structure-> Project SDK i Project language level to widać z grubsza najistotniejsze zmiany które wprowadzano w poszczególnych wersjach.
8 lambdas
9 modules, private methods in interfaces
10 local variable type interface
11 local variable syntax for lambda parameters
itd...
i oto przykład nowego rozwiązania dla switch (switch expressions )
W zalezności od dostarczonej zmiennej String str = "polonez"
switch (str){
case "maluch","polonez","zuk"-> System.out.println("polskie samochdy");
case "audi","vw","mercedes"-> System.out.println("auta niemieckie");
default -> System.out.println("inne niz polskie i niemieckie");
}
Klasy i pakiety: Klasa jest podstawową jednostką słuzącą do tworzenia obiektów w paradygmacie OOP (programowania zorientowanego obiektowo).
Stanowi pewien rodzaj abstrakcji dla świata który program komputerowy ma opisywać. Jeśli tworzymy katalog biblioteczny na pewno będziemy potrzebowali klas:
ksiąka, czytelnik, być moze filia, a te z kolei będą posiadały wielokrotność swoich kopii (czyli instancji).
Zbiór klas z róznych powodów mozemy organizować grupując je w pakiety (podobnie jak to się dzieje z katalogami i plikami).
Kolekcje. Poniewaz programowanie polega na posługiwaniu się strukturami danych i algorytmami, do grupowania danych wykorzystuje sie w javie rozbudowaną architekturę JFC (java framework collections) Głównie są to listy, kolejki, zbiory i mapy (list, queue, set i map). WątkiSą to fragmenty programu mogące działać współbieznie w ramach jednego procesu. W Javie rozwinęło się juz wiele mozliwości ich obsługi, a najnowszym rozwiązaniem, które ukazało się w javie 19 jako preview feature są wirtualne wątki (projekt Loom). obsługa plików
Java dostarcza pakietów java.io oraz java.nio (NIO New Input-Output - to nowsze rozwiązanie).
Java Concurrency
Zagadnienia rekrutacyjne
Lista przykładowych zagadnień, których mozna oczekiwać na rozmowie rekrutacyjnej na stanowisko junior java developer.
prawa dostępu do plików i katalogów właściciel-grupa-inni 4-r 2-w 1-x chmod [parametr] [wartosc] [plik] shutdown now (z parametrem -h halt -r restart) wyłączanie alias (bez parametrów - inforamacja o aliasach, np. alias l='ls -al' find *.png przeszukiwanie z dopasowaniem do wzorca passwd zmiana hasła file [nazwa pliku] informacja o typie pliku, lub plikach zawartych w archiwum (z parametrem -z) wc obliczenie bajtów, słów lub linii w pliku (-c, -w, -l czyli chars, words, lines) cmp [plik1] [plik2] porównywanie dwóch plików df - ile miejsca na partycjach du - ile miejsca zajmuje plik i katalog wyrazone w blokach more i less - gdy nie wynik nie mieści się na ekranie (uzywamy strzałek, wyjscie q. mozna wykorzystac potoki) clear - czyszczenie terminala pwd - aktualna sciezka arch - info o architekturze komputera finger - info o urzytkownikach free -m (dostępna pamięć w megabajtach, -b bajty, -k kilobajty) cal - kalendarz ( cal -y cały rok, cal 1979 - rok podany w argumencie, cal -j = krory dzien zkolei mamy) date - data, mozna formatować np. date +%Y tylko rok +%d - tylko dzień, date -r plik.txt - ostatnia modyfikacja write [user] [tty] [wiadomosc] - wysłanie wiadomości do urzytkownika. Trzeba włączyć taką mozliwość mesg y lub wyłączyć poleceniem mesg n last - kto pracował na komputerze (-n liczba wierszy wyników) who - zalogowani uzytkownicy who am i - info o swojej nazwie uzytkownika users - kto zalogowany do systemu hostname - nazwa hosta ifconfig - info o interfejsach sieciowych host [domena] - info o adresie hosta whois [domena] - czy domena jest zarejestrowana i na kogo uptime - czas, który upłynął do uruchomienia systemu ps - informacja o uruchomionych usługach adduser -dodanie uzytkownika groupadd - dodanie grupy top - lista procesów według zajętości procesora head - wyświetlenie pierwszych linii pliku podanego w argumencie tail - wyswietlenie ostatnich linii pliku (np: tail 5 plik.txt ... cdn
linux bash
Lista przykładowych poleceń