web-dev-qa-db-fra.com

Comment concaténer des caractères en java?

Comment concaténez-vous des caractères en java? La concaténation de chaînes ne nécessiterait qu'un + entre les chaînes, mais la concaténation de caractères à l'aide de + changera la valeur du caractère en ascii et donnera donc une sortie numérique. Je veux faire System.out.println(char1+char2+char3... et créer un mot de chaîne comme celui-ci.

Je pourrais faire 

System.out.print(char1);
System.out.print(char2);
System.out.print(char3);

Mais cela ne me donnera que les personnages en 1 ligne. J'en ai besoin comme d'une ficelle. Toute aide serait appréciée.

Merci

27
Wilson

Voulez-vous en faire une ficelle?

String s = new StringBuilder().append(char1).append(char2).append(char3).toString();

Notez que

String b = "b";
String s = "a" + b + "c";

Compile réellement à

String s = new StringBuilder("a").append(b).append("c").toString();

Edit : comme l'a souligné litb, vous pouvez également le faire:

"" + char1 + char2 + char3;

Cela compile à ce qui suit:

new StringBuilder().append("").append(c).append(c1).append(c2).toString();

Edit (2) : Chaîne corrigée ajouter une comparaison car, comme le fait remarquer Cletus, une série de chaînes est gérée par le compilateur.

Le but de ce qui précède est d’illustrer ce que fait le compilateur, et non de vous dire ce que vous devriez faire.

50
Dustin

Je n'allais pas répondre à cette question, mais il y a deux réponses ici (qui sont en train d'être votées!) Qui sont tout simplement fausses. Considérez ces expressions:

String a = "a" + "b" + "c";
String b = System.getProperty("blah") + "b";

Le premier est évalué à compile-time . La seconde est évaluée à run-time .

So never remplace les concaténations constantes (de tout type) par StringBuilder, StringBuffer ou similaire. Utilisez uniquement ceux où les variables sont impliquées et généralement uniquement lorsque vous ajoutez beaucoup d'opérandes ou que vous ajoutez en boucle.

Si les caractères sont constants, c'est parfait:

String s = "" + 'a' + 'b' + 'c';

Si ce n'est pas le cas, considérez ceci:

String concat(char... chars) {
  if (chars.length == 0) {
    return "";
  }
  StringBuilder s = new StringBuilder(chars.length);
  for (char c : chars) {
    s.append(c);
  }
  return s.toString();
}

comme une solution appropriée.

Cependant, certains pourraient être tentés d'optimiser:

String s = "Name: '" + name + "'"; // String name;

dans ceci:

String s = new StringBuilder().append("Name: ").append(name).append("'").toString();

Bien que cela soit bien intentionné, le résultat final est NE PAS FAIRE .

Pourquoi? Comme une autre réponse l'a bien souligné: le compilateur le fait pour vous. Donc, en le faisant vous-même, vous ne permettez pas au compilateur d’optimiser le code, cela dépend du fait que le code soit plus difficile à lire et que c’est inutilement compliqué.

Pour l'optimisation de bas niveau, le compilateur optimise mieux que vous le code.

Laissez le compilateur faire son travail. Dans ce cas, le pire scénario est que le compilateur modifie implicitement votre code pour qu'il corresponde exactement à ce que vous avez écrit. Concaténer 2 ou 3 chaînes peut être plus efficace que de construire un constructeur de chaînes, il est donc préférable de le laisser tel quel. Le compilateur sait ce qu'il y a de mieux à cet égard.

23
cletus

Si vous avez beaucoup de caractères et que vous voulez les concaténer dans une chaîne, pourquoi ne pas 

System.out.println("" + char1 + char2 + char3); 

?

7

Vous pouvez utiliser le constructeur String .

System.out.println(new String(new char[]{a,b,c}));
5
Dennis C

Vous devez indiquer au compilateur que vous souhaitez effectuer la concaténation de chaînes en commençant la séquence par une chaîne, même vide. Ainsi:

System.out.println("" + char1 + char2 + char3...);
4
sblundy

System.out.println(char1+""+char2+char3)

ou

String s = char1+""+char2+char3;
2
Elvis

Vous avez besoin d'un objet String de description pour contenir votre tableau de caractères concaténés, car le type char ne contiendra qu'un seul caractère. par exemple., 

StringBuilder sb = new StringBuilder('a').append('b').append('c');
System.out.println(sb.toString);
1
Ewen Cartwright

initiales de la classe publique {

public static void main (String [] args) {

    char initialA = 'M';
    char initialB = 'P';
    char initialC = 'T';

    System.out.println("" + initialA + initialB + initialC );


}   

}

1
truman

c'est une approche très simple pour concaténer ou ajouter le caractère

       StringBuilder desc = new StringBuilder(); 
       String Description="this is my land"; 
       desc=desc.append(Description.charAt(i));
0
Baisakha Chauhan

Je ne me considère pas vraiment comme un programmeur Java, mais je pensais juste que je l'aurais ajouté ici "par souci d'exhaustivité"; en utilisant la méthode statique (inspirée de C) String.format:

String s = String.format("%s%s", 'a', 'b'); // s is "ab"
0
Aky