본문 바로가기

Java/Java 3

[Java] 클래스변수와 인스턴스 변수 / 가변 인자 / 사칙, 대입 연산 / 비트시프트 연산과 XOR 연산 / 조건문과 반복문

반응형

클래스변수와 인스턴스 변수

public class Variables {
	//멤버 변수, 인스턴스 변수
    int num1;
	
    //멤버 변수, 클래스 변수
	static int num2;
	
	public void printName(String name) {
		
		String prtMsg=name+" Hello";
		System.out.println(prtMsg);
	}
	
	public static void main(String[] args) {
		//인스턴스 생성
		Variables mc=new Variables();
		//인스턴스 변수 사용
		mc.num1=100;
        //클래스 변수 사용
		Variables.num2=50;
		
        //인자로 매개변수에 값을 전달
		mc.printName("홍길동");
		
		System.out.printf("%d, %d",mc.num1, Variables.num2);
		
	}

}

main() 에서 Variables 의 인스턴스를 생성하고 참조변수 mc에 대입

: Variables mc=new Variables();


가변인자를 사용한 메서드

public class Methods {
    String name;
    void printNames(String...name) {
    	System.out.println("#printNames(String...name)");
        for(String s : name) {
            System.out.println(s);
        }
    }
    int calc(int num1, int num2) {
		return num1+num2;
	}
	
    public static void main(String[] args) {
		Methods m=new Methods(); //인스턴스 생성
		m.printName("아무개", "홍길동","김사랑"); //인스턴스 변수를 이용한 함수 호출
		System.out.printf("#calc(int num1, num2) : %d", m.calc(20, 50));
	}


}

 

  • 동일한 이름의 메서드는 인자에 따라 해당 메서드가 호출됨.
  • 가변인자를 통해 그때 그때 필요한 인자를 전달 가능.
  • 리턴이 있는 메서드는 리턴값을 받아 사용.

사칙 연산, 대입 연산

package dinfree;

public class Operator1 {
	public static void main(String[] args) {
        int num1 = 30;
        int num2 = 14;

        int result1 = num1 * num2;
        int result2 = num1 % num2;

        System.out.printf("result1 : %d \n", result1);
        System.out.printf("result2 : %d \n", result2);
        System.out.println("-------------------");

        num1++;
        num2 *= 2;
        System.out.printf("num1++ : %d \n", num1); //31 출력
        System.out.printf("num2 *= 2 : %d \n", num2);
        System.out.println("-------------------");

        System.out.printf("num1++ : %d \n", num1++); //31 출력 후 32로 변경
        System.out.printf("--num1 : %d \n", --num1); //32에서 1감소. 31 출력
    }
}
  • ++x : 먼저 적용되고 출력
  • x++ : 뒤에 사용하면 출력 후 변경

 비트시프트 연산과 XOR 연산

public class Operator2 {
    public static void main(String[] args) {
        int num1 = 50;
        System.out.printf("정수값 num1 : %d, %s\n", num1, Integer.toBinaryString(num1));		

        int result1 = num1 >> 1;
        System.out.printf("num1 >> 1 : %d, %s\n", result1, Integer.toBinaryString(result1));

        int result2 = num1 << 1;
        System.out.printf("num1 << 1 : %d, %s\n", result2, Integer.toBinaryString(result2));

        System.out.println("------------------");

        int pwd = 123456;
        int encPwd, decPwd;
        int key = 0x1A253B65;
                
        System.out.println("암호화 전 비밀번호 : "+pwd); //123456

        encPwd = pwd ^ key; 

        System.out.println("암호화 후 비밀번호 : "+encPwd); //438622501

        decPwd = encPwd ^ key; 

        System.out.println("복호화 후 비밀번호 : "+decPwd);  //123456
    }
}

조건문

package dinfree;
import java.util.Scanner;

public class Conditional {
	void login() {
		Scanner scan=new Scanner(System.in);
		
		System.out.print("# 아이디를 입력하세요 : ");
		String uname=scan.next();
		
		System.out.print("# 비밀번호를 입력하세요 : ");
		String pwd=scan.next();
		
		if(uname.equals("hong")&&pwd.equals("1234")) {
			System.out.println("인증 확인!! -> 로그인 성공");
		}
		else {
			System.out.println("아이디나 비밀번호가 틀렸습니다");
		}
	}
	void check() {
		int cnt=10;
		String msg=cnt>0? "새로운 쪽지가 있습니다. ": "새로운 쪽지가 없습니다";
		System.out.println(msg);
	}
	
	public static void main(String[] args) {
		Conditional con = new Conditional();
		
		while(true) {
			System.out.printf("#메뉴를 선택하세요 (1:로그인, 2:쪽지확인, x:종료) ==> ");
			Scanner scan=new Scanner(System.in);
			String sel=scan.next();
			
			switch(sel) {
			case "1" : con.login();break; //break 반드시 필요
			case "2":con.check();break;   //break 반드시 필요
			case "x":System.exit(0);
			default:System.out.println("잘못된 입력입니다.");
			}
		}
	}

}

 

3항 연산

: 간단하게 구현할 수 있는 조건문으로 비교적 간단한 if ~ else 구문 처리

조건? true인 경우 수행문장 : false인 경우 수행문장;
  • 조건이 true 인 경우
    • '?' 다음에 오는 문장이 수행
  • 조건이 false 인 경우
    • ':' 오른쪽 문장이 수행
String result = (login)? "로그인성공":"로그인실패";

 

반복문

public class Loop {
    public static void main(String[] args) {
        int power = 13;
        String members[] = {"홍길동","김길동","김사랑","아무개"};

        // 0 ~ 9 까지 즉 10회 반복
        for(int i=0;i<10;i++) {
            System.out.println(i);
        }

        // 배열의 인덱스를 이용해 데이터 출력
        for(int i=0;i<10;i++) {
            System.out.println(members[i]); //0~9까지 출력
        }

        // 배열 데이터 크기만큼 반복하면서 String 타입 데이터를 가지고 옴.
        for(String name : members) { 
            System.out.println(name); 
            //for-each 형태로 출력 
            //홍길동 김길동 김사랑 아무개
        }

        // power > 10 보다 큰 경우에는 go() 함수를 호출해 동작시키고 power를 1감소
        while(power > 10) {
            System.out.println("go"); //13이기 때문에 3번 출력
            power--; //13 -출력, 12 -출력, 11 -출력, 10 -종료
        }
        System.out.println("stop"); //1번출력
    }
}

 

반응형

'Java > Java 3' 카테고리의 다른 글

[Java] Ch.03 상수와 형 변환  (0) 2022.09.16
[Java] Ch.02 변수와 자료형  (0) 2022.09.16
[Java] Ch.01 자바의 구조  (0) 2022.09.16
[Java] Chapter 21. 제네릭 1  (0) 2021.07.21
[Java] 자바 공부하기  (0) 2021.07.21