JAVA
Podstawowe terminy Klasa to fundament Javy. To dzięki nim jest ona w pełni obiektowa i przy tym tak wygodna. Najprościej mówiąc klasa to taka przestrzeń, w której umieszczamy inne elementy, przechowujemy informacje i je przetwarzamy. Obrazowym przykładem może być czteroosobowa rodzina jadąca samochodem. Samochód to klasa, natomiast rodzina to jej elementy, powiemy o nich obiekty. class Klasa{ tutaj jakieś elementy }
Klasa obiekt = new Klasa(); Obiekt jest natomiast reprezentacją klasy i jej nośnikiem. Jeżeli mówimy o czymś, że jest obiektem w Javie, to tak naprawdę wyobrażamy sobie całą klasę i wszystko to co się w niej znajduje. Poprzez obiekt możemy odwoływać się do zmiennych, metod i innych elementów w niej zawartych. Klasa obiekt = new Klasa();
Metoda to dla kogoś kto już wcześniej programował inaczej funkcja Metoda to dla kogoś kto już wcześniej programował inaczej funkcja. W niej dokonywane są na przykład obliczenia, lub inne operacje. Metody mogą nie zwracać nic, ale równie dobrze dać w wyniku typ prosty, lub zwrócić obiekt. Niektóre mogą przyjmować także parametry, inne działać tylko na rzecz obiektu, który je wywołuje.
Pierwszy program public class Hello{ public static void main(String[] args){ System.out.print("Hello World"); } public class Hello – jest to nic innego jak publiczna klasa o nazwie Hello. public static void main(String[] args) – jest to metoda main, to od niej rozpoczyna się działanie programu i w niej wywołujemy inne metody, lub tworzymy obiekty za to odpowiedzialne. W nawiasie podane są argumenty w postaci tablicy Stringów
3. System.out.print(„Hello World”); – omawiając wyświetl(print) napis podany jako argument(„Hello World”) przy użyciu strumienia wyjścia w biblioteki System. Istnieje także bliźniacza metoda println(string), która dodaje na końcu drukowanego tekstu znak nowej linii „\n” (i właśnie jej będziemy zazwyczaj używali).
Zadanie Napisz program, który wyświetli w 3 kolejnych liniach trzy imiona: Ania, Bartek, Kasia.
Rozwiązanie public class Hello{ public static void main(String[] args){ System.out.println("Ania"); System.out.println("Bartek"); System.out.println("Kasia"); } } _______________________ public static void main(String[] args){ System.out.println("Ania\nBartek\nKasia");
Komentarze W Javie istnieją dwa rodzaje komentarzy: //text - tekst umieszczony za podwojonym znaku slash jest uznawany za komentarz aż do końca linii /* text */ – tekst umieszczony w takich znacznikach jest traktowany jako komentarz przez wiele linii kodu.
Przykład public class Komentarze{ //poniżej rozpoczyna się działanie programu public static void main(String[] args){ /*Ten tekst nie ma wpływu na program */ System.out.print("Hello World"); }
Zjawisko konkatenacji (+) System.out.println(„czy 2 plus 2 to " + 2 + 2); Operator + jest operatorem konkatenacji, jeśli choć jeden z operandów tego operatora jest stringiem.
Znaki specjalne, które muszą być poprzedzone znakiem backslash \ : \t – tab \n – nowa linia \” – cudzysłów \’ – apostrof \\ – backslash
Przykład public class Typy{ public static void main(String[] args){ System.out.println('a'+'A'); System.out.println(1+2); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); }
Zadanie Przetestuj wyświetlanie innych znaków specjalnych.
Zmienne Wyróżniamy dwie fazy tworzenia zmiennej: Deklaracja - tutaj określamy typ i nazwę zmiennej Inicjalizacja - nadanie wartości zmiennej public class Zmienne{ public static void main(String[] args){ int liczba; // Deklaracja liczba = 5; // Inicjalizacja }
public class Stale{ public static void main(String[] args){ final double LICZBA_PI=3.14; final int STALA2; LICZBA_PI=8; //błąd, zmienna była zainicjowana STALA2=3; // tak można zrobić - pierwsze przypisanie } Słowo kluczowe final umieszczane przed typem zmiennej oznacza, że zadeklarowana w ten sposób zmienna może być tylko raz, w dowolnym miejscu, zainicjowana. Późniejsza próba przypisania jej nowej wartości zakończy się błędem i program nawet (na szczęście) nie przejdzie kompilacji.
Typ string public class Test{ public static void main(String[] args){ String hello = "Witaj "; String world = "Świecie!"; String powitanie = hello+world; //łączenie Stringów System.out.println(powitanie); String czesc = powitanie.substring(0, 6)+"uczniu"; System.out.println(czesc); } } Metoda substring() Po działaniu programu łatwo się domyślić jakie jest jej działanie. Mianowicie zwraca ona „pod string” zaczynając od indeksu podanego jako pierwszy parametr (u nas 0) i kończąc przed indeksem podanym jako drugi parametr -1. W Javie wszystko numeruje się od zera,
Zadanie Napisz program, w którym zadeklarujesz kilka stałych, lub zmiennych różnych typów o dowolnych nazwach, a następnie wyświetlisz je w kolejnych liniach tekstu. Skompiluj, lub spróbuj skompilować przykłady podane w tej lekcji i zobacz co się stanie przy próbie nadania po raz drugi wartości jakiejś stałej. W tym samym programie zadeklaruj cztery zmienne typu String. Trzy z nich zainicjuj jakimiś wyrazami a czwartemu przypisz ciąg znaków utworzony z trzech wcześniejszych zmiennych. Następnie wyświetl czwartą zmienną na ekranie. Przy użyciu metody substring wyświetl na ekranie dwa pierwsze wyrazy wykorzystując wyłącznie czwartą zmienną typu String.
Przykładowe rozwiązanie Public class Rozwiazanie{ public static void main(String[] args){ short a = 5; final int b = 129; final char c='c'; System.out.println(a); System.out.println(b); System.out.println(c); String x = "Ala "; String y = "ma "; String z = "kota"; String zdanie = x+y+z; System.out.println(zdanie); System.out.println(zdanie.substring(0, 7)); }}
Funkcje matematyczne i Wielkie liczby Aby korzystać z funkcji matematycznych musimy poznać bibliotekę Math z pakietu java.lang. Kilka najważniejszych funkcji znajduje się poniżej. sqrt(double liczba) – zwraca pierwiastek z liczby double. Jako parametr możemy również podać dowolny typ liczbowy, wtedy nastąpi jego automatyczna konwersja na double. pow(double a, double b) – zwraca liczbę a podniesioną do potęgi b abs(liczba) – parametrem może być dowolna liczba, metoda zwraca wartość bezwzględną z argumentu
Wszystkie metody są statyczne, aby je wywołać należy użyć konstrukcji: Math.nazwa_metody(argumenty)
Przykład programu, który obliczy pierwiastek z liczby, a następnie podnosi ją do 3 potęgi. public class Funkcje{ public static void main(String[] args){ double liczba = 9.0; int b = 3; double pierwiastek = Math.sqrt(liczba); double potega = Math.pow(liczba, b); System.out.println("Pierwiastek z "+liczba+" wynosi: "+pierwiastek); System.out.println("Liczba "+liczba+" podniesiona do potegi "+b+" to "+potega); } }
Import statyczny. Dzięki jego zastosowaniu będziemy mogli pomijać przedrostki Math przed nazwami funkcji. import static java.lang.Math.*; public class Funkcje{ public static void main(String[] args){ double liczba = 9.0; int b = 3; double pierwiastek = sqrt(liczba); double potega = pow(liczba, b); System.out.println("Pierwiastek z "+liczba+" wynosi: "+pierwiastek); System.out.println("Liczba "+liczba+" podniesiona do potegi "+b+" to "+potega); } }
W klasie Math występują także dwie stałe PI oraz E, dzięki nim nie musimy deklarować własnych liczb pi oraz e. Wywołujemy je podobnie jak funkcje. Math.PI Math.E
Wielkie liczby Może się zdarzyć, że nawet zakres typów long, czy double nie wystarczy do naszych obliczeń. Co wtedy zrobić? W Javie istnieją dwie klasy do przechowywania naprawdę ogromnych liczb oferujące dodatkowe funkcje matematyczne i nadające się także do precyzyjnych obliczeń matematycznych, na przykład w bankowości. BigInteger – klasa dla wielkich liczb całkowitych BigDecimal – klasa dla wielkich liczb zmiennoprzecinkowych Ich używanie w tradycyjnych programach nie jest zbyt wygodne, ponieważ nie można zrobić bezpośredniego przypisania wartości BigInteger przykładowo do wartości int, mimo, że BigInteger przechowywałaby liczbę z zakresu int. Jest to spowodowane tym, że klasa BigInteger jest typem obiektowym. Obie klasy posiadają także stałe, które są często wykorzystywane, najważniejsze to BigInteger.ONE / BigDecimal.ONE BigInteger.ZERO / BigDecimal.ZERO
By utworzyć nową zmienną typu BigInteger, lub BigDecimal musimy najpierw utworzyć obiekt . W nagłówku trzeba oczywiście też zaimportować używaną klasę. Import java.math.BigInteger; public class WielkaLiczba{ public static void main(String[] args){ BigInteger wielkaLiczba = new BigInteger("12312312312312312312"); System.out.println(wielkaLiczba.toString()); } }
BigInteger wielkaLiczba = BigInteger.valueOf(123123); Najpierw tworzymy wielką liczbę typu, zauważ, że podajemy ją w formie Stringa. Jednak można również użyć innej formy. BigInteger wielkaLiczba = BigInteger.valueOf(123123); W tym przypadku trzeba jednak pamiętać, aby argument metody valueOf() nie przekroczył zakresu typu long, lub double w przypadku klasy BigDecimal. Przy sposobie ze Stringiem mogą one być praktycznie nieograniczone. Aby dodać dwie ogromne liczby nie możemy korzystać ze standardowych operatorów, należy w takim wypadku skorzystać z gotowych funkcji: add(), subtract(), multiply(), divide().
import java.math.BigInteger; public class WielkieLiczby{ public static void main(String[] args){ BigInteger a = new BigInteger("123123123123123123123123123123"); BigInteger b = new BigInteger("987654321987654321987654321987"); BigInteger suma = a.add(b); System.out.println("Suma "+suma.toString()); } } Stworzyliśmy tutaj dwie wielkie liczby a i b. Następnie obliczamy ich sumę dzięki konstrukcji a.add(b), która zwraca wynik dodawania dwóch liczb typu BigInteger. Wyświetlamy wynik dzięki temu, że klasa BigInteger posiada metodę toString() konwertującą liczbę na łańcuch znaków
Zadania 1. Napisz prosty kalkulator, w którym zainicjujesz dwie zmienne int a i b dowolnymi liczbami mieszczącymi się w zakresie – niech a będzie liczbą ujemną, natomiast b dodatnią… Następnie wykorzystując import statyczny wyświetl wyniki następujących działań bez użycia dodatkowych zmiennych: -a^b (a do potęgi b) -|a| (wartość bezwzględna z liczby a) -pierwiastek z liczby a do potęgi b. Zobacz co się stanie, gdy do a i b przypiszesz dwie 3 cyfrowe liczby, oraz gdy liczba b będzie nieparzysta (wynik a^b będzie ujemny). 2. Napisz program analogiczny do zadania 1 wykorzystując klasę BigInteger. Utwórz dwie liczby wykraczające poza zakres long, wypróbuj funkcje dodawania, odejmowania i mnożenia, a także podniesienie do potęgi(zobacz w API jaki typ parametru przyjmuje ta funkcja) i wartość bezwzględną. Wszystkie wyniki zaprezentuj w konsoli.
Rozwiązania import static java.lang.Math.*; public class Funkcje{ public static void main(String[] args){ int a = -125; int b = 3; System.out.println(pow(a, b)); System.out.println(abs(a)); System.out.println(sqrt(pow(a,b))); } }
Rozwiązania mport java.math.BigInteger; public class Funkcje{ public static void main(String[] args){ BigInteger a = new BigInteger("-123123123123123123123123123123"); BigInteger b = new BigInteger("321321321321321321321321321321"); System.out.println("a+b= "+a.add(b).toString()); System.out.println("a-b= "+a.subtract(b).toString()); System.out.println("a*b= "+a.multiply(b).toString()); System.out.println("a/b= "+a.divide(b).toString()); System.out.println("a^12= "+a.pow(12)); System.out.println("|a|= "+a.abs()); } }
File plik = new File("nazwa_pliku.txt"); Zapis i odczyt z plików Zapis i odczyt danych z plików to już bardziej zaawansowane zagadnienie. w Javie, ale na szczęście w przypadku plików tekstowych nie taki diabeł straszny o czym się zaraz przekonamy. Aby sprawnie porozumiewać się z istniejącymi na naszym dysku danymi musimy przede wszystkim poznać kilka podstawowych klas. Podstawowa klasa, która pozwoli nam utworzyć obiekt przechowujący dane pliku to File. Tworzymy je w następujący sposób: W ten sposób mamy do dyspozycji obiekt File o nazwie plik, który pozwoli nam na operacje na nim. File plik = new File("nazwa_pliku.txt");
Scanner odczyt = new Scanner(new File("nazwa_pliku.txt")); Na najprostszy odczyt danych pozwala już wcześniej poznana klasa Scanner. Aby utworzyć strumień, należy użyć takiej konstrukcji: Scanner odczyt = new Scanner(new File("nazwa_pliku.txt")); Widzimy tutaj typową dla Javy i języków obiektowych konstrukcję zwaną dekoratorem, lub kompozycją często stosowaną w Javie. Klasa Scanner „obudowuje” klasę File, dzięki czemu mamy dostęp do pliku. Później przekonamy się, że takich zagnieżdżeń może być dużo więcej.
String text = odczyt.nextLine(); Gdy mamy utworzony obiekt Scanner z przekazanym jej odpowiednim obiektem File możemy już używać odpowiednich metod, czyli podobnie jak miało to miejsce w konsoli poprawna będzie taka instrukcja: Wczytamy w ten sposób do zmiennej text linię tekstu z pliku tekstowego. Sprawdźmy to na przykładzie. Utwórz plik, w którym zapiszesz jedną dowolną linię tekstu, przykładowo „Ala ma kota, bo nie wzięła leków”. Zapisz go jako ala.txt. Kod programu do odczytania tego zdania wyglądałby następująco:
Import java. io. File; import java. io Import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Odczyt{ public static void main(String[] args) throws FileNotFoundException{ File file = new File("ala.txt"); Scanner in = new Scanner(file); String zdanie = in.nextLine(); System.out.println(zdanie); } }
Pamiętaj, aby plik był w tym samym folderze, co plik Pamiętaj, aby plik był w tym samym folderze, co plik .class, w innym wypadku podaj ścieżkę do pliku w miejsce jego nazwy.
Źródło: http://javastart.pl