Java Silver Laissez les connaissances acquises en recevant Java SE 8 Programmer I. Le livre utilisé pour l'étude est "Thorough capture Java SE 8 Silver problem collection [1Z0-808] compatible" https://www.amazon.co.jp/dp/B01ASGJYIE/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 Puisqu'il l'a été, je l'écrirai avec la composition en fonction.
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();
}
}
Null
ne peut pas être affecté à une variable de type primitif. Parce que «null» est une donnée qui indique que la variable ne fait référence à rien.package tryAny;
import java.nio.ByteBuffer;
public class Cast {
public static void main(String[] args) {
//débordement de chiffres courts
long a = 32768;
int b = (int) a;
short c = (short) b;
byte[] byteShort = ByteBuffer.allocate(2).putShort(c).array();
System.out.println("Débordement de chiffres courts");
for (byte b1 : byteShort) {
System.out.printf("%x ", b1);
}
System.out.println();
System.out.println("Int à 32768" + b);
System.out.println("Court à 32768" + c);
//débordement int
long aa = 2147483648L;
int bb = (int) aa;
short cc = (short) bb;
byte[] byteInt = ByteBuffer.allocate(4).putInt(bb).array();
System.out.println("int,Débordement de chiffres courts");
for (byte b2 : byteInt) {
System.out.printf("%x ", b2);
}
System.out.println();
System.out.println("Int au moment de 2147483648" + bb);
System.out.println("Court à 2147483648" + cc);
}
}
Sortie standard
Débordement de chiffres courts
80 0
Int au moment de 32768 32768
Court à 32768-32768
int,Débordement de chiffres courts
80 0 0 0
Int au moment de 2147483648-2147483648
Court 0 au moment de 2147483648
<
<=
>
> =
ne peut pas être comparé sauf pour les valeurs numériques. Je pense que je peux faire quelque chose comme «vrai <faux», mais je ne peux pas.String a =" constant ";
, la chaîne littérale "const" est conservée dans le pool de constantes. Ensuite, s'il y a un code comme String b =" const ";
, il scanne le pool de constantes et puisque "const" existe, b contiendra l'adresse mémoire. ..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 C'était facile à comprendre.
Hé, je veux aussi lire ce domaine (mais cela semble difficile). https://dev.classmethod.jp/server-side/java/classfile-reading/
int[] array = new int[2]{ 2, 3}; //Erreur de compilation
int[][] array = new int[]{}; //Erreur de compilation
int[] d;
d = {2,3}; //Erreur de compilation
package tryAny;
public class For {
public static void main(String[] args) {
//Instructions d'initialisation multiples
for (int i = 0, j = 1; i < j; i++) {
System.out.println(i);
}
//Instructions de mise à jour multiples
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]);
}
}
Si vous voulez appeler un autre constructeur surchargé avec this dans un constructeur, ** doit être écrit en premier **.
L'explication des modificateurs d'accès est la suivante. Protégé, aucun, il est facile de l'oublier.
Qualificatif | La description |
---|---|
public | Accessible depuis toutes les classes |
protected | Uniquement accessible à partir des sous-classes appartenant ou héritant du même package |
Aucun | Uniquement accessible depuis les classes appartenant au même package |
private | Uniquement accessible depuis la classe |
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; //La compilation passe, mais ClassCastException se produit au moment de l'exécution
}
}
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;
}
}
}
Comment définir un objet immuable
Qualifiez tous les champs avec privé
Ne fournissez pas de méthode qui peut changer l'état interne d'un objet
Déclarez la classe comme finale pour éviter que la méthode ne soit écrasée (empêchez les modifications des sous-classes)
Si vous avez un objet variable à l'intérieur, ne fournissez pas cet objet à l'extérieur
Les espaces supprimés par la méthode de découpage String sont "\ u0000 ~ \ u0020" dans le code du caractère.
La méthode append stringBuilder peut également prendre un tableau de caractères comme argument.
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 sort
} catch (NullPointerException e) {
System.out.println("Occurrence Nullpo");
}
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;
};
//S'il n'y a qu'un seul processus d'expression lambda et que le crochet du milieu est omis, return doit être omis.
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);
}
}
Tout ce que vous avez à faire est de passer l'examen. .. ..
Recommended Posts