๊ด€๋ฆฌ ๋ฉ”๋‰ด

gi_dor

Java final , Object , toString ๋ณธ๋ฌธ

Language/Java

Java final , Object , toString

๊ธฐ๋Œ 2023. 11. 13. 18:13
728x90

๐Ÿ“š ๊ตญ๋น„ 21 ์ผ์ฐจ


 

๐Ÿ”ธ  API - Application Programming Interface

  • ์‘์šฉํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค
  • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์–‘

๐Ÿ”น Java API

  • Java ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ง‘ํ•ฉ
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„์— ํ™œ์šฉํ• ์ˆ˜ ์žˆ๋„๋ก
    API์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ”น  Java์˜ ๋ชจ๋“ˆ

  • ๋ชจ๋“ˆ์€ ๊ด€๋ จ์žˆ๋Š” ํŒจํ‚ค์ง€๋“ค์˜ ๋ฌถ์Œ
  • ์ฃผ์š” ๋ชจ๋“ˆ 
                   java.base
                                  • Java์˜ ํ•ต์‹ฌ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ
                                  • Java์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํด๋ž˜์Šค๋“ค์„ ํฌํ•จ ํ•˜๊ณ  ์žˆ๋‹ค.

                   java.sql 
                                  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—‘์„ธ์Šค ๊ด€๋ จ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ

                   java.xml
                                  • XML๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ
                                  • XML์€ ์‹œ์Šคํ…œ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ž‘์„ฑ๋ฐฉ์‹

                   java.desktop
                                  • ๋ฐ์Šคํฌํƒ‘์šฉ GUI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ
                                  • ์Šค์œ™ (Swing) , AWT์™€ ๊ฐ™์€ GUI ๊ฐœ๋ฐœ ํˆด๊นƒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

                   java.logging
                                  • ๋กœ๊น… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” API ๋‹ค.

                   java.security
                                  • ๋ณด์•ˆ / ์•”ํ˜ธํ™” ๊ด€๋ จ๋œ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค

  • java.base ๋ชจ๋“ˆ์˜์ฃผ์š” ํŒจํ‚ค์ง€
    • java.lang 
                    ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์–ธ์–ด์˜ ํ•ต์‹ฌ ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํŒจํ‚ค์ง€
                    Object, Class , System , Thread์™€ ๊ฐ™์€ ํด๋ž˜์Šค
                    ๊ธฐ๋ณธ ํƒ€์ž…์˜ Wrapperํด๋ž˜์Šค (Integer,Long ,Boolean)
    • java.util
                   ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จ ํ•˜๊ณ ์žˆ๋Š” ํŒจํ‚ค์ง€
                   ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›, (์ž๋ฃŒ๊ตฌ์กฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ,  ๋‚ ์ž์™€ ์‹œ๊ฐ„ ๊ด€๋ จ API , ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค
    • java.io
                   ์ž…์ถœ๋ ฅ ๊ด€๋ จ  ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€ ํŒŒ์ผ ์ž…์ถœ๋ ฅ , ์ง๋ ฌํ™” ๊ด€๋ จ ํด๋ž˜์Šค
    • java.nio
                    ๋…ผ๋ธ”๋กœํ‚น ์ž…์ถœ๋ ฅ ๊ด€๋ จ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€
    • java.net
                     ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€
                     URL , URI , Socket , ServerSocket๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ด€๋ จ ํด๋ž˜์Šค ์ œ๊ณต
    • java.math
                     ๋งค์šฐ ํฐ์ˆซ์ž์— ๋Œ€ํ•œ ์ •๋ฐ€ํ•œ ๊ณ„์‚ฐ์— ํ™œ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€
                      BigDecimal , BigInteger ๋“ฑ์ด ์žˆ๋‹ค
                      

๐Ÿ”ธ final ํ‚ค์›Œ๋“œ

๐Ÿ”นfinal ํด๋ž˜์Šค

public final class String {

	}
// ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„์„œ ์ž์‹ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ• ์ˆ˜ ์—†๋‹ค

 

๐Ÿ”น final ๋ฉ”์„œ๋“œ

public class Object{
        public String toString(){.........}
        public final Class<?> getClass(){........}
        public final void notify(){........}
    }
    // ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ ์ •์˜ํ• ์ˆ˜ ์—†๋‹ค

 

๐Ÿ”น final ๋ณ€์ˆ˜ - ์ƒ์ˆ˜ ์„ ์–ธ ( ์ƒ์ˆ˜ : ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’ )

 public final class Math {
      final double PI = 3.14xxxxx;
   }
  // ์ด ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค

๐Ÿ”ธ Object ํด๋ž˜์Šค

  • ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ๋ถ€๋ชจํด๋ž˜์Šค
  • extexds๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌด์กฐ๊ฑด extends Object๋กœ ๊ฐ„์ฃผํ•œ๋‹ค
  • Object์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ์ƒ์†๋ฐ›๋Š”๋‹ค
  • ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
boolean equals(Object obj)
/*
*ํ˜„์žฌ ๊ฐ์ฒด์™€ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
*๊ฐ์ฒด๋“ค์˜ ์ฃผ์†Œ๊ฐ’(์ฐธ์กฐ๊ฐ’)์„ ๋น„๊ตํ•œ๋‹ค.
*์žฌ์ •์˜ ๊ฐ€๋Šฅ
*/

int hashCode()
// ํ˜„์žฌ ๊ฐ์ฒด์˜ ํ•ด์‹œ์ฝ”๋“œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ์žฌ์ •์˜ ๊ฐ€๋Šฅ

String toString()
// ํ˜„์žฌ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
// ํด๋ž˜์Šค์ด๋ฆ„@16์ง„์ˆ˜ํ•ด์‹œ์ฝ”๋“œ
// ์žฌ์ •์˜ ๊ฐ€๋Šฅ

Class<?> getClass()
// ํ˜„์žฌ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์„ค๊ณ„๋„(ํด๋ž˜์Šค์ •๋ณด) ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Object clone()
// ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•œ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•ด์„œ ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ“Œ Object ํด๋ž˜์Šค๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” ์—†๊ณ  ์˜ค์ง 11๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

๐Ÿ”น equals 

  • equals ( ) ๋Š” ์ฃผ๋กœ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋น„๊ตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค
  • Objectํด๋ž˜์Šค์—์„œ ์ œ๊ณต๋˜๋ฉฐ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€์•„๋‹Œ ๋‚ด์šฉ์„ ๋น„๊ตํ•œ๋‹ค

๐Ÿ”น ==

  • == ๋Š” ๊ธฐ๋ณธ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ int float double๋“ฑ์˜ ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
  • ์˜ˆ๋ฅผ๋“ค์–ด 5 == 5 ๋Š” true๋กœ ๋ฐ˜ํ™˜
  • ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด == ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋‘ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ตํ•œ๋‹ค.
public class ContactApp2 {

	public static void main(String[] args) {
		
		Contact c1 = new Contact();
		Contact c2 = new Contact();
		
		
		c1.name = "ํ…Œ์ŠคํŠธ ๋„ค์ž„";
		c1.phone = "010 - 9090 - 8080";
		c1.email = "Test1Name@gmail.com";
		c1.companyString = "์™€๋ถ€๋•์†Œ๋กœ";

		c2.name = "ํ…Œ์ŠคํŠธ ๋„ค์ž„";
		c2.phone = "010 - 9090 - 8080";
		c2.email = "Test2Name@gmail.com";
		c2.companyString = "์™€๋ถ€๋•์†Œ๋กœ";
		
		System.out.println(c1);
		System.out.println(c2);
		
		/*
		 * Object์˜ equals(Object other)
		 * ๋™์ผํ•œ ๊ฐ์ฒด์ธ์ง€ ๋น„๊ตํ•˜๋Š” ๋ฉ”์„œ๋“œ
		 * ๋‘ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค 
		 * 
		 * ๋‘๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๊ฐ™์€ ๊ฐ์ฒด๋กœ ํŒ๋‹จํ•˜๊ฒŒ ํ•˜๊ธฐ
		 * - equals(Object other)๋ฅผ ์žฌ ์ •์˜ํ•œ๋‹ค
		 */
		
		boolean result1 = c1.equals(c2); 
		boolean result2 = c1 == c2; 

		
		System.out.println(result1);	// true
		System.out.println(result2);	// false
		
		
	}
	

}
String a = new String("test");
String b = new String("test");

a == b;        // false, ๋‘ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฆ„
a.equals(b);   // true, String ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ equals๋Š” ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์„ ๋น„๊ตํ•จ

 


๐Ÿ”ธ toString()

  • toString( ) ์€ String ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋˜์–ด์žˆ๋‹ค
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํด๋ž˜์Šค์ด๋ฆ„๊ณผ 16์ง„์ˆ˜์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ์–ป๊ฒŒ๋œ๋‹ค.
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ• ๋•Œ ์กฐ์ƒ์— ์ •์˜๋œ ์ ‘๊ทผ๋ฒ”์œ„๋ณด๋‹ค ์ข๊ฒŒ ํ• ์ˆ˜ ์—†๋‹ค
  • Object ํด๋ž˜์Šค์— ์ •์˜๋œ toString( )์˜ ์ ‘๊ทผ์ œ์–ด์ž๊ฐ€ public์ด๋ฏ€๋กœ public์œผ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•œ๋‹ค
public class Contact {
	
	String name;
	String phone;
	String email;
	String companyString;
	
	// rightClick - source - generate - toString
	@Override
	public String toString() {
		return "Contact [name=" + name + ", phone=" + phone + ", 
        					email=" + email + ", companyString=" + companyString
				+ "]";
		}
    }

 

728x90