2-1. 변수

  • a, b를 변수(variable)라고
int a;
String b;

변수명

  • 변수의 이름은 임의로 지정할 수 있음
    • a, b 라는 이름으로 지을 수도 one, two 라는 이름으로도 지을 수 있음
int one;
String two;

변수의 이름을 지을 때 지켜야할 규칙

  • 변수명은 숫자로 시작할 수 없음
  • _(underscore)$ 문자 이외의 특수문자는 사용할 수 없음
  • 자바의 키워드는 변수명으로 사용할 수 없음 (ex: int, class, return 등)

자바 키워드

abstract  continue  for         new        switch
assert    default   goto        package    synchronized
boolean   do        if          private    this
break     double    implements  protected  throw
byte      else      import      public     throws
case      enum      instanceof  return     transient
catch     extends   int         short      try
char      final     interface   static     void
class     finally   long        strictfp   volatile
const     float     native      super      while

잘못된 변수명의 사용예

int 1st;   // 변수명은 숫자로 시작할 수 없다.
int a#;    // 변수명에 특수문자를 사용할 수 없다.
int class; // 키워드를 변수명으로 사용할  없다.

자료형 (Type)

  • 변수명 앞의 int, String 등은 변수의 자료형(Type)을 뜻함

  • int a; 라는 문장은 다음과 같이 해석됨

변수a 는 int 자료형 변수. 즉 a라는 변수에는 int 자료형 값(1, 10, 25 등의 정수값)만 담을 수 있음

  • String b; 라는 문장은 다음과 같이 해석됨

변수 b는 String 자료형 변수. 즉 b라는 변수에는 String 자료형 값(“a”, “hello” 등의 문자열값)만 담을 수 있음

변수에 값 대입하기

int a;
String b;

a = 1;
b = "hello java";
  • 변수에 값을 대입할 때는 위의 예에서와 같이 =(assignment) 기호를 사용함
  • a = 1; 이라는 문장은 다음과 같이 해석됨

int 자료형 변수 a에 1 이라는 값을 대입함

  • b = "hello java"; 라는 문장은 다음과 같이 해석됨

String 자료형 변수 b에 “hello java” 라는 값을 대입함

  • 다음과 같이 변수를 선언함과 동시에 값을 대입할 수도 있음
int a = 1;
String b = "hello java";

만약 int 자료형 변수인 a에 문자열을 대입하면?

int a = "Hello java";
  • 인텔리제이에서는 다음과 같은 오류메시지가 나옴
java: incompatible types: java.lang.String cannot be converted to int
  • 오류메시지는 String자료형을 int자료형으로 변환할 수 없다는 오류임

자주 쓰이는 자료형

  • 자료형에는 int, String 외에도 많은 자료형이 있음
int
long
double
boolean
char
String
StringBuffer
List
Map
  • StringBuffer, List 자료형에 해당되는 변수는 다음과 같이 만들 수 있음
StringBuffer sb;
List myList;
  • sb 변수는 StringBuffer 자료형 변수
    • b 변수에는 StringBuffer 자료형에 해당되는 값만 담을 수 있음
  • myList 변수는 List 자료형 변수
    • myList 변수에는 List 자료형에 해당되는 값만 담을 수 있음

사용자 정의 자료형

  • 사용자가 직접 자료형을 만들 수도 있음
  • Animal 이라는 클래스를 만들면,
class Animal {
}
  • 다음과 같이 Animal 자료형 변수를 만들 수 있음
Animal cat;
  • 위 코드는 다음과 같이 해석됨

cat 이라는 변수는 Animal 자료형 변수. cat이라는 변수에는 Animal 자료형에 해당되는 값만 담을 수 있음

2-2. 주석

  • 프로그램 소스코드에 프로그래머의 의견이나 설명을 적을 수 있는 것을 주석(Comment)이라고 함
  • 주석은 프로그램 소스에 삽입하더라도 프로그램 수행에 전혀 영향을 끼치지 않음
    • 컴파일 시 주석은 자동으로 제외됨

블록 주석

/*
프로그램의 저작권

이 프로그램의 저작권은 홍길동에게 있습니다.
Copyright 2013.
*/
public class MyProgram {
    ...
  • /* 가 블록주석의 시작이고 */가 블록주석의 끝
  • 보통 블록주석은 소스 코드내에서 한 블록(메소드, 클래스, 일정부분)에 대한 설명을 할 때 많이 사용함

라인 주석

int age; // 사람의 나이
  • // 기호를 이용하면 //기호가 시작된 곳부터 해당 라인의 끝까지가 주석문이 됨
  • 보통 코드의 특정부분(한 라인)에 대한 설명이 필요할 경우 라인 주석을 많이 사용함

어떤 주석이 좋은 코드인가?

  • 내용이 불분명하고 도저히 이해불가한 코드에 주석은 필수, 헷갈리기 쉬운 부분도 주석이 꼭 필요함

적절하지 못한 주석

  • 누구나 알고 있는 뻔한 내용에 주석을 다는 경우
    • 소스코드를 지저분하게 만듬
a++; // a의 값을 증가

주석 사용 시 주의할 점

  • 소스코드가 변경되면 주석의 내용도 업데이트 해야됨
    • 소스코드가 변경되었는데 주석문 수정이 안되어 있으면 혼란을 줄 수 있음

주석을 사용하는 또 다른 이유

  • 작성한 소스코드의 특정 부분을 잠시 사용하지 않게 만들고 싶은 경우에 사용함
    • 인텔리제이 주석달기 : command + /단축키를 입력하면 라인 주석 처리할 수 있음

2-3. main 메소드

  • main 메소드는 프로그램의 시작을 의미
  • main 메소드가 없다면 프로그램을 단독으로 수행시킬 수 없음
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • main 메소드를 보면 메소드명(main) 앞에 public, static 그리고 void 라는 키워드가 있음
  • 메인 메소드는 프로그램 실행시 파라미터를 입력으로 받을 수 있음
  • 프로그램 실행시 전달되는 파라미터는 메소드의 입력 파라미터 String[] args에 저장됨

  • 위 Test 클래스를 작성 후 다음과 같이 호출할 수 있음
c:\> java Test a b c
  • 이와 같이 실행하면 String[] args 에는 입력으로 전달한 a b c 가 순서대로 저장됨

reference

점프 투 자바