Unerfahrener Ingenieurkampfrekord: String Type Edition, in der ich studierte, um Java Silver zu bestehen

Einführung

Es ist gut, dass Arasa, der nach seinem Studienabbruch acht Jahre lang freiberuflich tätig war, den Job eines Ingenieurs wechseln konnte, aber ich wusste weder rechts noch links, also habe ich mich bemüht, Java Silver zu bekommen, aber ich stecke hier fest.

Erstens habe ich wenig Java-Kenntnisse. Im Gegenteil, man kann sagen, dass es im Allgemeinen nicht viel Programmierkenntnisse gibt. Ich habe als Student mit C-Sprache als Hobby und Klasse gespielt und kürzlich Python3 mit Web-Unterrichtsmaterialien studiert! Es ist ein Amateur, der viel Aufmerksamkeit bekommen kann.

Wenn es um Java-Qualifikationen geht, scheint die Nachfrage einfach hoch zu sein. Das ist alles. Es scheint, dass objektorientiert geeignet ist, Dinge zu tun, oder? Ich habe nur den Eindruck.

Ich werde für mich fast das schreiben, was ich studiert habe, bis ich Java Silver bestanden habe. Wenn Sie Fehler haben, lassen Sie es mich bitte für meine Zukunft wissen.

String Typ Wunder

Als ich vorerst ein Einführungsbuch über Java kaufte und es studierte, stieß ich sofort auf etwas Interessantes. Weil der String-Typ beispielsweise ein Referenztyp ist

StrTest.java


public class StrTest {
  public static void main(String args[]) {
    String str1 = "hoge";
    String str2 = "ho";
    str2 += "ge";
    System.out.println(str1 == str2);
  }
}

Ist "falsch", also beim Vergleichen von Zeichenketten

StrTest.java


public class StrTest {
  public static void main(String args[]) {
    String str1 = "hoge";
    String str2 = "ho";
    str2 += "ge";
    System.out.println(str1.equals(str2));
  }
}

Verwenden Sie equals () like

Und das. Ich war so aufgeregt, dass ich diesen Code als Testversion geschrieben habe.

StrTest.java


public class StrTest {
  public static void main(String args[]) {
      String str = "hoge";
      StrChange(str);
      System.out.println(str);
  }
  
  public static void StrChange(String str){
      str = "fuga";
  }
}

Die Ausgabe sollte jetzt "fuga" sein. Weil es ein Referenztyp ist. Wenn Sie es in diesem Sinne ausführen, wird die Ausgabe "hoge" sein. Hallo? ??

Es war überhaupt eine Frage, und als ich zu Google Sensei weinte, kam die Erklärung fest heraus. Vielen Dank an alle leitenden Ingenieure.

https://qiita.com/chihiro/items/d3d9a028cd5dd8e84649

Anscheinend ist die Instanz vom Typ String unveränderlich, sodass Sie den Wert überhaupt nicht ändern können. Ich kann den Wert nicht ändern ...? ?? ??

StrTest.java


public class StrTest {
  public static void main(String args[]) {
		String str = "hoge";
		System.out.println(str); // hoge
		str += "hoge";
		System.out.println(str); // hogehoge
		str = "fuga";
		System.out.println(str); // fuga
  }
}

Es hat sich sehr verändert! !! Warum kann ich den Wert ändern, obwohl er unveränderlich ist? Warum kann es im vorherigen Code nicht geändert werden?

Vorher und nachher wurde ich bewusstlos. Als ich zum Google-Lehrer weinte, kam die Erklärung fest heraus. Vielen Dank an alle leitenden Ingenieure.

https://freelance-jak.com/technology/java/1204/

Es scheint, dass der Wert geändert wird, und tatsächlich wird er als neuer Wert in einem neuen Bereich neu erstellt. Der String-Typ scheint also definitiv unveränderlich zu sein. Der Code, den ich zuvor geschrieben habe, bedeutet nur, dass eine neue Zeichenfolge nur mit einer Methode bombardiert wurde.

Recommended Posts

Unerfahrener Ingenieurkampfrekord: String Type Edition, in der ich studierte, um Java Silver zu bestehen
Mit dem Ziel, Java Oracle Silver zu erwerben, Punkt Memo (Pass)
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
So übergeben Sie Oracle Java Silver
Java SE8 Silber ~ Der Weg zum Pass ~
[Java] Konvertiert Null vom Objekttyp in String-Typ
Java SE 8 Silver (Java SE 8 Programmer I) Pass Hinweis
Unerfahrene Lernmethode, um Java Silver 11 zu erhalten
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ