[[:oktatas:programozás:java|< Java]]
====== Java specialitások ======
* **Szerző:** Sallai András
* Copyright (c) 2011, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Osztályok mezői, metódusainak kiíratása =====
A Java nyelven létezik egy Class osztály.
Ezzel lekérdezhetők egy osztály metódusai,
konstruktorai, mezői stb.
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.io.*;
class ref
{
public static void main(String[] args)
{
try {
// Megadjuk melyik osztályra vagyunk kíváncsiak
Class cl = Class.forName("java.lang.Thread");
// getDeclaredFields() a konstruktorok lekérdezése
Constructor cnst[] = cl.getConstructors();
// getFields() az osztály deklarált mezőit adja vissza
Field fld[] = cl.getDeclaredFields();
// getMethods() az osztály deklarált metódusait adja vissza
Method mtd[] = cl.getMethods();
System.out.println("Az osztály konstruktorai");
for (int i = 0; i < cnst.length; i++) {
System.out.println(cnst[i].getName());
}
System.out.println("A mezők nevei");
for (int i = 0; i < fld.length; i++) {
System.out.println(fld[i].getName());
}
System.out.println("Metódusok nevei");
for (int i = 0; i < mtd.length; i++) {
System.out.println(mtd[i].getName());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
System.in.read();
} catch(Exception e) {}
}
}
using System;
using System.Reflection;
class Program
{
static void Main()
{
Console.WriteLine("Egy objektumon milyen metodusok hasznalhatok");
Object obj = new Object();
Type t = obj.GetType();
foreach (MethodInfo mi in t.GetMethods())
Console.WriteLine(mi.Name);
}
}
==== Linkek ====
* http://www.java2s.com/Code/CSharp/Reflection/MethodInfo.htm
===== Dinamikus adatszerkezetek =====
A teljesség igénye nélkül:
* Class LinkedList
* Class ArrayList
* Class Hashtable
* Class HashMap
===== Statikus importálás =====
Statikus importálás esetén nem szükséges újból és újból beírni egy osztály nevét.
Elég a mező vagy metódus nevét.
import static java.lang.Math.PI;
import static java.lang.Math.pow;
class Program01
{
public static double gombTerfogat(double sugar){
return 4*PI*pow(sugar,2);
}
public static void main(String args[])
{
System.out.println(gombTerfogat(30));
}
}
Az összes metódus importálható egyszerre:
import static java.lang.Math.*;
A System osztály:
import static java.lang.Math.PI;
import static java.lang.Math.pow;
import static java.lang.System.out;
class Program01
{
public static double gombTerfogat(double sugar){
return 4*PI*pow(sugar,2);
}
public static void main(String args[])
{
out.println(gombTerfogat(30));
}
}
===== A math csomag =====
Olyan számváltozókat hozhatunk létre velük amelyek sosem tudnak túlcsordulni.
Osztályok:
* BigDecimal (Tetszőleges pontosságú valós)
* BigInteger (tetszőleges pontosságú egész)
import java.math.BigInteger;
class Program
{
public static void main(String args[])
{
BigInteger a = new BigInteger("30");
System.out.println(a.intValue() * 2);
}
}
==== Faktoriális nagy számokkal ====
import java.math.BigInteger;
class Program01
{
private static BigInteger fact(int n){
BigInteger bd = null;
if(n==0){
bd = new BigInteger("1");
}else{
bd = new BigInteger("1");
for(int i=1;i<=n;i++){
bd = bd.multiply(BigInteger.valueOf(i));
}
}
return bd;
}
public static void main(String[] args)
{
System.out.println(fact(1000));
}
}
==== A sztringek ====
A Java nyelvben a String osztály implementálja a következő interfészeket:
* Serializable
* CharSequence
* Comparable
Így sokszor String típus helyett az API dokumentációban CharSequence látható.
* https://docs.oracle.com/javase/8/docs/api/java/lang/String.html (2024)
* https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html (2024)
===== Linkek =====
* http://java.inf.elte.hu/java-1.2/matematika/index.html