метод equals ()? - PullRequest
       6

метод equals ()?

0 голосов
/ 12 января 2010

нельзя ли передать объект равным?

    String hej = pets.getBark();
    if(hej.equals("woff"))

почему вы можете передать строку woff?

Ответы [ 5 ]

6 голосов
/ 12 января 2010

Если я правильно понимаю ваш вопрос, вы задаетесь вопросом, почему буквальное строковое значение может быть передано методу, который принимает аргумент типа String. Это связано с тем, что строковый литерал является сокращением для экземпляра String (либо нового, либо ранее созданного экземпляра, который был сохранен с помощью интернирования):

Класс String представляет символ строки. Все строковые литералы в Java программы, такие как "abc", являются реализовано в качестве примеров этого класс.

2 голосов
/ 12 января 2010

Вы можете передать java.lang.String, подтип java.lang.Object, потому что принцип подстановки Лискова говорит так.

2 голосов
/ 12 января 2010

Под капотом строковый литерал (текст внутри кавычек) автоматически заменяется экземпляром String. (строковый литерал является сокращением для new String)

Вот почему этот код работает: String hello = "hello";

Итак,

 String hej = pets.getBark();
 if( hej.equals( new String("woff") ) ) {}

идентичен предоставленному вами коду.

2 голосов
/ 12 января 2010

Строка в кавычках является объектом. Это экземпляр класса String.

1 голос
/ 12 января 2010

Литеральная строка по-прежнему имеет тип String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...