본문 바로가기

Java/Java 2

[Java 실습] 2. 자바 기본문법

반응형

Q1. 간단한 출력문을 이용한 메시지 출력

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World!!");
	}
}

Q2. 다양한 자료형과 변수 유형

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;  // num2 = 50 으로 사용해도 됨.

        // 인자로 매개변수에 값을 전달
        mc.printName("홍길동");
        
        System.out.printf("%d,%d",mc.num1, Variables.num2);
    }
}
  • main() 에서 Variables 의 인스턴스를 생성하고 참조변수인 mc에 대입. 즉 mc 변수의 타입은 Variables 가 됨.
  • mc.num1 과 같이 인스턴스 변수와 메서드를 사용가능.
  • main 에서 num1 이나 msg 변수 printName(), getMessage() 메서드를 직접 호출하는 것은 안됨.
  • main 에서 static 변수(클래스변수)인 num2는 사용 가능.

new를 이용해 생성한 인스턴스를 이용해 인스턴스 변수를 사용할 수 있고, -> 참조변수명.멤버 변수명

클래스 변수는 클래스에서 static으로 생성한 변수를 이용해 클래스 변수를 사용할 수 있다.

-> 클래스명.멤버 변수명 혹은 멤버 변수명


Q3. 다양한 메서드 유형 선언과 사용

public class Methods {
    String name;

    // 생성자 메서드
    Methods() {
        name = "홍길동";
        System.out.printf("#생성자: %s\n",name);
    }

    // 인자가 없는 메서드
    void printName() {
        System.out.printf("#printName(): %s\n",name);
    }

    // 인자가 하나인 메서드(메서드 오버로딩), 인자 값이 출력됨.
    void printName(String name) {
        System.out.printf("#printName(String name): %s\n", 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();
    	m.printName("김길동");
    	m.printNames("아무개","홍길동","김사랑");
    	System.out.printf("#calc(int num1, int num2): %d ", m.calc(20,50));
    }
}
  • 생성자 메서드는 객체가 생성될때 자동으로 호출.
  • 동일한 이름의 메서드는 인자에 따라 해당 메서드가 호출됨.
  • 가변인자를 통해 그때 그때 필요한 인자를 전달 가능.
  • 리턴이 있는 메서드는 리턴값을 받아 사용.

Methods 클래스의 m이라는 참조변수를 가지는 인스턴스 생성해 참조변수를 이용해 메서드를 호출한다.

메서드 오버로딩 : 동일한 이름의 메서드는 인자에 따라 해당 메서드가 호출된다.

가변인자 : String...name을 이용해 (String s : name)라는 조건에 따라 인자를 전달 가능하다.


Q4. 사칙연산과 대입연산

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);
        System.out.printf("num2 *= 2 : %d \n", num2);
        System.out.println("-------------------");

        System.out.printf("num1++ : %d \n", num1++);
        System.out.printf("--num1 : %d \n", --num1);
    }
}

Q5. 비트 시프트 연산과 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);

        encPwd = pwd ^ key;

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

        decPwd = encPwd ^ key;

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

Integer.toBinaryString()

 

비트 XOR 연산 : ^

encPwd=pwd ^ key;
decPwd=encPwd ^ key;

반응형

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

[Java 실습] 3. 자바 기본문법2  (0) 2021.07.15
[Java] 3. 자바 기본문법 2  (0) 2021.07.15
[Java] 2. 자바 기본문법  (0) 2021.07.15
[Java] 1. 자바와 자바 가상머신  (0) 2021.07.15
자바 공부하기  (0) 2021.07.15