J'étudie Java Silver, mais j'étais confus parce que ce domaine était séparé, alors j'ai essayé de résumer ma propre compréhension.
Type | Value | Bit |
---|---|---|
boolean | Valeur booléenne | 1 |
byte | entier | 8 |
short | entier | 16 |
char | lettre | 16 |
int | entier | 32 |
float | Point flottant | 32 |
long | entier | 64 |
double | Point flottant | 64 |
Cela inclut principalement les classes, les chaînes et les StringBuilders.
Let's try Vérifions-le réellement.
Main.java
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
StringBuilder sb = new StringBuilder("apple");
sample(sb);
System.out.println(sb); // "apple orange"
StringBuilder ssb = new StringBuilder("apple");
sample5(ssb);
System.out.println(ssb); // "apple"
String s = "apple";
String t = sample2(s);
System.out.println(s); // "apple"
System.out.println(t); // "apple orange"
int i = 1;
sample3(i);
System.out.println(i); //1
}
public static StringBuilder sample(StringBuilder sb) {
return sb.append(" orange");
}
public static String sample2(String s) {
return s+" orange";
}
public static int sample3(int i) {
return i+10;
}
public static StringBuilder sample5(StringBuilder sb) {
return new StringBuilder(sb+" orange");
}
}
Immutable vs Mutable Ce que je voudrais confirmer ici, c'est la différence entre Immutable String et Mutable StringBuilder même avec le même type de référence.
Dans le code ci-dessous, "apple orange" est inclus pour sb, ce qui signifie que le StringBuilder passé dans l'argument est passé comme référence, pas la valeur "apple", mais l'adresse de sb. La valeur de sb elle-même a changé.
StringBuilder sb = new StringBuilder("apple");
sample(sb);
System.out.println(sb); // "apple orange"
public static String sample2(String s) {
return s+" orange";
}
D'un autre côté, String est également un type de référence, mais la valeur de String passée à l'argument n'a pas changé. Pourquoi. En effet, StringBuilder est mutable et String est immuable. Pour String, la valeur une fois affectée à l'initialisation ne peut pas être modifiée par la suite, donc si vous essayez de modifier la valeur d'origine de String avec +
etc., une nouvelle instance est renvoyée en interne et la destination de référence affectée en premier La valeur de ne change pas. Si vous souhaitez utiliser la valeur modifiée, vous n'avez pas d'autre choix que de créer une nouvelle variable String et de lui affecter comme indiqué ci-dessous.
String s = "apple";
String t = sample2(s);
System.out.println(s); // "apple"
System.out.println(t); // "apple orange"
public static String sample2(String s) {
return s+" orange";
}
Comme je l'ai mentionné plus tôt, int est un type primitif, donc cela va sans dire. Comme ce n'est pas l'adresse référencée qui est passée à l'argument, mais la valeur réelle, seule la valeur est renvoyée pour la valeur passée à l'argument, donc la valeur d'origine ne change pas.
Recommended Posts