Progress-servis55.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Метод tostring java

Метод объекта toString () в Java

Каждый класс в java является прямым или косвенным потомком класса Object. Класс объекта содержит метод toString (). Мы можем использовать метод toString (), чтобы получить строковое представление объекта. Всякий раз, когда мы пытаемся напечатать ссылку на объект, вызывается внутренний метод toString (). Если мы не определили метод toString () в вашем классе, то вызывается метод класса Object toString (), в противном случае будет вызван наш реализованный / переопределенный метод toString ().

Синтаксис метода Object класса toString ():

// Java-программа для иллюстрации
// работа метода toString ()

(String name, int age, String college, String course, String address)

this .name = name;

this .college = college;

this .course = course;

this .address = address;

public static void main(String[] args)

new Best_Friend( «Gulpreet Kaur» , 21 , «BIT MESRA» , «M.TECH» , «Kiriburu» );

Объяснение: В приведенной выше программе мы создаем класс Object of Best_Friend и предоставляем всю информацию о друге. Но когда мы пытаемся напечатать объект, мы получаем некоторый вывод в форме classname @ HashCode_in_Hexadeciaml_form. Если нам нужна правильная информация об объекте Best_friend, то мы должны переопределить метод toString () класса Object в нашем классе Best_Friend.

// Java-программа для иллюстрации
// работа метода toString ()

(String name, int age, String college, String course, String address)

this .name = name;

this .college = college;

this .course = course;

this .address = address;

public String toString()

return name + » » + age + » » + college + » » + course + » » + address;

public static void main(String[] args)

new Best_Friend( «Gulpreet Kaur» , 21 , «BIT MESRA» , «M.TECH» , «Kiriburu» );

ПРИМЕЧАНИЕ. Во всех классах-оболочках все классы коллекции, класс String, класс StringBuffer, классы StringBuilder метод toString () переопределяется для содержательного представления String. Следовательно, настоятельно рекомендуется переопределить метод toString () в нашем классе.

// Java-программа для иллюстрации
// работа метода toString ()

(String name, int age, String college, String course, String address)

this .name = name;

this .college = college;

this .course = course;

this .address = address;

public static void main(String[] args)

new Best_Friend( «Gulpreet Kaur» , 21 , «BIT MESRA» , «M.TECH» , «Kiriburu» );

String s = new String( «Gulpreet Kaur» );

Integer i = new Integer( 21 );

ArrayList l = new ArrayList();

Эта статья предоставлена Бишал Кумар Дубей . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

How to use the toString method in Java?

Can anybody explain to me the concept of the toString() method, defined in the Object class? How is it used, and what is its purpose?

13 Answers 13

Returns a string representation of the object. In general, the toString method returns a string that «textually represents» this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@’, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

Use of the String.toString :

Whenever you require to explore the constructor called value in the String form, you can simply use String.toString . for an example.

. copy this program into your Eclipse, and run it. you will get the ideas about String.toString .

The toString() method returns a textual representation of an object. A basic implementation is already included in java.lang.Object and so because all objects inherit from java.lang.Object it is guaranteed that every object in Java has this method.

Overriding the method is always a good idea, especially when it comes to debugging, because debuggers often show objects by the result of the toString() method. So use a meaningful implementation but use it for technical purposes. The application logic should use getters:

It may optionally have uses within the context of an application but far more often it is used for debugging purposes. For example, when you hit a breakpoint in an IDE, it’s far easier to read a meaningful toString() of objects than it is to inspect their members.

There is no set requirement for what a toString() method should do. By convention, most often it will tell you the name of the class and the value of pertinent data members. More often than not, toString() methods are auto-generated in IDEs.

Читать еще:  File not found exception java

Relying on particular output from a toString() method or parsing it within a program is a bad idea. Whatever you do, don’t go down that route.

toString() returns a string/textual representation of the object. Commonly used for diagnostic purposes like debugging, logging etc., the toString() method is used to read meaningful details about the object.

It is automatically invoked when the object is passed to println, print, printf, String.format(), assert or the string concatenation operator.

The default implementation of toString() in class Object returns a string consisting of the class name of this object followed by @ sign and the unsigned hexadecimal representation of the hash code of this object using the following logic,

For example, the following

Now, overriding toString() in the Coordinates class as below,

The usefulness of overriding toString() becomes even more when the method is invoked on collections containing references to these objects. For example, the following

instead of this,

Few implementation pointers,

  1. You should almost always override the toString() method. One of the cases where the override wouldn’t be required is utility classes that group static utility methods, in the manner of java.util.Math. The case of override being not required is pretty intuitive; almost always you would know.
  2. The string returned should be concise and informative, ideally self-explanatory.
  3. At least, the fields used to establish equivalence between two different objects i.e. the fields used in the equals() method implementation should be spit out by the toString() method.

Provide accessors/getters for all of the instance fields that are contained in the string returned. For example, in the Coordinates class,

A comprehensive coverage of the toString() method is in Item 10 of the book, Effective Java™, Second Edition, By Josh Bloch.

Методы

Класс может содержать методы — один, два, три и больше в зависимости от сложности класса. Название метода всегда завершается двумя круглыми скобками, после которых идет блок кода, обрамлённый фигурными скобками. Например, метод sayMeow() класса Cat выводит мяуканье кошки. Внутри имени метода могут быть параметры, например, sayMeow(3) — кошка мяукает три раза. Параметров может быть несколько, тогда они разделяются запятыми.

Общая форма объявления метода выглядит следующим образом:

Метод может не иметь параметров, в этом случае используются пустые скобки. Модификатор определяет видимость метода (public, private). Если модификатор не указан, то считается, что метод имеет модификатор private в пределах своего пакета.

Методы могут вызывать другие методы.

Каждый метод начинается со строки объявления внутри круглых скобок, которую называют сигнатурой метода:

Если рассмотреть данный метод, то можно сказать следующее. Ключевое слово public означает, что метод доступен для любого класса. Ключевое слово static означает, что нам не нужно создавать экземпляр (копию) объекта Cat в памяти. Ключевое слово void означает, что метод не возвращает никаких данных. Именем метода является слово перед круглыми скобками.

Если метод возвращает какие-то данные, то в теле метода используется оператор return значение, где значение — это возвращаемое значение. Тогда вместо void нужно указать возвращаемый тип.

Вспомним наш класс Box, в котором определены высота, ширина и глубина ящика. Зная эти величины, мы вычисляли объём коробки самостоятельно. Но мы можем расширить возможности класса, чтобы он сам мог вычислить объём внутри класса и предоставить нам готовые данные. Давайте добавим в класс новый метод:

Теперь пробуем вычислить объём коробки с помощью готового метода, который есть в классе:

Мы уже не вычисляем объём вручную, за нас это сделает класс Box, у которого есть готовый метод для вычисления объёмов.

Обращение к методу осуществляется как и к переменной через точку. Наличие круглых скобок позволяет различать метод от имени переменной. То есть, если вы увидите запись:

Выше приведён немного искусственный пример, так как опытный программист никогда не назовёт переменную именем getVolume. Существует рекомендация, что для методов в начале имени нужно использовать глагол и начинаться имя должно с маленькой буквы — переменные так называть не следует.

Использование параметров

Параметры позволяют работать с различными данными. Допустим, мы хотим вычислить площадь прямоугольника со сторонами 3 и 5 см.

Метод работает, но область его применения слишком ограничена. Мы сможем вычислять площадь только одного прямоугольника с жёстко заданными размерами. Но прямоугольники бывают разными и нам нужен универсальный метод. Добиться решения задачи можно с помощью параметров. Перепишем метод следующим образом:

Теперь мы можем вычислять площадь любого прямоугольника, зная его размеры. Возьмём тот же прямоугольник со сторонами 3 и 5 см и вычислим его площадь:

В правильно написанных классах стараются избегать доступа к переменным класса напрямую. Следует использовать методы, которые позволяют избежать ошибок. В нашем классе Box использовались отдельные переменные width, height, depth. Код с использованием этих переменных слишком громоздкий, кроме того вы можете забыть про какую-нибудь переменную. Добавим в класс новый метод, который упростит наш код для вычисления объёма ящика:

Пробуем класс в действии:

Теперь мы не обращаемся к отдельным переменным класса, а вызываем метод setDim() для установки размеров ящика, после чего можно вызвать метод getVolume() для вычисления объёма. Естественно, вы можете реализовать свою логику в классе. Например, вы можете создать метод getVolume() с параметрами, которые отвечают за размеры ящика и возвращать сразу готовый результат.

Перегрузка методов

Метод — имя для действия: прыгнуть, мяукнуть, отформатировать диск. Использование имён при написании кода упрощает её понимание и модификацию. Работа разработчика схожа с работой писателя — в обоих случаях требуется донести свою мысль до читателя/приложения.

Часто одно и то же слово имеет несколько разных значений — оно перегружено. Например, мы говорим «вымыть посуду» и «вымыть кота». Было бы глупо говорить «посудовымыть посуду» или «котовымыть кота», чтобы подчеркнуть разницу. Также и с методами. Можно создавать методы с одинаковыми именами, но с разным набором аргументов.

Java, как и многие языки программирования, разрешает создавать внутри одно класса несколько методов с одним именем. Главное, чтобы у них различались параметры. Параметры могут различаться типами или количеством аргументов. Будьте внимательны, если вы зададите различные типы для возвращаемого значения, то этого будет недостаточно для создания перегруженной версии метода. Когда Java встречает вызов перегруженного метода, то выбирает ту версию, параметры которой соответствуют аргументам, использованным в вызове.

Создадим класс Cat с набором перегруженных методов:

Вы можете вызвать любой метод из класса:

Если присмотреться, то можно догадаться, какая именно версия метода вызывается в каждом конкретном случае.

Аналогично, перегрузка используется и для конструкторов.

Методы с переменным числом параметров

Можно создавать методы с переменным числом параметров. В этом случае используется многоточие.

По сути, создаётся массив типа Object[].

Создадим метод, вычисляющий и возвращающий максимальное из произвольного количества значений.

До Java 5 использовался следующий способ.

Подобный код может встречаться в старых проектах, но в Android практически не используется.

Метод toString()

Каждый класс реализует метод toString(), так как он определён в классе Object. Но использовать метод по умолчанию не слишком удобно, так как не содержит полезной информации. Разработчики предпочитают переопределять данный метод под свои нужды. Сам метод имеет форму:

Вам остаётся возвратить объект класса String, который будет содержать полезную информацию о вашем классе. Давайте возьмём для примера класс Box, созданный выше:

Теперь можете узнать о классе Box:

Метод очень часто используется при создании собственных классов и вам тоже придётся прибегать к этому способу.

Как вернуть из метода больше одного значения?

Методы в Java возвращают одно значение. А если хочется сразу вернуть сразу два и более значений? Например, у нас имеется массив чисел и мы хотим написать метод, который сразу возвращает минимальное и максимальное значение из него.

Одно из решений заключается в том, что нужно «запаковать» два значения полученные в одном методе с помощью конструктора специального класса, а затем «распаковать» их в другом методе, при обращении к конструктору.

Java toString()

CoreJavaGuru

Vivek HJ

View my Linkedin profile and my GitHub page

The toString method is widely implemented. It returns a string representation of the object. In general, the toString method returns a string that «textually represents» the object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

toString() is used to represent any Java Object into a meaningful string representation. It provides a simple, convenient mechanism for debugging classes during development. It’s also widely used for logging, and for passing informative error messages to Exception constructors and assertions.

The toString() is a method that is defined in the java.lang.Object class and thus, every object has one, however, it prints out, for the most part, meaningless information. Since its default implementation doesn’t provide much information, its always a best practice to override toString method in sub class.

By default the toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@’, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())

The above program prints car as [email protected] which is the default implementation of toString(). This output is the package name(corejavaguru) followed by class name (Car) and the hash code that represents that object. This is because internally System.out.println() calls an object’s toString() method implicitly.

However, the above output is meaningless. No end user wants to know what the package name, class name or the hash code is. They will want to know what the object is, its content or what it does etc.

For example, they will want to know the car details like name and how many gears it has. For this you only have to make one change — add a toString() method and override it. Following is an modified version of the above program with a toString() method added:

The output is much better showing information about car in a human readable format.

So what is the use of it? Lots of. If you EVER need a String representation of any object for any purpose, toString() is the easiest way to go. It can perform any number of computations – as long as it returns a String in the end. It also makes debugging a lot easier and makes your objects easier to understand.

And if you ever need the old implementation with the addition of something new, you can always add super.toString() to the returned String.

toString() with Concatenation

Whenever we concatenate any other primitive data type, or object of other classes with a String object, toString() function or valueOf() function is called automatically to change the other object or primitive type into string, for successful concatenation. Lets see with an example:

Here 6 will be automatically converted into string for concatenation using valueOf() function.

When to use toString() method

In Java, toString method guarantees that an object can be represented textually.This is especially useful for logging, debugging, or any other circumstance where you need to be able to render any and every object you encounter as a string.

If you print any object, java compiler internally invokes the toString() method on the object. So overriding the toString() method, returns the desired output, it can be the state of an object etc. depends on your implementation.

Objects often implement custom toString behavior so that the method actually tells you something about the object instance. For example, a Person class might override it to return «Last name, First name» while a Date class will show the date formatted according to some default setting

You use toString() when you want to concat Strings and not think about a special attribute, just provide a default one to the programmer. Like System.out.println(«My car:» + car);

One of the most common situations where we use toString is when using StringBuilder to construct a String.

Many programmers use logging API like Log4J or java.util.Logger to print logs and often pass Object there: logger.info(«Car not found : » + car) and if programmer doesn’t override toString and print meaningful information like car manufacturer name, gears etc than it would be difficult to diagnose the problem.

Benefits of overriding toString method

I think most Java developers acknowledge the value of good toString() implementations. Although a toString() method won’t impact logic like an equals(Object) or hashCode() method can, it can improve debugging and diagnostic efficiency. Less time spent figuring out what the object’s state is means more time fixing the problem, moving onto more interesting challenges, and satisfying more client needs.

As discussed, overridden toString helps in debugging by printing meaningful information.

If you are debugging Java program in Eclipse then using watch or inspect feature to look object, toString will definitely help you.

While it isn’t as important as obeying the equals and hashCode contracts, providing a good toString implementation makes your class much more pleasant to use. The toString method is automatically invoked when an object is passed to println, printf, the string concatenation operator, or assert, or printed by a debugger. Now if you’ve provided a good toString method for PhoneNumber, generating a useful diagnostic message is as easy as this:

Ссылка на основную публикацию
Adblock
detector