본문 바로가기

Programming languages/JAVA

2. 조건문, 반복문,배열

728x90
반응형
import java.util.Objects;

public class second {
    public static void main(String[] args) {
        num_conditional();
        str_conditional();
        iter();
    }

    public static void num_conditional() {
        //숫자 데이터 조건문
        int x = 170;
        Objects.equals(x, 170); //원시데이터 객체는 이렇게 판별

        if (x < 170) {
            System.out.println("평균 이하입니다.");
        } else if (x == 170) {
            System.out.println("평균 입니다.");
        } else {
            System.out.println("평균 이상입니다.");
        }
    }

    public static void str_conditional() {
        //문자 데이터 조건문
        String id = "jmj0801";
        String input_id = new String("jmj0801"); //메모리에 새롭게 생성
        String pw = "0801";
        String input_pw = "0801";

        System.out.println(input_id == id); // ==은 객체의 주소값 비교
        System.out.println(input_id.equals(id));
        //.equals()는 원시데이터 타입이 아닌 객체의 값 자체를 비교

        if (input_id.equals(id) && input_pw.equals(pw)) {
            System.out.println("로그인 되었습니다!");
        } else if (input_id.equals(id) && !input_pw.equals(pw)) {
            System.out.println("비밀번호를 확인해주세요!");
        } else if (!input_id.equals(id) && input_pw.equals(pw)) {
            System.out.println("아이디를 확인해주세요");
        } else {
            System.out.println("아이디와 비밀번호를 확인해 주세요");
        }
        
    }

    public static void iter()
    {
        //배열 선언 방법1
        int[] arr = new int[5];
        String[] users = new String[3];

        // 배열 선언 방법2
        int[] arr_2 = {1,2,3,4,5};

        //반복문
        int i = 1;
        while (i<6)
        {
            if(i%2==0)
                System.out.println("짝수!");
            else
                System.out.println("홀수!");
            i++;
        }

        for(int j=0; j<5; j++)
            arr[j] = j+2;

        for(int k = 0; k<arr.length; k++)
            System.out.println(arr[k]);
    }
}

- JAVA에는 원시타입(Primitive Type)과 참조타입(Reference Type)이 존재한다.

- 원시 타입: boolean, char, byte, int , short, long, float, double 해당 타입들은 call by value다.

- 참조 타입: String, Array, Class, File, Interface 등등.. 해당 타입들은 call by reference

- 참조타입은 메모리의 힙 영역에서 객체가 생성된다. 해당 메모리의 주소를 스택 영역에서 주소값으로 저장하고 있다.

- 객체 안의 메소드 작업이 종료되면 할당된 메모리 공간은 비워진다. 이를 행하는 게 Garbage Collector이다.

- 원시타입은 제너릭 타입에서 사용할 수 없고 Null을 담을 수 없다. 다만 원시 타입은 성능상의 이점이 있다.

- Boxing과 Unboxing으로 타입 캐스팅도 가능하지만 메모리 누수의 가능성이 존재한다.

- 참조타입에서 변수명.equlas(변수명 or 값) 은 객체끼리의 '값'을 비교한다. 따라서 문자열 비교에는. equals()를 사용.

- 참조타입에서 변수명 == 변수명은 객체사이의 '메모리상에서 주소값'을 비교한다.

- 문자열 비교에는 compareTO()라는 함수도 존재한다. 다를 경우 사전적인 순서 값도 리턴해준다.

 

- JAVA의 배열 선언 방법은 두 가지가 있다.

- 자료형[] 변수명 = {데이터 1, 데이터 2...}

- 자료형[] 변수명 = new 자료형[배열의 크기]

- new를 사용해서 선언할 경우 Heap영역에 객체가 만들어지고 Call by Reference를 통해서 스택으로 메모리 주소 값만 가져온다.

- 반복문과 조건문은 C언어의 그것과 크게 다르지 않다.

 

<출처: 생활코딩(https://opentutorials.org/course/3975/26781)>

728x90
반응형