Zahl, Zeichenkette und Array

JavaBeginner
Jetzt üben

Einführung

In Java und anderen objektorientierten Sprachen sind Objekte Sammlungen von verwandten Daten, die mit einer Reihe von Methoden versehen sind. Diese Methoden arbeiten auf den Objekten, führen Berechnungen durch und verändern manchmal die Daten des Objekts. Hier stellen wir drei einfache, aber wichtige eingebaut Java-Objekttypen vor: Number, String und Array.

Zahl

Im Grunde verwenden wir primitive Zahlentypen wie byte, int, double usw. Manchmal müssen wir jedoch Objekte anstelle von primitiven Datentypen verwenden. Java bietet Wrapper-Klassen für primitive Datentypen an. Dies sind Byte, Short, Long, Integer, Double, Float usw. Ein Wrapper-Objekt kann wieder in einen primitiven Datentyp umgewandelt werden. Dieser Prozess wird als Unboxing bezeichnet. Die Number-Klasse ist Teil des java.lang-Pakets. Pakete werden später behandelt.

Im Folgenden ist eine Liste einiger der gängigen Klassenmethoden, die die Unterklassen der Number-Klasse implementieren:

  • xxxValue(): Konvertiert den Wert dieses Number-Objekts in den xxx-Datentyp und gibt ihn zurück.
  • compareTo(): Vergleicht dieses Number-Objekt mit dem Argument.
  • equals(): Bestimmt, ob dieses Number-Objekt gleich dem Argument ist.
  • valueOf(): Gibt ein Integer-Objekt zurück, das den Wert des angegebenen Primitivtyps enthält.
  • toString(): Gibt ein String-Objekt zurück, das den Wert eines angegebenen int oder Integer darstellt.
  • parseInt(): Diese Methode wird verwendet, um den primitiven int-Typ aus einem bestimmten String-Wert zu erhalten.
  • abs(): Gibt den absoluten Wert des Arguments zurück.
  • ceil(): Gibt die kleinste ganze Zahl zurück, die größer oder gleich dem Argument ist. Als double zurückgegeben.
  • floor(): Gibt die größte ganze Zahl zurück, die kleiner oder gleich dem Argument ist. Als double zurückgegeben.
  • pow(): Gibt den Wert des ersten Arguments, auf die Potenz des zweiten Arguments erhoben, zurück.
  • round(): Gibt die der Methode entsprechend als long oder int nächstliegende Zahl zum Argument zurück.

Beispiel:

Schreiben Sie folgenden Code in die Datei /home/labex/project/numberTest.java:

public class numberTest
{
    public static void main(String[] args){
        Integer x = 1;    // boxing von int zu einem Integer-Objekt
        x = x + 1;        // unboxing des Integer zu einem int
        System.out.println(Integer.parseInt("10"));  // int aus einem String parsen
        System.out.println( "x = " + x);
    }
}

Ausgabe:

Führen Sie die Datei numberTest.java mit dem folgenden Befehl aus:

javac /home/labex/project/numberTest.java
java numberTest

Sehen Sie sich die Ausgabe an:

10
x = 2

Zeichenkette

Strings sind Objekte, so dass Sie sich fragen könnten: „Was ist der in einem String-Objekt enthaltene Datensatz?“ und „Welche Methoden können wir auf String-Objekte aufrufen?“ Die Bestandteile eines String-Objekts sind Zeichen. Nicht alle Zeichen sind Buchstaben; einige sind Zahlen, andere sind Sonderzeichen und der Rest sind andere Zeichenklassen. Für die Einfachheit nennen wir sie alle Zeichen. Es gibt viele String-Methoden in der String-Klasse, aber wir werden nur einige von ihnen verwenden. Der Rest kann in der Dokumentation auf der offiziellen Website nachgeschlagen werden.

Hinweis: Die String-Klasse ist unveränderlich, sodass ein String-Objekt, nachdem es erstellt wurde, nicht mehr geändert werden kann. Wenn es notwendig ist, viele Änderungen an Zeichenketten vorzunehmen, sollten Sie die StringBuffer- und StringBuilder-Klassen verwenden.

Im Folgenden ist eine Liste einiger der gängigen Methoden der String-, StringBuffer- und StringBuilder-Klassen:

  • char charAt(int index): Das angegebene Zeichen der Sequenz, die derzeit durch den Zeichenpuffer dargestellt wird, wie durch das index-Argument angegeben, wird zurückgegeben.
  • void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): Zeichen werden aus diesem Zeichenpuffer in das Zielzeichenarray dst kopiert.
  • int indexOf(String str): Gibt den Index innerhalb dieser Zeichenkette der ersten Vorkommen der angegebenen Teilzeichenkette zurück.
  • int indexOf(String str, int fromIndex): Gibt den Index innerhalb dieser Zeichenkette der ersten Vorkommen der angegebenen Teilzeichenkette zurück, beginnend am angegebenen Index.
  • int lastIndexOf(String str): Gibt den Index innerhalb dieser Zeichenkette der rechtsmöglichsten Vorkommen der angegebenen Teilzeichenkette zurück.
  • int lastIndexOf(String str, int fromIndex): Gibt den Index innerhalb dieser Zeichenkette der letzten Vorkommen der angegebenen Teilzeichenkette zurück, indem von rechts beginnend am angegebenen Index gesucht wird.
  • int length(): Gibt die Länge (Zeichenanzahl) dieses Zeichenpuffers zurück.
  • String substring(int start): Gibt eine neue Zeichenkette zurück, die eine Teilfolge der derzeit in diesem StringBuffer enthaltenen Zeichen enthält. Der Teilstring beginnt am angegebenen Index und endet am Ende des StringBuffer.
  • String substring(int start, int end): Gibt eine neue String-Klasse zurück, die eine Teilfolge der derzeit in diesem StringBuffer enthaltenen Zeichen enthält.

Beispiel:

Schreiben Sie folgenden Code in die Datei /home/labex/project/stringTest.java:

public class stringTest
{
    public static void main(String[] args){
        String greeting = "Hello world!";
        String hello = new String("Hello!");
        System.out.println("greeting is: "+ greeting);
        System.out.println("hello is: "+ hello);
        System.out.println("length of greeting: " + greeting.length());
        System.out.println("first char of greeting: " + greeting.charAt(0));
        System.out.println("index of 'e' in hello: "+ hello.indexOf('e'));
        System.out.println("substring of greeting: "+ greeting.substring(6));  //substr: world

    }
}

Ausgabe:

Führen Sie die Datei stringTest.java mit dem folgenden Befehl aus:

javac /home/labex/project/stringTest.java
java stringTest

Sehen Sie sich die Ausgabe an:

greeting is: Hello world!
hello is: Hello!
length of greeting: 12
first char of greeting: H
index of 'e' in hello: 1
substring of greeting: world!

Array

Eine Array-Struktur wird verwendet, um eine Sammlung von Daten zu speichern, aber es ist oft nützlicher, ein Array als eine Sammlung von Variablen eines einzelnen Typs zu betrachten. Anstatt einzelne Variablen wie number0, number1,..., number99 zu deklarieren, deklarieren Sie eine Array-Variable numbers und verwenden numbers[0], numbers[1],..., numbers[99], um einzelne Variablen zu repräsentieren. Das erste Element eines Arrays hat einen Index von 0.

Im Folgenden ist eine Liste einiger der gängigen Methoden, die Arrays haben:

  • public static int binarySearch(Object[] a, Object key): Sucht das angegebene Array nach dem angegebenen Wert mit dem binären Suchalgorithmus. Das Array muss vor dem Aufruf dieser Methode sortiert sein. Dies gibt den Index des Suchschlüssels zurück, wenn er im Array enthalten ist; andernfalls gibt es (–(Einfügepunkt + 1)) zurück.
  • public static boolean equals(long[] a, long[] a2): Gibt true zurück, wenn die beiden angegebenen Arrays von longs gleich sind. Zwei Arrays werden als gleich betrachtet, wenn beide Arrays die gleiche Anzahl von Elementen enthalten und alle entsprechenden Elementpaare in den beiden Arrays gleich sind. Dies gibt true zurück, wenn die beiden Arrays gleich sind. Die gleiche Methode kann auch für andere primitive Datentypen (byte, short, int etc.) verwendet werden.
  • public static void fill(int[] a, int val): Weist den angegebenen int-Wert jedem Element des angegebenen Arrays von ints zu. Die gleiche Methode kann auch für andere primitive Datentypen (byte, short etc.) verwendet werden.
  • public static void sort(Object[] a): Sortiert das angegebene Array von Objekten in aufsteigender Reihenfolge gemäß der natürlichen Ordnung seiner Elemente. Die gleiche Methode kann auch für primitive Datentypen (byte, short, int etc.) verwendet werden.

Beispiel:

Schreiben Sie folgenden Code in die Datei /home/labex/project/arrayTest.java:

public class arrayTest
{
    public static void main(String[] args){
        // Sie können new verwenden, um ein leeres Array zu initialisieren.
        String[] nameArray1 = new String[5];
        // Füllen Sie die leeren nameArray1-Einträge mit dem gleichen Namen "abc"
        java.util.Arrays.fill(nameArray1,"abc");
        // Die for-Schleife kann auch verwendet werden, um über ein Array zu iterieren
        for (String name:nameArray1){
            System.out.println(name);
        }
        // Sie können einige Werte verwenden, um das Array zu initialisieren.
        String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
        // Sie können die Länge des Arrays erhalten
        System.out.println("Length of nameArray2: " + nameArray2.length);
        // Sie können den Wert anhand des Indexes erhalten
        System.out.println("The last item of nameArray2 is " + nameArray2[4]);
        // Sortieren Sie ein Array-Objekt
        java.util.Arrays.sort(nameArray2);
        System.out.println("Sorted nameArray2 by alphabet:");
        for(String name:nameArray2){
            System.out.println(name);
        }
    }
}

Ausgabe:

Führen Sie die Datei arrayTest.java mit dem folgenden Befehl aus:

javac /home/labex/project/arrayTest.java
java arrayTest

Sehen Sie sich die Ausgabe an:

abc
abc
abc
abc
abc
Length of nameArray2: 5
The last item of nameArray2 is Bob
Sorted nameArray2 by alphabet:
Ann
Bob
Candy
Ella
Fancy

Zusammenfassung

Die meisten Aufgaben bestehen darin, Daten wie Zahlen und Zeichenketten zu manipulieren. Daher ist es einfach und effizient, die Java-Eingabeklassen zu verwenden, um die Aufgaben auszuführen. Für fortgeschrittene Anwendungen können Sie die offizielle Dokumentation lesen.