1. Sammenligning av strenger

Dette er vel og bra. Men du kan se at strengene s1og s2faktisk er de samme, noe som betyr at de inneholder samme tekst. Når du sammenligner strenger, hvordan forteller du programmet om ikke å se på adressene til Stringobjekter, men på innholdet deres?

For å hjelpe oss med dette har Javas Stringklasse equalsmetoden. Å kalle det ser slik ut:

string1.equals(string2)
Sammenligning av to strenger

Denne metoden returnerer truehvis strengene er like, og falsehvis de ikke er like.

Eksempel:

Kode Merk
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
Oppgave
Java Syntax,  nivålekse
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
Oppgave
Java Syntax,  nivålekse
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. Snøresammenligning uten store og små bokstaver

I det siste eksemplet så du at sammenligningen gir . Strengene er faktisk ikke like. Men..."Hello".equals("HELLO")false

Det er klart at strengene ikke er like. Når det er sagt, har innholdet de samme bokstavene og skiller seg bare fra tilfellet til bokstavene. Er det noen måte å sammenligne dem og se bort fra tilfellet med bokstavene? Det vil si, så det gir ?"Hello".equals("HELLO")true

Og svaret på dette spørsmålet er ja. I Java Stringhar typen en annen spesiell metode: equalsIgnoreCase. Å kalle det ser slik ut:

string1.equalsIgnoreCase(string2)

Navnet på metoden oversettes omtrent som sammenlign, men ignorer store og små bokstaver . Bokstavene i metodens navn inkluderer to vertikale linjer: den første er en liten bokstav L, og den andre er en stor bokstav i. Ikke la det forvirre deg.

Eksempel:

Kode Merk
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
Oppgave
Java Syntax,  nivålekse
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

La oss gi et enkelt eksempel: anta at du må skrive inn to linjer fra tastaturet og finne ut om de er like. Slik vil koden 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 interessant nyanse av strengsammenligning

Det er én viktig nyanse du må være klar over.

Hvis Java-kompilatoren finner flere identiske strenger i koden din (spesielt i koden din), vil den bare lage et enkelt objekt for dem for å spare minne.

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

Og her er hva minnet vil inneholde som et resultat:

streng sammenligning

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

Hvis du av en eller annen grunn virkelig trenger at referansene skal være annerledes, 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 tilfellene peker variablene textog messagetil forskjellige objekter som inneholder samme tekst.


4
Oppgave
Java Syntax,  nivålekse
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.