Java Silver Lassen Sie das Wissen, das Sie beim Empfang von Java SE 8 Programmer I erworben haben. Das für die Studie verwendete Buch ist "Gründliche Erfassung Java SE 8 Silver Problem Collection [1Z0-808] kompatibel". https://www.amazon.co.jp/dp/B01ASGJYIE/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 Da es war, werde ich es mit der Komposition entsprechend schreiben.
class name.field
oder class name.method
aufgerufen. Wenn Sie einen statischen Import durchführen, können Sie ihn so behandeln, als wäre er ein in der Klasse definiertes Feld oder eine Methode.
** Wird dies in der tatsächlichen Entwicklung verwendet? **
Die Bestellung lautet "statisch importieren" und nicht "statisch importieren".package tryAny;
public class staticImport {
public static int num = 0;
public static void print() {
System.out.println(num);
}
}
package tryAny.test;
import static tryAny.staticImport.*;
public class Main {
public static void main(String[] args) {
num = 13;
print();
}
}
_
lauten wie folgt.Null
kann keiner primitiven Typvariablen zugewiesen werden. Weil "null" Daten sind, die angeben, dass die Variable auf nichts verweist.package tryAny;
import java.nio.ByteBuffer;
public class Cast {
public static void main(String[] args) {
//kurzer Ziffernüberlauf
long a = 32768;
int b = (int) a;
short c = (short) b;
byte[] byteShort = ByteBuffer.allocate(2).putShort(c).array();
System.out.println("Überlauf von kurzen Ziffern");
for (byte b1 : byteShort) {
System.out.printf("%x ", b1);
}
System.out.println();
System.out.println("Int bei 32768" + b);
System.out.println("Kurz bei 32768" + c);
//int Überlauf
long aa = 2147483648L;
int bb = (int) aa;
short cc = (short) bb;
byte[] byteInt = ByteBuffer.allocate(4).putInt(bb).array();
System.out.println("int,Überlauf von kurzen Ziffern");
for (byte b2 : byteInt) {
System.out.printf("%x ", b2);
}
System.out.println();
System.out.println("Int zum Zeitpunkt von 2147483648" + bb);
System.out.println("Kurz bei 2147483648" + cc);
}
}
Standardausgabe
Überlauf von kurzen Ziffern
80 0
Int zum Zeitpunkt von 32768 32768
Kurz bei 32768-32768
int,Überlauf von kurzen Ziffern
80 0 0 0
Int zum Zeitpunkt von 2147483648-2147483648
Short 0 zum Zeitpunkt 2147483648
<
<=
>
> =
kann nur mit numerischen Werten verglichen werden. Ich denke, ich kann so etwas wie "wahr <falsch" machen, aber ich kann nicht.package tryAny;
public class ConstantPool {
public static void main(String[] args) {
String a1 = "constpool1";
String b1 = "constpool1";
System.out.println(a1 == b1);
String a2 = new String("constpool2");
String b2 = "constpool2";
System.out.println(a2 == b2);
}
}
https://qiita.com/liguofeng29/items/16d6dbec471bc5269f0e War leicht zu verstehen.
Hey, ich möchte diesen Bereich auch lesen (aber es scheint schwierig). https://dev.classmethod.jp/server-side/java/classfile-reading/
int[] array = new int[2]{ 2, 3}; //Kompilierungsfehler
int[][] array = new int[]{}; //Kompilierungsfehler
int[] d;
d = {2,3}; //Kompilierungsfehler
package tryAny;
public class For {
public static void main(String[] args) {
//Mehrere Initialisierungsanweisungen
for (int i = 0, j = 1; i < j; i++) {
System.out.println(i);
}
//Mehrere Update-Anweisungen
for (int i = 0; i < 4; i++, tmp(), tmp2()) {
System.out.println(i);
}
}
private static void tmp() {
System.out.println("tmp");
}
private static void tmp2() {
System.out.println("tmp2");
}
}
package tryAny;
public class Overload {
public static void main(String[] args) {
System.out.println(ret(1, 2)); // 3
System.out.println(ret(1.0, 2));// 0
System.out.println(ret(1, 2.0));// 2
}
private static String ret(int a, int b) {
return Integer.toString(a + b);
}
public static int ret(int a, double b) {
return a * (int) b;
}
protected static int ret(double a, int b) {
return (int) a / b;
}
}
package tryAny;
public class InitializeBlock {
public static void main(String[] args) {
InitTest i1 = new InitTest(); // JavaSilver
InitTest i2 = new InitTest(" is dead");// JavaSilver is dead
InitTest i3 = new InitTest(100, new String[] { "dummy", "point" });// JavaSilver100point
}
}
class InitTest {
{
System.out.print("JavaSilver");
}
InitTest() {
System.out.println();
}
InitTest(String str) {
System.out.println(str);
}
InitTest(int a, String... str) {
System.out.println(a + str[1]);
}
}
Wenn Sie einen anderen überladenen Konstruktor damit in einem Konstruktor aufrufen möchten, muss ** zuerst geschrieben werden **.
Die Erklärung der Zugriffsmodifikatoren lautet wie folgt. Geschützt, keine, es ist leicht, es zu vergessen.
Qualifikation | Erläuterung |
---|---|
public | Zugänglich von allen Klassen |
protected | Nur über Unterklassen zugänglich, die zum selben Paket gehören oder von diesem erben |
Keiner | Nur für Klassen zugänglich, die zum selben Paket gehören |
private | Nur innerhalb der Klasse zugänglich |
package tryAny;
public class Extends {
public static void main(String[] args) {
Tmp tmp = new Tmp2();
System.out.println(tmp.ret(1));
}
}
abstract class Tmp {
abstract Object ret(int i);
}
class Tmp2 extends Tmp {
@Override
Integer ret(int i) {
return i;
}
}
package tryAny;
public class Cast2 {
public static void main(String[] args) {
A a = new A();
B b = (B) a; //Kompilierungsdurchläufe, aber ClassCastException tritt zur Laufzeit auf
}
}
class A {
}
class B extends A {
}
package tryAny;
public class Exception {
public static void main(String[] args) {
int ret = test();
System.out.println(ret); // 20
}
private static int test() {
try {
int[] tmp = {};
int a = tmp[0];
} catch (RuntimeException e) {
return 10;
} finally {
return 20;
}
}
}
So definieren Sie ein unveränderliches Objekt
Qualifizieren Sie alle Felder mit privat
Geben Sie keine Methode an, mit der der interne Status eines Objekts geändert werden kann
Deklarieren Sie die Klasse als endgültig, um zu verhindern, dass die Methode überschrieben wird (verhindern Sie Änderungen an Unterklassen).
Wenn Sie ein variables Objekt im Inneren haben, geben Sie dieses Objekt nicht nach außen
Die durch die String-Trimmmethode entfernten Leerzeichen sind im Zeichencode "\ u0000 ~ \ u0020".
Die stringBuilder-Append-Methode kann auch ein char-Array als Argument verwenden.
package tryAny;
public class StringTest {
public static void main(String[] args) {
String tmp = null;
System.out.println(tmp + "a"); // nulla
try {
System.out.println(tmp.concat("a"));//Null po kommt heraus
} catch (NullPointerException e) {
System.out.println("Nullpo Vorkommen");
}
StringBuilder sb = new StringBuilder();
System.out.println(sb.capacity());// 16
char[] char1 = { 'a', 'b', 'c', 'd' };
System.out.println(sb.append(char1));// abcd
}
}
package tryAny;
public class Lambda2 {
public static void main(String[] args) {
Algo plus = (int x, int y) -> {
return x + y;
};
//Wenn es nur einen Lambda-Ausdrucksprozess gibt und die mittlere Klammer weggelassen wird, muss die Rückgabe weggelassen werden.
Algo minus = (int x, int y) -> x - y;
System.out.println(execCalc(plus, 2, 1));
System.out.println(execCalc(minus, 2, 1));
}
static int execCalc(Algo algo, int x, int y) {
return algo.calc(x, y);
}
@FunctionalInterface
interface Algo {
int calc(int x, int y);
}
}
Alles was Sie tun müssen, ist die Prüfung abzulegen. .. ..
Recommended Posts