Java alles Memo

Insgeheim studieren Vergiss und google für dich

Konstante

Name der endgültigen Datentypkonstante=Wert

null Es gibt kein Referenzziel Eine leere Zeichenfolge ("") ist nicht null, da sich am Referenzziel eine leere Zeichenfolge befindet. → Primitive Typen haben keinen Nullstatus

Ich möchte vergleichen

Bei null löst die Verwendung der equals-Methode eine Ausnahme aus. (NullPointerException) Verwenden Sie den Operator "==".

Leere Zeichen

Verwenden Sie die Methode "isEmpty"

Erbe

Kann durch Erweitern einer vorhandenen Klasse erstellt werden Unterklassen erben die Felder und Methoden von Oberklassen. Verwenden Sie das Schlüsselwort super, um auf Methoden der Oberklasse zuzugreifen Verwenden Sie das Schlüsselwort this, um auf Methoden der Unterklasse zuzugreifen. Es gibt eine Oberklasse und mehrere Unterklassen.

super.hoge();

überschreiben

Implementieren Sie den Namen der übereinstimmenden übergeordneten Methode, den Rückgabewert und die Argumente in der untergeordneten Klasse Es scheint gut zu sein, "@Override" explizit hinzuzufügen.

//
@Override
void hoge(){
}

abstract class TestClass {
    void test() {
        System.out.println("TEST");
    }
}
public class SampleProgram {
    public static void main(String[] args) {
        //
        TestClass tc = new TestClass();
    }
}

Überschriebene Methoden haben Vorrang vor Unterklassen. Es kann keine abstrakte Klasseninstanz erstellt werden. Klassenkompilierungsfehler: Es kann keine Instanz vom Typ TestClass Abstract-Methode erstellt werden. Eine Methode, die keine Anweisungen in der Methode enthält --Abstraktionsmethoden werden in abstrakten Klassen definiert

abstract class TestClass {
    //Gewöhnliche Methode
    void test() {
        System.out.println("TEST");
    }
    //Abstrakte Methode
    abstract void test2();
}

abstract class TestClass {
    //Kompilierungsfehler: Die abstrakte Methode gibt keinen Body an
    abstract void test() {
        System.out.println("TEST");
    }
}

Selbst wenn Sie eine abstrakte Klasse erben und eine Unterklasse als abstrakte Klasse definieren, müssen Sie sie nicht überschreiben. ..

abstract class TestClass {
    //Gewöhnliche Methode
    void test() {
        System.out.println("TEST");
    }
    //Abstrakte Methode
    abstract void test2();
}

//Kein Kompilierungsfehler
abstract class subClass extends TestClass {
}

//Kompilierungsfehler: Der Typ subClass ist eine geerbte abstrakte Methode TestClass.test2()Muss implementiert werden
class subClass extends TestClass {
}

Schnittstelle

interface testIf{
    int test();
    void test2(String msg);
}
interface testIf{
    void test2(String msg);
}
//Kompilierungsfehler: Der Typentest ist eine geerbte abstrakte Methode testIf.test2(String)Muss implementiert werden
class test implements testIf{

}

//Kompilierungsfehler: Die Sichtbarkeit von von testIf geerbten Methoden kann nicht verringert werden
class test implements testIf{
    void test2(String msg) {
        System.out.println(msg);
    }
}

//Kein Kompilierungsfehler
class test implements testIf{
    public void test2(String msg) {
        System.out.println(msg);
    }
}

Mehrere Schnittstellen erben

interface testIf1{
    void test1(String msg);
}

interface testIf2{
    int test2();
}

class test implements testIf1, testIf2{
    public void test1(String msg) {
        System.out.println(msg);
    }

    public int test2() {
        return 1;
    }
}

Konstante Definition in der Schnittstelle

interface testIf1{
    int HOGE = 1;
    public static final String HOGE2 = "Konstante";
}

class test implements testIf1{
    int i = testIf1.HOGE;
    //Kompilierungsfehler: letztes Feld testIf1.Kann HOGE nicht zugewiesen werden
    //testIf1.HOGE = 1;
    void testPrint() {
        System.out.println(testIf1.HOGE2);
    }
}

public class SampleProgram {
    public static void main(String[] args) {
        test t = new test();
        t.testPrint();
    }
}

Schnittstellenvererbung

interface testIf1{
    int HOGE = 1;
    public static final String HOGE2 = "Konstante";
    void test();
    void test2();
}
//Schnittstellenvererbung
interface testIf2 extends testIf1{
    void test();
}

//Kompilierungsfehler: Typ Test ist eine geerbte abstrakte Methode testIf1.test2()Muss implementiert werden
class test implements testIf2{

    @Override
    public void test() {
        //TODO automatisch generierter Methodenstub
    }
}

//Kein Kompilierungsfehler
class test implements testIf2{

    @Override
    public void test() {
        //TODO automatisch generierter Methodenstub
    }

    @Override
    public void test2() {
        //TODO automatisch generierter Methodenstub
    }
}

Selbst wenn die übergeordnete Schnittstelle und die untergeordnete Schnittstelle dieselbe Methodendefinition haben, wird dies nicht als Fehler behandelt. .. Es wird eine Quelle der Verwirrung sein.

Polymorphismus

Im Japanischen bedeutet es Polymorphismus (führt verschiedene Bewegungen aus).

import java.util.ArrayList;
import java.util.List;

interface TestIf{
    public abstract void run();
}

class TestAAA implements TestIf{

    String myClassName = "TestAAA";
    @Override
    public void run() {
        //TODO automatisch generierter Methodenstub
        System.out.println(myClassName);
    }
}


class TestBBB implements TestIf{

    String myClassName = "TestBBB";
    @Override
    public void run() {
        //TODO automatisch generierter Methodenstub
        System.out.println(myClassName);
    }
}


public class SampleProgram {
    public static void main(String[] args) {

        //Schnittstellentypsammlungen und Arrays sind verfügbar
        List<TestIf> list = new ArrayList<TestIf>();
        TestIf[] array = new TestIf[2];

        //Legen Sie jede Instanz in der Sammlung fest
        list.add(new TestAAA());
        list.add(new TestBBB());

        //Legen Sie jede Instanz im Array fest
        array[0] = new TestAAA();
        array[1] = new TestBBB();

        System.out.println("Sammlung");
        for(TestIf ti: list) {
            ti.run();
        }
        System.out.println("Array");
        for(int i = 0; i < array.length; i++) {
            array[i].run();
        }

    }
}

Kopieren

Kopie des Arrays

Array2 wird zu einer Referenz auf Array1. Das Umschreiben der Elemente von Array2 wirkt sich auch auf Array1 aus. Das Gegenteil ist auch der Fall.

int[] array1 = {1,2,3};
int[] array2 = array1;

Sie können den Wert mit der Klonmethode kopieren. Gleiches gilt für die Sammlung.

int[] array2 = array1.clone();

Flache Kopie, tiefe Kopie

Manchmal reicht die Klonmethode nicht aus. Wenn das Element ein Objekttyp anstelle eines primitiven Typs ist Da der Objekttyp kein Wert, sondern ein Referenzziel als Element ist, wird der Wert am Referenzziel nicht kopiert. Dies wird als flache Kopie bezeichnet. Dies bedeutet, dass mehrere Objekte denselben Wert haben. Deep Copy zum Kopieren auf den angegebenen Wert. Wie viel kopiert werden muss, hängt vom Programm ab.

scheint schwer. ..

Generika

Geben Sie an, dass der Typ erzwungen werden soll, indem Sie den Typ in "<" und ">" einfügen und notieren.

Muster mit Generika

Es kann nur der Typ String eingegeben werden.


List<String> list = new ArrayList<String>();

Muster, die keine Generika verwenden

In Eclipse wird eine Warnmeldung angezeigt, die jedoch verwendet werden kann. Da der Datentyp nicht angegeben ist, kann alles andere als der primitive Typ eingegeben werden.


List list = new ArrayList();

Vorteile von Generika

List list = new ArrayList();
List<String> list2 = new ArrayList<String>();

//Die Besetzung ist kompliziert
System.out.println(((String) list.get(0)).length());
//Kann wie ein normaler String-Typ verwendet werden
System.out.println(list2.get(0).length());

Sicherlich kann es einfacher sein, Generika zu verwenden. Eclipse ist jedoch ausgezeichnet.

Array

Anzahl der Elemente im Array

Sequenzname.length

Immer wieder verschieden

Basic

public class SampleProgram {

    public static void main(String[] args) {
        int[] box = {0,1,2,3,4,5,6,7,8,9};

        for(int i = 0; i < 10; i++) {
            if(i == 5) {
                System.out.println(i+1+":"+box[i]+"_continue");
                continue;
            }else if(i == 7) {
                System.out.println(i+1+":"+box[i]+"_break");
                break;
            }
            System.out.println(i+1+":"+box[i]);
        }
    }
}

//Ergebnis
1:0
2:1
3:2
4:3
5:4
6:5_continue
7:6
8:7_break
public class SampleProgram {

    public static void main(String[] args) {
        int[] box = {0,1,2,3,4,5,6,7,8,9};
        int i = 0;
        while(i < 10) {
            System.out.println(i+1+":"+box[i]);
            i++;
        }
    }
}

public class SampleProgram {

    public static void main(String[] args) {
        int[] box = {0,1,2,3,4,5,6,7,8,9};
        int i = 0;
        do {
            System.out.println(i+1+":"+box[i]);
            i++;
        }while(i < 10);
    }
}

Ich habe es schon lange nicht mehr gesehen ... Mit zunehmender Anzahl von Indizes geht der Bestand an Namen zur Neige. ..

Extended For-Anweisung

import java.util.HashSet;
import java.util.Set;

public class SampleProgram {

    public static void main(String[] args) {
        //Lassen Sie keine doppelten Werte zu
        //Es gibt keine Bestellgarantie
        Set<String> hs = new HashSet<String>();
        hs.add("Weiß");
        hs.add("rot");
        hs.add("Weiß");
        hs.add("Grün");

        int[] array = {1,2,3,1};

        //HashSet hat keine get-Methode
//        for(int i = 0; i < hs.size(); i++) {
//            System.out.println(hs.(i));
//        }

        //Für Aussage erweitert
        for(String item : hs) {
            System.out.println(item);
        }

        for(int i : array) {
            System.out.println(i);
        }
    }
}

//Ergebnis
Grün
rot
Weiß
1
2
3
1

Lambda-Stil

Schwer ...

verschiedene


public class TestMain {
    public static void main(String[] args) {
        List<String> cities = new ArrayList<String>();
        cities.add("Kyoto");
        cities.add("Osaka");
        cities.add("Aichi");

        System.out.println("Schleife 1");
        for(int i = 0; i < cities.size(); i++) {
            System.out.println(cities.get(i));
        }
        System.out.println("Schleife 2");
        for(Iterator<String> ite = cities.iterator(); ite.hasNext();) {
            System.out.println(ite.next());
        }
        System.out.println("Schleife 3: Erweiterung für Schleife");
        for(String city : cities) {
            System.out.println(city);
        }

        System.out.println("Schleife 4:");
        cities.forEach(new Consumer<String>() {
            public void accept(final String citiy) {
                System.out.println(citiy);
            }
        });

        System.out.println("Schleife 5: Lambda-Typ");
        cities.forEach((final String city) -> System.out.println(city));

        System.out.println("Schleife 6: Lambda-Typ");
        cities.forEach(System.out::println);
    }

}

map

Wiederholen Sie die Liste der Schlüssel und Werte

import java.util.HashMap;
import java.util.Map;
public class SampleProgram {

    public static void main(String[] args) {

        Map<String, String> map = new HashMap<String, String>(){
            {
                put("001","rot");
                put("002","Blau");
                put("003","Grün");
            }
        };

        //Wert
        for(String item : map.values()) {
            System.out.println(item);
        }

        //Schlüssel
        for(String item : map.keySet()) {
            System.out.println(item);
        }
    }
}

Standardkodierung

Beim Kompilieren mit Javac

Schreiben Sie den Quellcode beiläufig mit Sakura Editor oder Notepad

javac hoge.java

Und beiläufig kompilieren Ich wusste nicht, dass ich nur einen Knopf auf Eclipse drückte. Nach dem manuellen Kompilieren des unter Eclipse unter DOS erstellten Quellcodes


//Quellcode
public class SampleProgram {
    public static void main(String[] args) {
    	System.out.println("Hoge");
    }
}

//Ergebnis
C:\MyWork\>javac SampleProgram.java
SampleProgram.java:6:Error:Dieses Zeichen kann nicht der Codierung von MS932 zugeordnet werden
        System.out.println("縺 縺?");
                               ^
1 Fehler

C:\MyWork\>

Dies liegt daran, dass die Quelldatei "UTF-8" und die Windows-Standardcodierung "MS932" ist. Wenn Sie die Codierung beim Kompilieren mit Javac nicht angeben, wird sie mit der Standardcodierung von JVM (?) Kompiliert. Wenn die Umgebung Windows ist und die Dateicodierung "UTF-8" ist

javac -encoding utf8 SampleProgram.java

Dann können Sie es sicher kompilieren.

So überprüfen Sie die Standardcodierung

import java.util.Properties;
import java.util.Enumeration;

class sampleEncoding{
  public static void main(String args[]){
    System.out.println(System.getProperty("file.encoding"));
  }
}

Ändern Sie die Standardkodierung

Die Standardcodierung ist ein Java-Programm und scheint sich auf die Ein- und Ausgabe auszuwirken. Wenn Sie beim Lesen der Datei die Codierung der Datei nicht angeben Es scheint, dass die Standardcodierung verwendet wird In einer Umgebung, in der die Standardcodierung "utf8" ist Wenn die zu lesende Datei "euc" ist, müssen Sie die Codierung angeben Verursacht verstümmelte Zeichen.

Wenn Sie die Standardcodierung im Voraus ändern, können Sie den Quellcode und die Eingabedatei ändern. Selbst wenn Sie es nicht tun, werden die Zeichen nicht verstümmelt und Sie können es kompilieren.

Für REM-Fenster
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8


C:\MyWork>javac SampleProgram.java
SampleProgram.java:6:Error:Dieses Zeichen kann nicht der Codierung von MS932 zugeordnet werden
        System.out.println("縺 縺?");
                               ^
1 Fehler

C:\MyWork>set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

C:\MyWork>javac SampleProgram.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

C:\MyWork>

Verwenden Sie bei der Geldberechnung keine Floats oder Doubles

Es scheint ein Fehler zu sein, wenn es intern in binär konvertiert und berechnet wird

Es scheint die BigDecimal-Klasse zu verwenden. Es scheint zu berechnen, ohne in binär zu konvertieren.

import java.math.BigDecimal;

public class SampleProgram {

    public static void main(String[] args) {
        double xx = 1.0;
        double yy = 0.9;
        System.out.println(xx - yy);
        System.out.println(xx / yy);

        BigDecimal x = new BigDecimal("1.0");
        BigDecimal y = new BigDecimal("0.9");

        System.out.println(x.subtract(y));
        System.out.println(x.divide(y, 2, BigDecimal.ROUND_UP));
        System.out.println(x.divide(y, 2, BigDecimal.ROUND_DOWN));
        System.out.println(x.divide(y, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(x.divide(y, 3, BigDecimal.ROUND_HALF_DOWN));
        System.out.println(x.divide(y, 2, BigDecimal.ROUND_HALF_UP));
        System.out.println(x.divide(y, 3, BigDecimal.ROUND_HALF_DOWN));
    }

}


//Ergebnis
0.09999999999999998
1.1111111111111112
0.1
1.12
1.11
1.11
1.111
1.11
1.111

Was ist der Unterschied zwischen BigDecimal.ROUND_HALF_UP und BigDecimal.ROUND_HALF_DOWN? Als Ergebnis des Erhalts von Kommentaren und der erneuten Prüfung BigDecimal.ROUND_HALF_UP ist gerundet BigDecimal.ROUND_HALF_DOWN wird abgerundet war. Es ist ganz anders. .. ..

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class SampleProgram {

    public static void main(String[] args) {

        DecimalFormat format = new DecimalFormat("#.#");
        BigDecimal x = new BigDecimal("10.55");



        BigDecimal xx = x.setScale(1, BigDecimal.ROUND_HALF_UP);
        System.out.println("Auf die zweite Fraktion gerundet: " + format.format(xx));

        BigDecimal xxx = x.setScale(1, BigDecimal.ROUND_HALF_DOWN);
        System.out.println("Auf die zweite Dezimalstelle gerundet: " + format.format(xxx));

    }

}

//Ergebnis
Auf die zweite Fraktion gerundet: 10.6
Auf die zweite Dezimalstelle gerundet: 10.5

Übrigens, wenn Sie nur die Zahl angeben, die durch Teilen geteilt werden soll, treten die folgenden Ausnahmen auf ... Es scheint, dass die Ursache darin besteht, dass das Berechnungsergebnis ein kreisförmiger Bruch ist

System.out.println(x.divide(y));

//Ausnahme
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
	at java.math.BigDecimal.divide(BigDecimal.java:1690)
	at SampleProgram.main(SampleProgram.java:15)

Sucht nach der Quelle der Zahlen

Es kann durch "_" getrennt werden. Das Anzeigeergebnis hat keinen Einfluss auf die Berechnung. Hmm. .. .. Ist es bequem, Konstanten zu definieren?

int x = 1_000;

Ich möchte einen anderen Typ zuordnen

Es können nur gegenseitige Abgüsse verwendet werden

int x = 12;
int y = 5;
double ans = (double)x / (double)y;

Was hängt zusammen?

Aber ich möchte eine Zahl in eine Zeichenfolge konvertieren

Verwenden Sie die String.valueOf-Methode Wie benutzt man Klassenname. Methodenname

int x = 1234;
String ss = String.valueOf(x);

Jetzt, da es sich um einen Zeichenfolgentyp handelt, können Sie die Längenmethode verwenden.

public class SampleProgram {

    public static void main(String[] args) {
        int x;
        x = 123 * 234;
        System.out.println(String.valueOf(x).length());
    }

}

Die Methode zum Aufrufen der Klasse

Im Gegenteil, die Methode zum Aufrufen des Objekts (für die Variable) Es wird die Instanzmethode genannt.

Gibt es "statisch" zu unterscheiden?

Ich möchte aus einer Zeichenkette eine Zahl machen

Konvertieren Sie einen primitiven Typ mithilfe einer Wrapper-Klasse in ein Objekt.

Primitiver Typ Wrapper-Klasse
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
import java.io.IOException;

public class SampleProgram {

    public static void main(String[] args) throws IOException {
       String x = "123";
       String xx = "12.45";
       int y;
       double yy;

       //Der primitive Typ kann dem String-Typ nicht zugewiesen werden
       //y = x;

       y = Integer.valueOf(x);
       System.out.println(y);
       yy = Double.valueOf(xx);
       System.out.println(yy);
    }
}
//Ergebnis
123
12.45

Zusammenfassung

Wie schreibe ich Bedingungen

IF-Anweisung

Wenn ich anfange, in verschiedenen Sprachen zu arbeiten, weiß ich nicht, wie ich "else if" schreiben soll. ..

Grundform

if(Bedingung 1) {
    
}else if(Bedingung 2) {
    
}else {
    
}

Vergleichsoperator

Operator Bedeutung
== gleich
!= anders
> -
>= -
< -
<= -

Logischer Operator

"==" Und "gleich"

"==" Beurteilt, ob die Objekte gleich sind, Verwenden Sie "gleich", um festzustellen, ob die Werte gleich sind. "Gleich" wird für andere Typen als primitive Typen bereitgestellt.

(Unterschied zwischen Referenztyp und Basistyp. Der Basistyp speichert den Wert, aber der Referenztyp speichert die Adresse des Objekts ... ??)

Reguläre Ausdrücke

schwer. ..

public class SampleProgram {

    public static void main(String[] args)  {

        String[] tell = {"090-1234-1234","1234-1234-1234","090-O123-1234"};
        /*
         *3-stellige Nummer-4-stellige Nummer-4-stellige Nummer
         */
        for(int i = 0; i < tell.length; i++) {
            System.out.println(tell[i]);
            if(tell[i].matches("\\d{3}-\\d{4}-\\d{4}")) {
                System.out.println("Richtige Antwort");
            }else {
                System.out.println("Falsche Antwort");
            }
        }

    }

}

//Ergebnis
090-1234-1234
Richtige Antwort
1234-1234-1234
Falsche Antwort
090-O123-1234
Falsche Antwort

Ausnahme

Grundform

Ich frage mich, ob es endlich nicht viel gibt. ..

try{

}catch(Ausnahmeklasse Variablenname){

}finally{

}

Aus der Methode werfen

Wenn eine Ausnahme innerhalb einer Methode auftritt, kann sie aus der Methode entfernt werden, ohne sie innerhalb der Methode abzufangen. Sie müssen die Ausnahme draußen abfangen.

Rückgabewert Methodenname(Streit)löst einen Ausnahmetyp aus{

}

Gibt es eine Try-with-Resources-Syntax? .. .. Es scheint eine Funktion von Java 7 zu sein. ~~ Lass es jetzt. .. ~~ In den Kommentaren wurde mir beigebracht, wie man es benutzt! Es kann bequem sein.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class SampleProgram {
    public static void main(String[] args) {
        String fileName1 =  "C:\\test3.txt";
        String fileName2 = "C:\\test4.txt";

        //String fileName1 = null;

        try (
                FileReader fr = new FileReader(new File(fileName1));
                BufferedReader bfr = new BufferedReader(fr);
                FileReader fr2 = new FileReader(new File(fileName2));
                BufferedReader bfr2 = new BufferedReader(fr2);

             )
        {
            String ss = null;

            while((ss = bfr.readLine()) != null) {
                System.out.println(ss + "Geladen");
                //throw new IOException();
            }
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
}

//Grundform
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class SampleProgram {

    public static void main(String[] args)  {

        try {
            File file = new File("C:\\test3.txt");
            FileReader fr = new FileReader(file);
            BufferedReader bfr = new BufferedReader(fr);
            String ss = null;

            while((ss = bfr.readLine()) != null) {
                System.out.println(ss + "Geladen");
            }
            bfr.close();

        }catch(IOException e) {
            e.printStackTrace();
        }
    }

}
//Ergebnis
java.io.FileNotFoundException: C:\test3.txt (Die angegebene Datei wurde nicht gefunden.)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileReader.<init>(FileReader.java:72)
	at SampleProgram.main(SampleProgram.java:12)


//Wirf eine Ausnahme aus
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class SampleProgram {

    public static void main(String[] args) throws IOException {

        File file = new File("C:\\test3.txt");
        FileReader fr = new FileReader(file);
        BufferedReader bfr = new BufferedReader(fr);
        String ss = null;

        while((ss = bfr.readLine()) != null) {
            System.out.println(ss + "Geladen");
        }
        bfr.close();

    }

}
//Ergebnis
Exception in thread "main" java.io.FileNotFoundException: C:\test3.txt (Die angegebene Datei wurde nicht gefunden.)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileReader.<init>(FileReader.java:72)
	at SampleProgram.main(SampleProgram.java:11)

Machen Sie selbst eine Ausnahme

Verwenden Sie eine vorhandene Klasse

Was durch throw geworfen wird, ist eine Instanz einer Klasse, die Throwable erbt.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class SampleProgram {

    public static void main(String[] args) throws IOException {

        try {
            File file = new File("C:\\test3.txt");
            FileReader fr = new FileReader(file);
            BufferedReader bfr = new BufferedReader(fr);
            String ss = null;

            while((ss = bfr.readLine()) != null) {
                System.out.println(ss + "Geladen");
            }
            bfr.close();
        }catch(IOException e) {
            IOException ee = new IOException("IOException ist aufgetreten! !!");
            throw ee;

        }

    }

}

//Ergebnis
Exception in thread "main" java.io.IOException:IOException ist aufgetreten! !!
	at SampleProgram.main(SampleProgram.java:21)

Mach dein eigenes

Wenn Sie eine Ausnahme erstellen möchten, die nicht von Ihnen selbst vorbereitet wurde, erstellen Sie eine Ausnahmeklasse, die die Ausnahmeklasse erbt.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;


class myException extends Exception{
    myException(String msg) {
        super(msg);
    }

}

public class SampleProgram {

    public static void main(String[] args) throws Exception {

        try {
            File file = new File("C:\\test3.txt");
            FileReader fr = new FileReader(file);
            BufferedReader bfr = new BufferedReader(fr);
            String ss = null;

            while((ss = bfr.readLine()) != null) {
                System.out.println(ss + "Geladen");
            }
            bfr.close();
        }catch(Exception e) {
            e.printStackTrace();
            throw new myException("warf");

        }

    }

}

//Ergebnis
java.io.FileNotFoundException: C:\test3.txt (Die angegebene Datei wurde nicht gefunden.)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileReader.<init>(FileReader.java:72)
	at SampleProgram.main(SampleProgram.java:19)
Exception in thread "main" myException:warf
	at SampleProgram.main(SampleProgram.java:29)


Konstrukteur

Basic

Zugriffsmodifikator Klassenname(Argument Typ Argument) {
//Etwas zu verarbeiten
}

Wenn es eine Vererbungsbeziehung gibt

Der Konstruktor wird nicht vererbt.

//Übergeordnete Klasse
class p{
    p(){
        System.out.println("Übergeordneter Konstruktor 1");
    }
    p(int x){
        System.out.println("Übergeordneter Konstruktor 2");
    }
}
//Kinderklasse
class c extends p{

}

public class SampleProgram {
    public static void main(String[] args) throws Exception {
        c cc = new c(10); 
        c cc = new c();
    }
}
c cc = new c(10);

Wenn Kompilierungsfehler "Konstruktor c (int) ist undefiniert"

c cc = new c();

damit "Übergeordneter Konstruktor 1" wird angezeigt Vorgeben, dass der übergeordnete Konstruktor (ohne Argumente) geerbt wird Es scheint, dass der Compiler den Standardkonstruktor automatisch hinzugefügt hat, da in der untergeordneten Klasse nichts deklariert wurde.

Ich weiß es nicht über die Quelle, aber es scheint, dass es den übergeordneten Konstruktor so aufrufen soll

class c extends p{
  c(){
    super();
  }
}

Ist Eltern und Kind ein Set? ??

Ich habe versucht, dem Kind explizit einen Konstruktor hinzuzufügen, aber aus irgendeinem Grund wurde auch der übergeordnete Konstruktor aufgerufen.

class p{
    p(){
        System.out.println("Übergeordneter Konstruktor 1");
    }
    p(int x){
        System.out.println("Übergeordneter Konstruktor 2");
    }
}

class c extends p{
    c(){
        System.out.println("Untergeordneter Konstruktor 1");
    }
}

public class SampleProgram {

    public static void main(String[] args) throws Exception {

        c cc = new c();

    }

}

//Ergebnis
Übergeordneter Konstruktor 1
Untergeordneter Konstruktor 1

Wenn eine untergeordnete Klasse instanziiert wird, wird natürlich der Konstruktor der untergeordneten Klasse ausgeführt. Es scheint jedoch, dass der Konstruktor ohne das Argument der übergeordneten Klasse zuvor ohne Erlaubnis aufgerufen wird. Ich kann es nicht in der Quelle sehen, aber es scheint so.

class c extends p{
    c(){
        super();★ Kann vom Compiler angehängt werden
        System.out.println("Untergeordneter Konstruktor 1");
    }
}

Hmmm. .. .. Wenn du es nicht weißt ..

Andere

Snippet

Eine Syntax, die durch Kopieren gespeichert oder umgeleitet werden kann

Ich möchte System.out.println so weit wie möglich weglassen ...


import static java.lang.System.*;

public class SampleProgram{
    public static void main(String[] args) {
        out.println("hoge");
    }
}

Referenzlink

Hishidamas technische MemoseiteJava

Recommended Posts

Java alles Memo
Java alles Memo 2
Java-Memo
Java Silver Memo
Java, Maven Memo
Java SE 7 Hinweis
Java-Spezifikationsnotiz
Java-Muster-Memo
Memo zur Java-Entwicklungsumgebung
Java Grundwissen Memo
Java-Lernnotiz (Methode)
Java Kuche Day Memo
Java Se 8 Programmierer Ⅰ Memo
Java bezahlte private Memo
Java-Lernnotiz (grundlegend)
Java Lambda Ausdruck Memo
(Memo) Java für Anweisung
Java Lambda Ausdruck [Notiz schreiben]
Java-Lernnotiz (Schnittstelle)
[Java] Implizites Vererbungsprotokoll
Java-Lernnotiz (Vererbung)
Programmiernotiz für Java-Wettbewerbe
[Memo] Java Linked List
Java (WebSphere Application Server) Hinweis [1]
[Java] Namensnotiz des Variablennamens
Java-Memo-Teilzeichenfolge (Standardklasse)
Java-Lernnotiz (Datentyp)
Länge des Java-Memos (Standardklasse)
Java Silver Lernmethode Memo
Erstellen Sie eine Java-Methode [Memo] [java11]
Java Silver Prüfungsvorbereitungsnotiz
Java-Lernnotiz (logischer Operator)
Java
Java-Lernnotiz (abstrakte Klasse)
[Java] Datum Verwandte Begriffsnotiz
Java Study Memo 2 mit Progate
Java
Was sind Java-Metriken? _Memo_20200818
Java HashMap, entrySet [Persönliches Memo]
[Eclipse Java] Memo zum Einstellen der Entwicklungsumgebung
Java-Lernnotiz (Erstellen eines Arrays)
Persönliches Memo: Metaprogrammierung mit Java-Reflexion
JCA-Verwendungsprotokoll (Java Encryption Architecture)
[Java] Memo zum Benennen von Klassennamen
[Memo zur Studiensitzung] Java Day Tokyo 2017
Java-Lernnotiz (while-Anweisung, do-while-Anweisung)
Von Java zu VB.NET-Writing Kontrastmemo-
Stolpern von Java-Anfänger [Memo schreiben]
[Java] Memo zur Verarbeitungszeitmessmethode
Ich habe versucht, Java Memo LocalDate zu verwenden
Docker-Memo
Java lernen (0)
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
[Java] Modul
Java-Array