Record de lutte d'ingénieur inexpérimenté: édition de type chaîne où j'étudiais pour réussir Java Silver

introduction

C'est bien qu'Arasa, qui a été pigiste pendant huit ans après avoir abandonné ses études, ait pu changer d'emploi en ingénieur, mais je ne savais pas à droite ou à gauche, alors j'ai fait de gros efforts pour obtenir Java Silver, mais je suis coincé ici.

Tout d'abord, je connais peu Java. Au contraire, on peut dire qu'il n'y a pas beaucoup de connaissances en programmation en général. J'avais l'habitude de jouer avec le langage C comme passe-temps et comme cours quand j'étais étudiant, et récemment j'ai étudié Python3 avec du matériel pédagogique Web! C'est un amateur qui peut attirer beaucoup d'attention.

Ainsi, en ce qui concerne les qualifications Java, il semble que la demande soit tout simplement élevée. C'est tout. Il semble que l'orientation objet soit appropriée pour faire des choses, non? J'ai seulement l'impression.

Je vais écrire pour moi presque ce que j'ai étudié jusqu'à ce que je passe Java Silver. Si vous avez des erreurs, faites-le moi savoir pour mon avenir.

Merveille de type chaîne

Pour le moment, lorsque j'ai acheté un livre d'introduction à Java et que je l'ai étudié, je suis immédiatement tombé sur quelque chose d'intéressant. Parce que le type String est un type de référence, par exemple

StrTest.java


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

Est false, donc lors de la comparaison de chaînes de caractères

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));
  }
}

Utilisez ʻequals () `comme

Et cela. J'étais tellement excité que j'ai écrit ce code à titre d'essai.

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";
  }
}

La sortie devrait maintenant être fuga. Parce que c'est un type de référence. Si vous l'exécutez dans cet esprit, la sortie sera hoge. Hey? ??

C'était vraiment une question, alors quand j'ai pleuré au professeur de Google, l'explication est ressortie fermement. Merci à tous les ingénieurs seniors.

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

Apparemment, l'instance de type String est immuable, vous ne pouvez donc pas modifier la valeur en premier lieu. Je ne peux pas changer la valeur ...? ?? ??

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
  }
}

Cela a beaucoup changé! !! Pourquoi puis-je changer la valeur même si elle est immuable? Pourquoi ne peut-il pas être modifié dans le code précédent?

Je suis devenu inconscient avant et après, alors quand j'ai pleuré au professeur de Google, l'explication est ressortie fermement. Merci à tous les ingénieurs seniors.

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

Il semble que la valeur change, et en fait, elle est recréée en tant que nouvelle valeur dans une nouvelle zone. Le type String semble donc définitivement immuable. Le code que j'ai écrit plus tôt signifie simplement qu'une nouvelle chaîne de caractères a été juste bombardée par une méthode.

Recommended Posts

Record de lutte d'ingénieur inexpérimenté: édition de type chaîne où j'étudiais pour réussir Java Silver
Visant à acquérir Java Oracle Silver, mémo ponctuel (passe)
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
Comment passer Oracle Java Silver
Java SE8 Silver ~ La route à franchir ~
[Java] Convertit null du type Object en type String
Note de passage Java SE 8 Silver (Java SE 8 Programmer I)
Méthode d'apprentissage inexpérimentée pour obtenir Java Silver 11
Conversion de type du type java Big Decimal au type String