JAVA 입문 - 변수

hi_rice·2024년 8월 15일
0

JAVA

목록 보기
1/2
package variable;

public class Var1 {
    public static void main(String[] args) {
        System.out.println(10); 
        System.out.println(10); 
        System.out.println(10);
}
  • package를 만들었다면 첫 줄에 선언을 해줘야 한다.

이 코드는 단순히 숫자 10을 출력하는 코드인데, 숫자 10 대신에 숫자 20을 출력하고 싶다면 하나하나 변경해 줘야 한다.
지금은 3개밖에 안 되지만 수십, 수백개가 된다면 곤란해진다.

그래서 값을 저장해두고 필요할 때 꺼내 읽을 수 있는 저장 공간이 필요하다.
이것을 변수(variable)라고 한다.

package variable;

public class Var2 {
    public static void main(String[] args) {
        int a; // 변수 선언
        a = 20; // 10 -> 20, 변수 초기화

        System.out.println(a);
        System.out.println(a);
        System.out.println(a);
    }
}

int a

숫자 정수( integer )를 보관할 수 있는 이름이 a 라는 데이터 저장소를 만든다. 이것을 변수라 한다.
이렇게 변수를 만드는 것을 변수 선언이라 한다.
이제변수 a 에는 숫자정수를 보관 할 수 있다.

java에서 = 은 오른쪽에 있는 값을 왼쪽에 저장한다는 뜻이다. 수학에서 이야기하는 두 값이 같다( equals )와는 다른 뜻이다!
숫자를 보관 할 수 있는 데이터 저장소인 변수 a 에 값 10 을저장한다.
이처럼 선언한 변수에 처음으로 값을 대입해서 저장하는 것을 변수 초기화라 한다.

System.out.println(a)
변수에 저장되어 있는 값을 읽어서 사용하는 방법은 간단하다. 변수 이름을 적어주기만 하면 된다.
변수 a10 이 들어가 있다면 자바는 실행 시점에 변수의 값을 읽어서 사용한다. 따라서 다음과 같이 해석된다.

System.out.println(a) //변수 a의 값을 읽음
System.out.println(10) //a의 값인 10으로 변경, 숫자 10 출력

참고로 변수의 값은 반복해서 읽을 수 있다. 변수의 값을 읽는다고 값이 없어지는 것이 아니다.

  • 변수는 꼭 초기화 해야 된다.
package variable;

public class Var6 {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}

이렇게 변수를 선언만 하고 초기화 하지 않는다면, 이렇게 컴파일 에러가 난다.

해석하면 변수가 초기화 되지 않았다는 오류이다.

  • 지금 말하는 변수는 지역 변수(Local Variable)라고 하는데, 지역 변수는 개발자가 직접 초기화를 해주어 야 한다. 클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.

  • 컴파일 에러는 자바 문법에 맞지 않았을 때 발생하는 에러이다. 컴파일 에러는 오류를 빨리, 그리고 명확하 게 찾을 수 있기 때문에 사실은 좋은 에러이다. 덕분에 빠르게 버그를 찾아서 고칠 수 있다.
    에러를 확인하고 나면 꼭 다음과 같이 해당 라인 전체에 주석을 적용하자. 그렇지 않으면 다른 예제를 실행할 때도 이 부 분에 컴파일 에러가 발생할 수 있다.

package variable;

public class Var7 {
    public static void main(String[] args) {
        int a = 100; // 정수 리터럴
        double b = 10.5; // 실수 리터럴
        boolean c = true; // 불리언(boolean) true, false 만 입력 가능, 불리언 리터럴
        char d = 'A'; // 문자 하나 리터럴
        String e = "Hello  Java"; // 문자열 리터럴, 문자열을 다르기 위한 특별한 타입

        //int z = "백원"; // 타입이 안 맞음.

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
    }
}

실행 결과

변수는 데이터를 다루는 종류에 따라 다양한 형식이 존재한다. 이러한 형식을 영어로는 타입 (type)이라 하고, 우리말로는 형식 또는 이라 한다. 예를 들어서 int 타입, int 형식, int 형 등으로 부른다. 특별히 구분하지 않고 섞어서 부르기 때문에 모두 같은 말로 이해하면 된다.

  • int : 정수를 다룬다. 예) 1 , 100 , 1000
  • double : 실수를 다룬다. 예) 0.2 , 1.5 , 100.121
  • boolean : 불리언 타입이라 한다. true , false 값만 사용할 수 있다. 주로 참과 거짓을 판단하는 곳에서 사용한다.
  • char : 문자 하나를 다룰 때 사용한다. 작은따옴표( ' )를 사용해서 감싸야 한다. 예) 'A' , '가'
  • String : 문자열을 다룬다. 큰따옴표를 사용해야 한다. 예)"hello java"

String 은 첫 글자가 대문자로 시작하는 특별한 타입이다.

각 변수는 지정한 타입에 맞는 값을 사용해야 한다.

코드에서 개발자가 직접 적은 100 , 10.5 , true , 'A' , "Hello Java" 와 같은 고정된 값을 프로그래밍 용어로 리터럴(literal)이라 한다.

수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다.
따라서 리터럴 자체는 변하지 않는다.

실무에서 자주 사용하는 타입

정수 - int , long : 자바는 정수에 기본으로 int 를 사용한다.만약 20억이 넘을 것 같으면 long 을 쓰면 된다.
파일을 다룰 때는 byte 를 사용한다.
실수 - double : 실수는 고민하지 말고 double 을 쓰면 된다.
불린형 - boolean : true , false 참 거짓을 표현한다. 이후 조건문에서 자주 사용된다.
문자열 - String : 문자를 다룰 때는 문자 하나든 문자열이든 모두 String 을 사용하는 것이 편리하다.

자주 사용하는 타입을 제외하고 실무에서 나머지를 사용하는 경우는 거의 없다. 그나마 파일 전송시에 byte 를 사용하는 것 정도이다.

java에서 변수의 이름을 짓는데는 규칙과 관례가 있다.

규칙은 필수이다. 규칙을 지키지 않으면 컴파일 오류가 발생한다.

관례는 필수는 아니지만 전세계 개발자가 해당 관례를 따르기 때문에 사실상 규칙이라고 생각해도 된다.

규칙

  • 변수 이름은 숫자로 시작할 수 없다. (예: 1num , 1st )
    그러나 숫자를 이름에 포함하는 것은 가능하다 (예: myVar1 , num1 ).
  • 이름에는 공백이 들어갈 수 없다.
  • 자바의 예약어를 변수 이름으로 사용할 수 없다. (예: int , class , public )
  • 변수 이름에는 영문자(a-z , A-Z ), 숫자(0-9 ), 달러 기호($ ) 또는 밑줄(_ )만 사용할 수 있다.

관례

소문자로 시작하는 낙타 표기법
변수 이름은 소문자로 시작하는 것이 일반적이다. 여러 단어로 이루어진 변수 이름의 경우, 첫 번째 단어는 소문자로 시작하고 그 이후의 각 단어는 대문자로 시작하는 낙타 표기법(camel case)를 사용한다. (예: orderDetail , myAccount )

클래스는 대문자로 시작, 나머지는 소문자로 시작

java에서 클래스 이름의 첫 글자는 대문자로 시작한다. 그리고 나머지는 모두 첫 글자를 소문자로 시작한다. 여기에 낙타 표기법을 적용하면 된다.

ex. 클래스는 첫 글자 대문자, 나머지는 모두 첫 글자 소문자로 시작 + 낙타 표기법

  • 클래스: Person , OrderDetail

  • 변수를 포함한 나머지: firstName , userAccount
    여기에 예외가 딱 2개 있다.

  • 상수는 모두 대문자를 사용하고 언더바로 구분한다. USER_LIMIT

  • 패키지는 모두 소문자를 사용한다. org.spring.boot

변수 이름은 의미있고, 그 용도를 명확하게 설명해야 한다.
a , b : 이런 변수는 용도를 설명하지 않는다. 단순한 예제에서만 사용하는 것이 좋다.
studentCount , maxScore , userAccount , orderCount
: 용도를 명확하게 설명한다.

  • psvm : 자동으로 메서드를 작성해주는 단축키
  • sout : system 메서드 자동 출력 단축키
  • soutv : 출력할 때 가까운 변수까지 자동으로 출력해주는 단축키
  • command d - 한 줄 복사 붙여 넣기
    (윈도우 - crtl d)
  • 리터럴(literal)이라는 단어의 어원이 문자 또는 글자를 의미한다.

0개의 댓글

관련 채용 정보