[22.12.16] 39일차 [백엔드] Java

W·2022년 12월 19일
0

국비

목록 보기
56/119

예제)
Member 클래스

package test;

public class Member {
		// 클래스 Member
		// 멤버변수 private id pass name
		// 메서드 set, get
	private String id;
	private String pass;
	private String name;
	
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

MemberDAO 클래스

package test;

public class MemberDAO {
	// 클래스 MemberDAO
	// 메서드 정의 리턴할 형 없음 insertMember(Member member)
	// 메서드 안에는 출력 아이디 : 비밀번호 : 이름 :
	
	public void insertMember(Member member) {
		System.out.println("아이디 : " + member.getId());
		System.out.println("비밀번호 : " + member.getPass());
		System.out.println("이름 : " + member.getName());
	}
}
package test;

public class Test1 {

	public static void main(String[] args) {

		// Member 객체생성
		// set메서드 통해서 값을 저장
		
		Member m = new Member();
		m.setId("hello");
		m.setPass("1234");
		m.setName("홍길동");
		
		// MemberDAO 객체생성
		// insertMEmber 메서드 호출 (member정보를 들고감)
		
		MemberDAO d = new MemberDAO();
		d.insertMember(m);
	}
}
[출력]
아이디 : hello
비밀번호 : 1234
이름 : 홍길동

static 변수

자바가 실행할 때(객체 생성 없이) main 찾아서 메서드 호출

  • static : 객체생성 없이 메서드 호출
    static 변수 (클래스 멤버변수)
    static 메서드() (클래스 메서드())

public static int num;
public static 리턴할형 메서드명(){}

  • 객체생성 없이 멤버변수, 메서드 빠르게 호출 할때 사용
  • 미리 객체생성 하기 전에 기억장소 할당 되어져서 공통으로 사용

예제)
Student 클래스

package test;

public class Student {
	// 멤버변수
	// static 변수(클래스 변수) : 객체생성없이 사용
	public static int num;
	
	// 인스턴스 멤버변수 : 객체생성하고 사용
    // 기억장소를 공통으로 사용
	public String name;
	public int grade;
	
	// 메서드()
	// static 메서드(), 클래스 메서드() : 객체생성없이 사용
	public static void sprn() {
		System.out.println("static num : " + num);
		// name, grade 사용하면 에러 발생
	}
	
	// 인스턴스 메서드() : 객체생성 하고 사용
	public void prn() {
		System.out.println("static num : " + num);
		System.out.println("name : " + name);
		System.out.println("grade : " + grade);
	}
	
}
package test;

public class Test2 {
	// 자바가 실행할 때(객체 생성 없이) main 찾아서 메서드 호출
	public static void main(String[] args) {

		Student.num=1;
		Student.sprn();
		
		System.out.println("===============");
		
		Student s = new Student();
		s.num++;
		s.sprn();
		System.out.println("===============");
		s.name="홍길동";
		s.grade=3;
		s.prn();
		System.out.println("===============");
		Student s2 = new Student();
		s2.num++;
		s2.name="이길동";
		s2.grade=6;
		s2.prn();
		System.out.println("===============");
		// Math 내장클래스 static 메서드 max(10,20)
		System.out.println("최대값:"+Math.max(20, 10));
		
	}
}
[출력]
static num : 1
===============
static num : 2
===============
static num : 2
name : 홍길동
grade : 3
===============
static num : 3
name : 이길동
grade : 6
===============
최대값:20

변수 유형

1. 지역변수

메서드 내에서 정의하고 사용
메서드 밖에서는 사용 못함

  • 스택 기억장소 : 메서드가 호출되면 사용 리턴하면 기억장소 사라짐
    int a = 10;
int a = 10;
int b = 20;
System.out.println(a+b);

2. 멤버변수

클래스 안에 변수(인스턴스 변수)
객체를 생성 해야지만 사용할 수 있는 변수

  • 힙 기억장소에 생성
    가비지 컬렉터(garbage collector) 메모리 수거
    new Student()
Student s = new Student();
		System.out.println(s);
		System.out.println(s.name);
		System.out.println(s.grade);

3. static 변수

사용자가 프로그램을 실행하면 메모리에 상주

  • 메모리에 데이터 영역에 상수, 문자열, static 변수 생성

인스턴스 변수 new 객체생성 되어짐

System.out.println(Student.num);

예제)

  • Board 클래스
package test;

public class Board {
		// Board 클래스 
		// static 멤버변수 int num
		// 멤버변수 String name, String subject
		// 기본생성자 num 변수 1씩 증가
		// set get 메서드
	private static int num;
	
	private String name;
	private String subject;
	private String content;
	
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public Board() {
		num++;
	}
	
	
}
  • BoardDAO 클래스
package test;

public class BoardDAO {
	
		// BoardDAO 클래스
		// 메서드 리턴없음 insertBoard(Board board)
		// 출력 num name subject content	
	public void insertBoard(Board board) {
		System.out.println("번호 : "+ board.getNum);
		System.out.println("이름 : "+ board.getName());
		System.out.println("제목 : " + board.getSubject());
		System.out.println("내용 : " + board.getContent());
	}
}
package test;

public class Test4 {

	public static void main(String[] args) {

		
		// Board 클래스 객체 생성
		// set name, subject, content 값을 저장
		
		// BoardDAO 클래스 객체생성
		// insertBoard() 메서드 호출
		
		Board b = new Board();
		b.setName("홍길동");
		b.setSubject("안녕하세요");
		b.setContent("반갑습니다");
		
		BoardDAO d = new BoardDAO();
		d.insertBoard(b);
		
		System.out.println("================");
		Board b2 = new Board();
		b2.setName("김길동");
		b2.setSubject("안녕하세요");
		b2.setContent("반갑습니다");
		
		d.insertBoard(b2);

	}

}
[출력]
번호 : 1
이름 : 홍길동
제목 : 안녕하세요
내용 : 반갑습니다
================
번호 : 2
이름 : 김길동
제목 : 안녕하세요
내용 : 반갑습니다

0개의 댓글