J'ai essayé de résumer les méthodes de Java String et StringBuilder

0. Introduction

C'est un article que moi, qui étudie pour l'acquisition de Java8 Silver, résume les méthodes de String et StringBuilder. Voici quelques-unes des méthodes String et StringBuilder que vous devez garder à l'esprit lorsque vous passez l'examen Java Silver. Comme vous vous en doutez, je suis une personne inexpérimentée, donc si vous faites une erreur, j'apprécierais que vous puissiez la signaler.

Dans le chapitre suivant, nous expliquerons dans l'ordre de la méthode String et de la méthode StringBuilder.

1. À propos de la chaîne

La chaîne elle-même ne sera expliquée qu'en gros. Le point à maintenir est

-C'est un type de référence, pas un type primitif ・ Immuable (une fois défini, il ne réécrit pas en mémoire)

Est-ce un endroit? String gère les chaînes avec char []. Par conséquent, dans la méthode suivante, l'objet référencé sera le même même si la valeur de référence est différente (le code est cité à partir de [Référence 2] ref1).

String a = "pomme";
String b = new String("pomme");
String c = new String(new char[]{'Ri', 'Hmm', 'Aller'});
System.out.println(a); //pomme
System.out.println(b); //pomme
System.out.println(c); //pomme

Aussi, j'ai dit Immuable, mais cela ne signifie pas qu'il ne peut pas être réaffecté. La réassignation change la destination de référence de la variable (pour plus de détails, voir les articles dans [Référence 3] et ref2).

2. Principales méthodes de String

Ensuite, le sujet principal, ci-dessous, sont les méthodes que "je vais tester ici!" (La liste des méthodes est citée de la référence 1). (Étant donné que l'introduction de la méthode se poursuit paresseusement, veuillez déplacer votre main et écrire le code)

char charAt(int i) Renvoie le caractère à la position spécifiée par ʻi`. La chaîne d'origine ne change pas. (Comment lire le code: le caractère écrit après // représente la chaîne de caractères de sortie)

String str = "Hello Java!";

System.out.println(str.charAt(4));  // J
System.out.println(str);  // Hello Java!

String concat(String str) La chaîne de caractères spécifiée par str est concaténée à la fin. Après tout, la chaîne de caractères d'origine ne change pas.

String str = "Hello ";

System.out.println(str.concat("Java!"));  // Hello Java!
System.out.println(str);  // Hello 

boolean equalsIgnoreCase(String str) Compare la chaîne cible avec str, insensible à la casse.

String str = "Hello Java!";

System.out.println(str.equalsIgnoreCase("HELLO JAVA!"));  // true

//Comparé par égaux
System.out.println(str.equals("HELLO JAVA!")); // false

int indexOf(int ch), int lastIndexOf(int ch) Souvenons-nous de ces deux ensembles! Les deux renvoient la position où le caractère spécifié par «ch» est apparu pour la première fois.

ʻIndexOf recherche la chaîne de gauche et lastIndexOf` la recherche à droite. Ensuite, le caractère le plus à gauche est défini comme le 0ème caractère, et il vous indique le numéro du caractère correspondant (le vide est également compté comme un caractère).

String str = "Hello Java!";
// H  e  l  l  o     J  a  v  a   !
// 0  1  2  3  4  5  6  7  8  9  10

System.out.println(str.indexOf("l"));  // 2
System.out.println(str.lastIndexOf("l"));  // 3

int length() Renvoie le nombre de caractères de la chaîne. Encore une fois, les blancs sont comptés comme un caractère.

String str = "Hello Java!";

System.out.println(str.length());  // 11

String replace(char o, char n) Renvoie une chaîne dans laquelle les caractères «o» de la chaîne sont tous remplacés par les caractères «n».

String str = "Hello Java!";

System.out.println(str.replace('a', 'o'));  // Hello Jovo!

boolean startsWith(String prefix), boolean endsWith(String suffix) Il semble bon de se souvenir de cela comme un ensemble aussi!

startsWith renvoie true si la chaîne commence par prefix. ʻEndsWithrenvoie true si la chaîne se termine parsuffix`.

String str = "Hello Java!";

System.out.println(str.startsWith("Hello"));  // true
System.out.println(str.startsWith("Hey!"));   // false

System.out.println(str.endsWith("Java!"));   // true
System.out.println(str.endsWith("python!")); // false

String substring(int start, int end) Renvoie la chaîne de start à juste avant ʻend`, et la chaîne entre les deux. Il peut être plus facile à comprendre en regardant le code car il est difficile de comprendre ce «entre les deux».

Le but est de compter entre les lettres, pas les lettres elles-mêmes (dans l'exemple ci-dessous, les chaînes d'origine sont séparées et numérotées avec un tube (|)).

String str = "Hello Java!";

// | H | e | l | l | o |   | J | a | v | a  | ! |
// 0   1   2   3   4   5   6   7   8   9   10   11

//Lorsque les premier et deuxième arguments sont spécifiés
System.out.println(str.substring(2, 7));  // llo J

//Lorsque seul le premier argument est spécifié
//Les deux suivants produisent la même chaîne de caractères
System.out.println(str.substring(2));  // llo Java!
System.out.println(str.substring(2, str.length()));  // llo Java!

String toLowerCase(), String toUpperCase() toLowerCase () convertit les majuscules et les minuscules en minuscules. Les caractères qui étaient à l'origine en minuscules ne changent pas.

toUpperCase () convertit les minuscules en majuscules. C'est tout.

String str = "Hello Java!";

System.out.println(str.toLowerCase());  // hello java!
System.out.println(str.toUpperCase());  // HELLO JAVA!

String trim() Supprime les blancs demi-largeur aux deux extrémités. C'est un peu déroutant, mais c'est évident si l'on compte le nombre de caractères!

String str = " Hello Java! ";

System.out.println(str.trim());           // Hello Java!
System.out.println(str.trim().length());  // 11

System.out.println(str);           //  Hello Java! 
System.out.println(str.length());  // 13

3. À propos de StringBuilder

Alors que Stirng est immuable, StringBuilder remplace la valeur référencée lors de la réaffectation. L'essentiel est que la méthode String ne modifie pas la chaîne d'origine, tandis que la méthode StringBuilder modifie la chaîne d'origine.

constructeur

Il existe les méthodes suivantes pour déclarer StringBuilder [^ 20].

// 1.Déclaré avec désinvolture, la capacité initiale est de 16 caractères
StringBuilder sb1 = new StringBuilder();

// 2.Capacité initiale déclarée en caractères
// 80.Si vous entrez un nombre réel tel que 0, une erreur de compilation se produira. Seul int peut être spécifié.
StringBuilder sb2 = new StringBuilder(int capacity);

// 3.Initialiser avec str
StringBuilder sb3 = new StringBuilder(String str);

// 4.Déclarer et éditer immédiatement
System.out.println(new StringBuilder("Hello Java!"));

4. Principales méthodes de StringBuilder

StringBuilder append(String str) Ajoutez str après la chaîne. Contrairement à String, la chaîne d'origine changera.

StringBuilder sb = new StringBuilder("Hello Java!");

System.out.println(sb.append(" World!!"));  // Hello Java! World!!
System.out.println(sb);  // Hello Java! World!!

StringBuilder insert(int offset, String str) Cette méthode permet également d'ajouter des caractères, mais vous pouvez spécifier la position à ajouter. Pour plus de clarté, les chaînes d'origine sont séparées et numérotées par un tube (|).

StringBuilder sb = new StringBuilder("Hello Java!");
// | H | e | l | l | o |   | J | a | v | a  | ! |
// 0   1   2   3   4   5   6   7   8   9   10   11

System.out.println(sb.insert(10, "Script"));  // Hello JavaScript!
System.out.println(sb);  // Hello JavaScript!

StringBuilder delete(int start, int end) Supprime les caractères du «début» juste avant le «fin».

StringBuilder sb = new StringBuilder("Hello Java");

System.out.println(sb.delete(2, 4));  // Heo Java!
System.out.println(sb);  // Heo Java!

// length()Peut être utilisé en combinaison avec pour supprimer tous les caractères
System.out.println(sb.delete(0, sb.length()));  // (Aucune sortie)

StringBuilder reverse() Inversez l'ordre des chaînes.

StringBuilder sb = new StringBuilder("Hello Java!");

System.out.println(sb.reverse());  // !avaJ olleH
System.out.println(sb);  // !avaJ olleH

void setCharAt(int index, char ch) ʻIndex Remplacez le ** caractère ** à la ième position par ch`.

StringBuilder sb = new StringBuilder("Hello Java!");

sb.setCharAt(6, 'j');
System.out.println(sb);  // Hello java!

StringBuilder replace(int start, int end, String str) Remplacez les caractères du «début» juste avant le «fin» par «str». Ce n'est pas grave si le nombre de caractères à remplacer et le nombre de caractères dans str ne correspondent pas. Contrairement à setCharAt, il remplace ** string ** et renvoie un StringBuilder.

StringBuilder sb = new StringBuilder("Hello Java!");

System.out.println(sb.replace(6, 10, "python"));  // Hello python!
System.out.println(sb);  // Hello python!

String substring() Il peut être utilisé exactement de la même manière que [String substring ()](# string-substring int-start-int-end).

String toString() Comme vous pouvez le voir [^ 40], il convertit StringBuilder en String. Il est utilisé lors de la comparaison avec String.

StringBuilder sb = new StringBuilder("Hello Java!");
String str = "Hello Java!";

//Comparez si les valeurs str et sb sont identiques
System.out.println( str.equals(sb.toString()) );  // true

CharSequence subSequence(int start, int end) En fait, il se comporte exactement comme [String substring ()](# string-substring int-start-int-end). S'il y a une différence, la valeur de retour est-elle un objet appelé «CharSeqence»? Alors l'objet original est immuable.

StringBuilder sb = new StringBuilder("Hello Java!");

  System.out.println(sb.subSequence(2, 8));  // oll Ja

  if (sb.subSequence(2, 8) instanceof CharSequence ) {
    System.out.println("this is CharSequence Object");  //Sera exécuté
  }
}

5. Enfin

Dans Java Silver, de nombreuses questions se posent sur les méthodes String / StringBuilder. Cela semble être une chose dite de base, mais il est difficile (était) d'enquêter et de résumer. J'espère que cet article vous aidera à comprendre String / StringBuilder et à réussir l'examen.

6. Référence

    1. Michiko Yamamoto (2015) Java Programmer Silver SE 7 (5ème édition) Edité par Shosuisha Co., Ltd.
  1. [Référence Java comprise dans la figure] ref1
    1. [[Java débutant] Passage par valeur et passage par référence (Le mot "passer par référence" a été corrigé car il est trompeur)] ref2

[^ 20]: Personnellement, j'ai été surpris de penser que la méthode 4 serait une erreur. [^ 40]: Je me suis demandé où vous pourrez le voir plus tard, mais j'ai décidé de ne pas le réparer.

Recommended Posts

J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de résumer les méthodes utilisées
[Java] La partie déroutante de String et StringBuilder
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de résumer l'API Stream
[Pour les débutants Swift] J'ai essayé de résumer le cycle de mise en page désordonné de ViewController et View
J'ai comparé les caractéristiques de Java et .NET
[Ruby] J'ai essayé de résumer les méthodes fréquentes dans paiza
[Ruby] J'ai essayé de résumer les méthodes fréquentes avec paiza ②
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
[Java] À propos de String et StringBuilder
J'ai résumé les types et les bases des exceptions Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
[Java] Gestion des chaînes de caractères (classe String et classe StringBuilder)
Je n'ai pas vraiment compris le comportement de Java Scanner et .nextLine ()
Commande pour vérifier le nombre et l'état des threads Java
J'ai essayé de vérifier ceci et celui de Spring @ Transactional
J'ai essayé JAX-RS et pris note de la procédure
J'ai essayé de faire coexister Java Optional et la clause de garde
J'ai essayé de résumer les applications et les outils de développement personnellement utiles (outils de développement)
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé de résumer les applications et les outils de développement personnellement utiles (Apps)
J'ai créé un client RESAS-API en Java
[Introduction à Java] Gestion des chaînes de caractères (classe String, classe StringBuilder)
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
Diverses méthodes de la classe Java String
J'ai essayé de résumer le support d'iOS 14
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé le framework Java "Quarkus"
Diverses méthodes de la classe String
J'ai lu la source de String
J'ai essayé d'utiliser Google HttpClient de Java
Je veux trouver la somme de contrôle MD5 d'un fichier en Java et obtenir le résultat sous forme de chaîne de caractères en notation hexadécimale.
J'ai fini de regarder les roses de Versailles, alors j'ai essayé de reproduire la chanson de fin en Java
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
[Java] Divers résumés joints aux chefs de classe et aux membres
J'ai essayé de résumer ce qui était demandé lors de l'édition site-java-
Je veux revenir à l'écran précédent avec kotlin et java!
[Rubiy] J'ai essayé de résumer le traitement de la boucle ce soir [fois, pause ...]
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 5e
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 8
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé d'exécuter le formulaire FaaS compatible Java "Fn Project"
J'ai essayé d'afficher le calendrier sur la console Eclipse en utilisant Java.