CodeGym /Java блог /Случаен /Конкатенация на низове в Java
John Squirrels
Ниво
San Francisco

Конкатенация на низове в Java

Публикувано в групата
Конкатенацията на Java String е операция за свързване на два or повече низа и връщане на нов. Освен това операцията за конкатенация може да се използва за прехвърляне на типове към низове. Можете да свържете низове в Java по два различни начина.

метод concat().

Методът Concat() добавя посочения низ в края на дадения низ и след това връща и след това връща нов формиран низ. Разбира се, можем да използваме метода concat() за свързване на три or повече низа.

Сигнатурата на метода concat().


public String concat(String str)
Методът свързва низа str в края на текущия низ. Например:

String s1 = “Hello ”; 
s1.concat("World")
връща нов низ „Hello World“.

Пример за метод Concat().

Нека да свържем два низа след инициализацията им, след което да свържем още низове. И още един интересен пример: ще създадем метод, който да връща различни съобщения според аргумента.

public class ConcatTest {

    public static void main(String[] args) {
        //String concat with concat() method 
        String string1 = "I learn ";
        String string2 = "concatenation in Java";
        //here we use concat() method to join the two strings above
        String result = string1.concat(string2);
        System.out.println(result);
        //concat() method to join 4 strings
        String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
        System.out.println(myWebSite); // here we've got  "CodeGym.cc/quest"

        System.out.println(myMessage(true));
        System.out.println(myMessage(false));
    }

    private static String myMessage(boolean b) {   //concat() method with selection statement 
        return "I have".concat(b ? " " : "n't ").concat("got it");
    }

}
Резултатът е:
Научавам конкатенация в Java CodeGym.cc/quest Имам го Не го разбирам
Важно е да знаете, че методът concat() не променя низа, а създава нов в резултат на сливането на текущия и подаден като параметър. Така че методът връща нов String обект, затова можете да създадете толкова дълги вериги от String concat.

Конкатенация с помощта на претоварени оператори "+" и "+="

Можете да използвате тези два оператора по същия начин, Howто с числата. Те работят точно като concat() . Нека свържем низа “Code” и низа “Gym”.

public class StringConcat {
   public static void main(String[] args) {

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
Обикновено Java не позволява операции за претоварване за потребителски класове, но тези два оператора работят като претоварени. Може би си мислите, че вътре в оператора + се крие concat() , но всъщност тук се използва друг механизъм. Ако погледнем byte codeа на Java програмата, ще видим, че StringBuilder е създаден и неговият метод append() се използва. Компилаторът на Java вижда оператора „+“ и осъзнава, че операндите са низове, а не примитивни типове. Така че работи като concat.

public class StringTest2 {

   public static void main(String[] args) {

       String hello = "hello";
       String world = " world!";

       String helloworld = (new StringBuilder().append(hello).append(world).toString());
       System.out.println(helloworld);
       //this is the same as:
       String result = hello + world;
   }
}

Concat(0) or +?

Ако трябва да обедините низове само веднъж, използвайте метода concat() . За всички останали случаи е по-добре да използвате оператора + or Stringbuffer / StringBuilder . Освен това операторът + се използва за преобразуване на типове. Ако един от операндите е equals, например числото, а вторият е низ, тогава на изхода ще получим низ. Пример:

public class StringConcat {
   public static void main(String[] args) {
       int myInt = 5;
       String myString = " days";

       System.out.println(myInt + myString);
       boolean b = (myInt + myString) instanceof String;
       System.out.println(b);
   }
}
Използвахме instanceof, за да проверим дали (myInt + myString) е низ. Ето резултата от тази програма:
5 дни вярно
Също така имайте предвид, че операторът + и concat() работят по различен начин, ако един от низовете е нула. Ако един от операндите при използване на оператора + or += е само един — низ, тогава, Howто вече казахме, се извършва преобразуване на типа. Същото важи и за null. Просто ще получим нов низ:

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
Резултатът е:
книга нула вярно
Ако приложим метода concat() за същата операция, тогава ще получим NullPointerException .

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString.concat(null));

   }
}
Резултатът е:
Изключение в нишката "main" java.lang.NullPointerException в java.base/java.lang.String.concat(String.java:1972) в StringConcat.main(StringConcat.java:6)
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION