1. Jämföra strängar

Det här är väl och bra. Men du kan se att strängarna s1och s2faktiskt är samma, vilket betyder att de innehåller samma text. När du jämför strängar, hur säger du åt programmet att inte titta på adresserna till Stringobjekt, utan på deras innehåll?

StringFör att hjälpa oss med detta har Javas klass equalsmetoden. Att kalla det ser ut så här:

string1.equals(string2)
Jämför två strängar

Denna metod returnerar trueom strängarna är samma och falseom de inte är samma.

Exempel:

Koda Notera
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

Fler exempel:

Koda Förklaring
"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
Uppgift
Java Syntax,  nivålektion
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
Uppgift
Java Syntax,  nivålektion
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. Skift-okänslig strängjämförelse

I det sista exemplet såg du att jämförelsen ger . Faktum är att strängarna inte är lika. Men..."Hello".equals("HELLO")false

Det är klart att strängarna inte är lika. Som sagt, deras innehåll har samma bokstäver och skiljer sig bara från fallet med bokstäverna. Finns det något sätt att jämföra dem och bortse från fallet med bokstäverna? Det vill säga, så det ger ?"Hello".equals("HELLO")true

Och svaret på denna fråga är ja. I Java Stringhar typen en annan speciell metod: equalsIgnoreCase. Att kalla det ser ut så här:

string1.equalsIgnoreCase(string2)

Namnet på metoden översätts ungefär som jämför men ignorera skiftläge . Bokstäverna i metodens namn inkluderar två vertikala linjer: den första är en gemen Loch den andra är en versal i. Låt inte det förvirra dig.

Exempel:

Koda Notera
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
Uppgift
Java Syntax,  nivålektion
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. Exempel på strängjämförelse

Låt oss bara ge ett enkelt exempel: anta att du behöver ange två rader från tangentbordet och avgöra om de är lika. Så här kommer koden att se ut:

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 intressant nyans av strängjämförelse

Det finns en viktig nyans som du måste vara medveten om.

Om Java-kompilatorn hittar flera identiska strängar i din kod (särskilt i din kod), kommer den bara att skapa ett enda objekt för dem för att spara minne.

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

Och här är vad minnet kommer att innehålla som ett resultat:

strängjämförelse

Och om du jämför text == messagehär så får du true. Så bli inte förvånad över det.

Om du av någon anledning verkligen behöver att referenserna är annorlunda, kan du skriva detta:

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

Eller det här:

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

I båda dessa fall pekar variablerna textoch messagepå olika objekt som innehåller samma text.


4
Uppgift
Java Syntax,  nivålektion
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.