Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨

23.02.28 / 하나의 패키지 하나의 클래스 (if문 조건식) 본문

Back - end/JAVA

23.02.28 / 하나의 패키지 하나의 클래스 (if문 조건식)

낫쏘링 2023. 3. 8. 01:09
728x90

[ 1-1.  하나의 패키지 / 하나의 클래스 / 리턴 없고 / 입력 없는 / 메서드 선언 및 호출 ]

package kr.or.ksmart.a;

//class block = body (본체, 몸통) - public class AA01 { }
public class AA01 {   
	
	//main method block = body (본체, 몸통)
	public static void main(String[] args) {
		// 메서드 호출할 수 있는 위치
		a(); //메서드 호출
		a();
		b();

	}
	//메서드 선언할 수 있는 위치
	//소괄호 중괄호 열고 엔터 치면 자동으로 닫힘
	public static void a() { //메서드 선언
		System.out.println("01 a 메서드 실행");
	}
	public static void b() {
		System.out.println("02 b 메서드 실행");
	}
	
}

 

[ 1-2.  하나의 패키지 / 하나의 클래스 / 리턴 없고 / 입력 있는 / 메서드 선언 및 호출 ]

- data type과 매개변수 마다 하나 씩 메서드를 선언하고 메서드 마다 하나 씩 호출하는 방법

package kr.or.ksmart.a;

public class total {

	public static void main(String[] args) {
		//a 메서드 호출시 "홍길동" 문자열을
		//name 매개변수에 입력한다.
		a("홍길동");  //문자열은 "" 한 글자는 '' 숫자는 안 쓴다.
		b('남');
		c(10);
		
	}
	//메서드 선언
	//public static void a(입력을 받을 위치){
	// String name = "홍길동";
	// String data type으로 name 변수 선언하고
	// "홍길동" 문자열을 name 변수에 대입(입력/담는)한다. 
	public static void a(String name) {       //data type :문자열은 String 한 글자는 char 숫자는 int
		System.out.println("이름이 무엇인가요?");
		System.out.println(name+"입니다.");
        // sysout 까지만 입력하고 Ctrl+스페이스바 치면 자동 생성됨.
	}
	
	public static void b(char gender) {
		System.out.println("성별이 무엇인가요?");
		System.out.println(gender+"입니다.");
	}
	
	public static void c(int age) {
		System.out.println("나이가 몇 살 인가요?");
		System.out.println(age+"살 입니다.");
	}
}

 

- 여러 개의 data type과 매개변수를 하나의 메서드에 선언하고 한 번에 호출하는 방법

package kr.or.ksmart.a;

public class total2 {

	public static void main(String[] args) {
		
		userInsert("홍길동",'남',10);  
	}
	
	//메서드 선언1
	public static void userInsert(String name,char gender,int age) {
		System.out.println("이름은"+name+"이고");
		System.out.println("성별은"+gender+"이고");
		System.out.println("나이는"+age+"입니다.");
	}
	
	//메서드 선언2	
	/* 메서드 오버로딩 : 원래 같은 클래스 내에 같은 메서드 이름을 중복 사용할 수 없다.
	 * 하지만 매개변수의 입력 받을 개수나 데이터 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다.
	 * 유사/동일 기능을 하는데 데이터 타입이나 입력 개수가 다를 때 마다 메서드 이름을 만들면 효율이 떨이지기 때문에 사용 */
	
	public static void userInsert(String name,char gender) {
		System.out.println("이름은"+name+"이고");
		System.out.println("성별은"+gender+"이고");
	}	
}

        [코드 해석]

  • 접근지정(제어)자(access modifier)
    public(전체 접근 가능)
    protected(같은패키지)
    default(없는 상태)
    private(같은 클래스)
  • 정적키워드 : static
  • return data type : void(리턴 없음)
    return 있을 경우 String, int, Class data type 등 리턴 할 값과 일치 시킨다.
  • method 명(이름) : userInsert
    첫 번째 매개변수 data type : String
    첫 번째 매개변수명 : name
    두 번째 매개변수 data type : char
    두 번째 매개변수명 : gender
    세 번째 매개변수 data type : int
    세 번째 매개변수명 : age
    로 메서드가 선언 되어 있다.
userinsert 메서드 호출시
첫번째 매개변수 data type이 String이기 때문에 "홍길동" 문자열이
name 매개변수에 입력되고
두번째 매개변수 data type이 char이기 때문에 '남'문자가
gender 매개변수에 입력되고
세번째 매개변수 data type이 int이기 때문에 10 정수값이
age 매개 변수에 입력되면서 userinsert메서드가 실행된다.

 

- if문과 조건식과 함께 활용하기 

package kr.or.ksmart.a;

public class AgeGenderLogin {

	public static void main(String[] args) {
		check(32,'여',"lulu1234","hhh567");
		//check(32,'여',"lulu12","hhh57");
		//check(32,'여',"lulu1234","hhh57");

	}
	
	//4개의 입력자료 : 나이, 성별, 아이디, 비번  - data type을 무엇을 쓸 것인지?
	public static void check(int age, char gender, String id, String pw) {
		System.out.println("입력받은 나이 : " + age);
		System.out.println("입력받은 성별 : " + gender);
		System.out.println("입력받은 id : " + id);
		System.out.println("입력받은 pw : " + pw);	
		
		//String이라는 data type으로 dbid라는 매개변수를 선언하고 lulu1234라는 값을 매개변수에 담는다.
		String dbid="lulu1234"; 
		String dbpw="hhh567";
		
		//if문의 조건식 결과가 true이면 해당 조건식의 중괄호 실행 
		//false이면 다음 조건식으로 넘어 간다.
		//String data type으로 선언된 변수에 담겨있는 값을 비교 할때는 equals메서드를 호출 (매개변수.equals(매개변수2))
		//equals메서드를 호출 후 리턴값이 true 또는 false를 확인 
		//아직 안 배웠지만.. equals 메서드의 return data type은? boolean data type 
		if(id.equals(dbid)) {
			System.out.println("1-1 아이디 일치 조건");
			if(pw.equals(dbpw)) {
				System.out.println("2-1 로그인 성공 조건");
				//로그인 성공 시 성별 체크하기
				if(gender == '남') {
					System.out.println("01 남성 찜질방 입장 가능");
					ageCheck(age); // 아래에 ageChechk 메서드를 선언하고 이곳에서 호출할 수 있음!
				}else if(gender == '여') {
					System.out.println("02 여성 찜질방 입장 가능");
					ageCheck(age);
				}else {
					System.out.println("03 성별 확인 불가 - 입장 불가능");
				}
				
			}else {
				System.out.println("2-2 비밀번호 불일치 조건");
			}
		}else {
			System.out.println("1-2 아이디 불일치 조건");
		}
	}
	public static void ageCheck(int age) {
		System.out.println((age <= 18) + "<-1번 조건식");
		System.out.println((age >= 19 && age <= 39) + "<-2번 조건식");
		System.out.println((age >= 40 && age <= 64) + "<-3번 조건식");
		System.out.println((age >= 65) + "<-4번 조건식");
		if(age <= 18) {
			System.out.println("01 미성년자 등급");
		}else if(age >= 19 && age <= 39) {
			System.out.println("02 청년 등급");		
		}else if(age >= 40 && age <= 64) {
			System.out.println("03 중장년 등급");
		}else if(age >= 65) {
			
		}else {
			System.out.println("05 등급 판정 불가");
		}
	}

}
String에는 조건식에 equals를 사용하고 int 등... 일반 데이터 타입은 == 를 사용한다.
String에도 ==를 쓸 수 있긴 하지만! equals를 사용하는 것이 좋다.
String은 원시 타입인 일반 데이터 타입과 다르게 참조 타입 중 클래스 타입인 데이터 타입이기 때문이다.
클래스 타입은 각각 변수마다 주소를 할당 받기 때문에 서로 다른 변수에 같은 값을 입력해도(name = 홍길동 , dbname = 홍길동)  
변수마다 주소가 다르기 때문에 서로 다르다고 판단하는 경우가 있다.(홍길동 =/ 홍길동)
또한, 서로 다른 값을 같은 변수에 저장했을 때도 (dbname = 홍길동, 김개똥)
주소가 같기 때문에 서로 같다고 판단하는 경우도 있다.(홍길동 == 김개똥)
그런 오류를 막기 위해서 String에는 equals를 써주는 것이 좋다.

 

[ 1-3.  하나의 패키지 / 하나의 클래스 / 리턴 있고 / 입력 없는 / 메서드 선언 및 호출 ]

package kr.or.ksmart.a;

public class StringReturn {

	public static void main(String[] args) {
		// 메서드 호출 후 실행 하세요!
		String result = a(); //리턴하려는 값의 데이터 타입을 사용해서 result라는 매개변수를 선언한다.
		System.out.println(result + " <- result 변수에 담긴 값");
	}
	
	public static String a() {  //void는 리턴 없을 때 쓰는 것  /void 대신 리턴하는 값의 데이터 타입을 사용한다.
		System.out.println("01 a 메서드 실행");
		return "홈런";
	}
}

 

[ 1- 4.  하나의 패키지 / 하나의 클래스 / 리턴 있고 / 입력 있는 / 메서드 선언 및 호출 ]

- 메서드 호출 위치에서 리턴 값 입력받기

package kr.or.ksmart.a;

public class Age1String {

	public static void main(String[] args) {
		
		String result = ageCheck(32); // re 변수에서 리턴된 값이 문자열임 -> "" / String 사용
		/*알 수 있는 것
		 * 데이터 타입이 String - 리턴값이 문자열이다.
		 * 매개변수 이름 result
		 * 입력 받는 값을 예상 가능 - 숫자 -> int
		 * 입력 갯수 1개
		 */
		
		System.out.println(result + "<- result 변수에 담긴 값");
		
		if(result.equals("01미성년")) {
			System.out.println("01 월 1000만원 지원");
		}else if(result.equals("02청년")) {
			System.out.println("02 월 2000만원 지원");
		}else if(result.equals("03중장년")) {
			System.out.println("03 월 3000만원 지원");
		}else if(result.equals("04노년")) {
			System.out.println("04 월 4000만원 지원");
		}else  {
			System.out.println("지원 없음");
		}
	}
	
	public static String ageCheck(int age) {
		System.out.println("나이는" + age);
		System.out.println((age <= 18) + "<-1번 조건식");
		System.out.println((age >= 19 && age <= 39) + "<-2번 조건식");
		System.out.println((age >= 40 && age <= 64) + "<-3번 조건식");
		System.out.println((age >= 65) + "<-4번 조건식");
		String re=null; //비어 있는 값 int : 0; / char : '';
		if(age <= 18) {
			System.out.println("01 미성년자 등급");
			re = "01미성년";
		}else if(age >= 19 && age <= 39) {
			System.out.println("02 청년 등급");	
			re = "02청년";
		}else if(age >= 40 && age <= 64) {
			System.out.println("03 중장년 등급");
			re = "03중장년";
		}else if(age >= 65) {
			System.out.println("04 노년 등급");
			re = "04노년";
		}else {
			System.out.println("05 등급 판정 불가");
			re = "05등급없음";
		}
		return re;  // re 변수에 담긴 값이 문자열임 -> "" / String
	}

}

/*18이하 : 미성년자
19~39세 : 청년
40~64세 : 중장년
65세 이상 : 노년
*/

 

- 메서드를 새롭게 선언하고 리턴 값 입력받기

package kr.or.ksmart.a;

public class Age1_2 {

	public static void main(String[] args) {
		String result = ageCheck(32);
		System.out.println(result + "<- result 변수에 담긴 값");
		//ageCheck2 메서드를 호출 할 수 있다.
		ageCheck2(result);
	}
	
	//ageCheck2 지원금 지급 처리하는 메서드를 선언
	//리턴이 필요한지? 일력받을 갯수는? date type은?
	//method block(body)에서는 어떤 처리를 할까?
	public static void ageCheck2(String result) { //여기서 변수 result는 새로 선언한 변수 호출에서 쓴 result랑은 다름
		if(result == "01미성년") {		// {} 안에서만 변수가 적용된다. {} 밖이라면 각각 같은 변수 사용 가능.
			System.out.println("1000만원");
		}else if(result == "02청년") {
			System.out.println("2000만원");
		}else if(result == "03중장년") {
			System.out.println("3000만원");
		}else if(result == "04노년") {
			System.out.println("4000만원");
		}else {
			System.out.println("지원금 없음");
		}
		
	}

	public static String ageCheck(int age) {
		System.out.println("나이는" + age);
		System.out.println((age <= 18) + "<-1번 조건식");
		System.out.println((age >= 19 && age <= 39) + "<-2번 조건식");
		System.out.println((age >= 40 && age <= 64) + "<-3번 조건식");
		System.out.println((age >= 65) + "<-4번 조건식");
		String re=null;
		if(age <= 18) {
			System.out.println("01 미성년자 등급");
			re = "01미성년";
		}else if(age >= 19 && age <= 39) {
			System.out.println("02 청년 등급");	
			re = "02청년";
		}else if(age >= 40 && age <= 64) {
			System.out.println("03 중장년 등급");
			re = "03중장년";
		}else if(age >= 65) {
			System.out.println("04 노년 등급");
			re = "04노년";
		}else {
			System.out.println("05 등급 판정 불가");
			re = "05등급없음";
		}
		return re;  // re 변수에 담긴 값이 문자열임 -> "" / String
	}

}

 

 

[ data type과 매개변수의 값 ]

  • String - 문자열 ("홍길동")
  • char - 한 글자 ('남')
  • int - 숫자 (1234)
  • long - 큰 수 (123456789456135459785645)
  • float - 소수점 (2.3f)
  • duble - 소수점(2.3)
  • boolean - 참 거짓 (true 또는 false)
package kr.or.ksmart.a;

public class Primitive {

	public static void main(String[] args) {
		dataType((byte)1,(short)2,123,1234,3.14f,4.3,'김',"홍길동",true);
	}
	
	
	//primitive 8개와 String 1개 입력받는 메서드 선언
	public static void dataType(byte AA, short BB , int CC, long DD, 
	float EE, double FF, char GG, String HH , boolean II) {
		System.out.println(AA + "<- dataType 메서드 내에 data type byte의 매개변수 AA에 담겨 있는 값");
		System.out.println(BB + "<- dataType 메서드 내에 data type short의 매개변수 BB에 담겨 있는 값");
		System.out.println(CC + "<- dataType 메서드 내에 data type int의 매개변수 CC에 담겨 있는 값");
		System.out.println(DD + "<- dataType 메서드 내에 data type long의 매개변수 DD에 담겨 있는 값");
		System.out.println(EE + "<- dataType 메서드 내에 data type float의 매개변수 EE에 담겨 있는 값");
		System.out.println(FF + "<- dataType 메서드 내에 data type double의 매개변수 FF에 담겨 있는 값");
		System.out.println(GG + "<- dataType 메서드 내에 data type char의 매개변수 GG에 담겨 있는 값");
		System.out.println(HH + "<- dataType 메서드 내에 data type String의 매개변수 HH에 담겨 있는 값");
		System.out.println(II + "<- dataType 메서드 내에 data type boolean의 매개변수 II에 담겨 있는 값");
	}

}

 

728x90