본문 바로가기
Programming/Java, Spring

[Java 기초문법] 문자열 비교하기 , 필드, 메소드, 변수의 scope와 static, 열거형 (enum)

by Renechoi 2022. 10. 21.

[Java 기초문법] by Programmers school 자바 입문

 

 

 


 

문자열 비교하기 

 

각 인스턴스가 같은 값을 저장한다고 해서 두 인스턴스가 같은 건 아니다. 

 

public class CarExam {
    public static void main(String[] args) {
        String str1 = new String("Hello world");
        String str2 = new String("Hello world");

        if(str1 == str2){
            System.out.println("str1과 str2는 같은 인스턴스를 참조합니다.");
        }
        else{
            System.out.println("str1과 str2는 다른 인스턴스를 참조합니다.");
        }
    }
}

 

 

 

 


 

필드 

 

자바에서는 속성을 필드로 선언할 수 있다. 

 

필드 선언 

 

public class Car {

    public String name;
    public int number;

 

인스턴스 생성 

 

Car c1 = new Car();
Car c2 = new Car();

 

필드를 사용하기 

 

public class Car {

    public String name;
    public int number;

    public static void main(String[] args) {

        Car c1 = new Car();
        Car c2 = new Car();
        //Car라는 인스턴스가 메모리에 2개 만들어 진다. 객체별로 name과 number라는 속성을 가진다.

        //c1.name은  c1이 참조하는 객체의 name 을 의미.

        c1.name = "소방차";  //c1이 참조하는 객체의 name을 소방차로 설정 
        c1.number = 1234;   // c1.number = 1234란 c1이 참조하는 객체의 number를 1234 로 설정 

        c2.name = "구급차";  //c2가 가리키는 객체의name을 구급차로 설정
        c2.number = 1004;  //c2가 가리키는 객체의 number를 1004로 설정


        System.out.println(c1.name);  //콘솔에 c1이 참조하는 객체의 name 을 출력합니다. 
        System.out.println(c1.number); //콘솔에 c1이 참조하는 객체의 number 를 출력합니다. 

        String name = c2.name;   //c2가 참조하는 객체의 name 을 String 타입 변수 name 도 참조하게 합니다.
        
    }
}

 

 


 

메소드

 

Field가 물체의 상태라면, 행동에 대한 선언을 하는 것이 메소드

 

Car에 이름과 색깔을 부여하지만, 메서드에서는 전진하고 후진하는 행동을 선언한다. 

 

 

void : 리턴하는 것이 없을 경우 

 

   public class MyClass{
        public void method1(){
            System.out.println("method1이 실행됩니다.");
        }
    }

 


 

변수의 scope와 static 

 

scope : 변수가 사용가능한 범위 

 

public class Car {

    int globalScope = 10;   // 인스턴스 변수

    public void scopeTest(int value){
        int localScope = 10;
        System.out.println(globalScope);
        System.out.println(localScope);
        System.out.println(value);
    }
}

global = 클래스 전체 

local = method 내 

 

한편 static method 내에서는 global 변수도 에러가 발생 

 

 

static의 특징은 instance하지 않아도 사용할 수 있다는 점이다. 

객체를 사용하지 않아도 사용할 수 있는 한편 

static하지 않은 객체는 static 메서드 내에서 사용될 수 없다. 

 

객체를 선언하고 가져오거나 

 

System.out.println(new Car().globalScope);

 

아니면 field를 static으로 만들거나 

 

함으로써 사용 가능하다 

 

public class Car {

    static int globalScope = 10;

    public void scopeTest(int value){
        int localScope = 10;
        System.out.println(globalScope);
        System.out.println(localScope);
        System.out.println(value);
    }

    public static void main(String[] args) {

        System.out.println(globalScope);
    }
}

 

 

 


 

열거형 (enum)

 

enum 정의 방법 

public class Car {

    enum Gender{
        MALE, FEMALE;
    }

}

 

 

사용 방법 

 

public class Car {

    enum Gender{
        MALE, FEMALE;
    }

    public static void main(String[] args) {
        Gender gender2;

        gender2 = Gender.MALE;
        gender2 = Gender.FEMALE;

    }
}

 

 


 

 

생성자 

 

모든 클래스는 인스턴스화 될때 생성자를 사용한다. 

메서드와 다르게 리턴 타입을 갖고 있지 않다. 

생성자를 하나라도 만들었다면 자동으로 만들어지지 않는다. 

 

 

객체가 될 때 필드가 초기화하는 역할을 수행 

 

 

 

public class Car{
    String name;
    int number;

    public Car(String n){
        name = n;
    }
}

 

자동차가 객체가 될 때 반드시 이름을 가지도록 한다. 

 

반응형