본문 바로가기
JAVA/[JAVA] 바구니

[JAVA] Object Class (3)

by oncerun 2020. 4. 9.
반응형

toString()

객체의 문자정보를 리턴하는 메서드입니다.

객체의 문자 정보란 객체를 문자열로 표현한 값을 말합니다.

Object클래스의 toString()는 패키 지명. 클래스명@해시 코드로 구성된 문자 정보를 리턴합니다

toString()는 자동 호출될 때가 있는데 System.out.println() 안에 매개변수로 객체를 넣었을 때

자동적으로 객체의 toString()을 호출합니다.

이걸 이용해 객체의 Class에서 toString()을 오버라이드 해서 의미 있는 값이 출력되도록 변경할 수 있습니다.

Program의 클래스에서 toString()를 재정의해서 의미있는 값을 출력해 보겠습니다.

package blog;

import java.util.Date;

public class Program {
	private String x;
	private String y;
	public Program(String x, String y) {
		this.x = x;
		this.y = y;
	}
	@Override
	public String toString() {
		return x + y;
	}
	public static void main(String[] args) {

		Program pro = new Program("엑스","와이");
		Date date = new Date();

		System.out.println(pro);
		//객체이므로 자동적으로 toString()이 호출된다.
	}
}

 

객체를 콘솔 창에 출력해 필드의 값을 확인하고 싶을 때가 있습니다. 어떠한 경우일까요?

예를 들면 DB에서 넘겨준 칼럼들의 값을 간단히 확인하고 싶을때가 있습니다.

public Member getMemberById(String id) throws SQLException {
		Member member = null;

	
		String url = "jdbc:oracle:thin:@192.168.19:1521/xepdb1";
		String sql = "SELECT * FROM MEMBER WHERE ID=?";

		Connection con = DriverManager.getConnection(url, "ID", "PASSWORD");
		PreparedStatement st = con.prepareStatement(sql);
		st.setString(1, id);

		ResultSet rs = st.executeQuery();

		if (rs.next()) {
			member = new Member();
			member.setId(rs.getString("ID"));
			member.setPwd(rs.getString("PWD"));
			member.setName(rs.getString("NAME"));
			member.setGender(rs.getString("GENDER"));
			member.setBirthday(rs.getString("BIRTHDAY"));
			member.setEmail(rs.getString("EMAIL"));
			member.setPhone(rs.getString("PHONE"));
			member.setRegdate(rs.getDate("REGDATE"));
		}

		rs.close();
		st.close();
		con.close();
		return member;
	}

Java에서 데이터베이스에 접근해 정보를 가져오는 JDBC API를 이용해 결괏값을 받습니다.

그런 뒤 Member라는 class에 전부 저장을 합니다.

그런뒤 리턴 값으로 Member객체를 반환합니다.

public class Member {
	private String id;
	private String pwd;
	private String name;
	private String gender;
	private String  birthday;
	private String phone;
	private String email;
	private Date regdate;
	
	public Member() {
		
	}
	@Override
	public String toString() {
		return "Member [id=" + id + ", pwd=" + pwd + ", name=" + name + ", gender=" + gender + ", birthday=" + birthday
				+ ", phone=" + phone + ", email=" + email + ", regdate=" + regdate + "]";
	}
	

이것은 Member Class의 필드와 오버라이드 된 to String입니다

이제 객체만 호출하면 JDBC를 이용해 얻은 데이터를 한눈에 볼 수 있습니다.

 MemberService service = new MemberService();
         Member member = service.getMemberById(id);
         System.out.println(member);

다음 멤버 인스턴스에게 주소 값을 전달해준 뒤 toSting()가 자동 호출되는 println(member)를 id를 통해 얻어온 데이터를 

콘솔 창에서 행단 위로 한눈에 볼 수 있습니다.

 

이렇게 toString()은 재정의하지 않고 사용하면 쓸데가 없는 것처럼 보이지만 사용자가 정의함에 따라 유용하게 사용할 수 있습니다.

반응형

'JAVA > [JAVA] 바구니' 카테고리의 다른 글

[JAVA] Objects Class (2)  (0) 2020.04.15
[JAVA] Objects Class (1)  (0) 2020.04.15
[Java] Object Class (2)  (0) 2020.04.08
[JAVA] Object Class  (0) 2020.04.08
[JAVA] Java.lang 패키지  (0) 2020.04.08

댓글