1. Sammenligning af strenge

Det her er godt og godt. Men du kan se, at strengene s1og s2faktisk er de samme, hvilket betyder, at de indeholder den samme tekst. Når du sammenligner strenge, hvordan fortæller du programmet om ikke at se på adresserne på Stringobjekter, men på deres indhold?

For at hjælpe os med dette har Javas Stringklasse equalsmetoden. At kalde det ser sådan ud:

string1.equals(string2)
Sammenligning af to strenge

Denne metode returnerer true, hvis strengene er de samme, og falsehvis de ikke er ens.

Eksempel:

Kode Bemærk
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s2.equals(s3));
// Hello
// HELLO
// HELLO

false // They are different
false // They are different
true // They are the same, even though the addresses are different

Flere eksempler:

Kode Forklaring
"Hello".equals("HELLO")
false
String s = "Hello";
"Hello".equals(s);
true
String s = "Hel";
"Hello".equals(s + "lo");
true
String s = "H";
(s + "ello").equals(s + "ello");
true

4
Opgave
Java Syntax,  niveaulektie
Låst
Minimum of two numbers
All search and sort algorithms are based on comparisons. You'll be able to handle these very soon, if you so desire. In the meantime, we suggest starting with something small: write a program to find the minimum of two numbers. Find it and then display it. And if the numbers are the same, display either of them.
4
Opgave
Java Syntax,  niveaulektie
Låst
Maximum of four numbers
Finding the maximum is an n-ary operation (an operation on n numbers) that returns the largest of several numbers. Never mind. We have no need for such definitions at the secret CodeGym center. We're here to learn how to write code. In this task, you need to use the keyboard to enter four numbers. Then determine the largest of them and display it on the screen.

2. Størrelsessammenligning uden store og små bogstaver

I det sidste eksempel så du, at sammenligningen giver . Faktisk er strengene ikke ens. Men..."Hello".equals("HELLO")false

Det er klart, at strengene ikke er ens. Når det er sagt, har deres indhold de samme bogstaver og adskiller sig kun efter tilfældet af bogstaverne. Er der nogen måde at sammenligne dem og se bort fra tilfældet med bogstaverne? Det vil sige, så det giver ?"Hello".equals("HELLO")true

Og svaret på dette spørgsmål er ja. I Java Stringhar typen en anden speciel metode: equalsIgnoreCase. At kalde det ser sådan ud:

string1.equalsIgnoreCase(string2)

Navnet på metoden oversættes groft som sammenlign, men ignorer store og små bogstaver . Bogstaverne i metodens navn omfatter to lodrette linjer: den første er et lille bogstav L, og den anden er et stort bogstav i. Lad det ikke forvirre dig.

Eksempel:

Kode Bemærk
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s2.equalsIgnoreCase(s3));
// Hello
// HELLO
// HELLO

true
true
true

8
Opgave
Java Syntax,  niveaulektie
Låst
Sorting three numbers
Planet Linear Chaos is populated by isomorphs. They are believed to have invented sorting algorithms. Everything in their heads is extremely well-ordered. They only issue planetary visas to people who know at least 7 sorting algorithms. Let's take our first step toward Linear Chaos: Read three numbers from the keyboard, put them in descending order, and then display them on the screen.

3. Eksempel på strengsammenligning

Lad os kun give et enkelt eksempel: Antag, at du skal indtaste to linjer fra tastaturet og afgøre, om de er ens. Sådan kommer koden til at se ud:

Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);

4. En interessant nuance af streng sammenligning

Der er én vigtig nuance, som du skal være opmærksom på.

Hvis Java-kompileren finder flere identiske strenge i din kode (specifikt i din kode), vil den kun oprette et enkelt objekt til dem for at spare hukommelse.

String text = "This is a very important message";
String message = "This is a very important message";

Og her er hvad hukommelsen vil indeholde som et resultat:

streng sammenligning

Og hvis du sammenligner text == messageher, så får du true. Så bliv ikke overrasket over det.

Hvis du af en eller anden grund virkelig har brug for, at referencerne er anderledes, så kan du skrive dette:

String text = "This is a very important message";
String message = new String ("This is a very important message");

Eller dette:

String text = "This is a very important message";
String message = new String (text);

I begge disse tilfælde peger variablerne textog messagepå forskellige objekter, der indeholder den samme tekst.


4
Opgave
Java Syntax,  niveaulektie
Låst
Jen or Jen?
Jen, Company X's admin, learned how to pilot a space ship and flew away to another planet. People in Company X are good and sincere. It's just that they're scatterbrained and they mix up names. So they decided that the new administrator would also be called Jen. Let's help Company X find their Jen: write a program that checks the identity of two entered names.