728x90
반응형

1. 주석 (Comment)

 

 우리가 코딩을 하다보면 수 많은 인스턴스와 메서드를 작성합니다. 간단한 프로그램의 경우에는 어디서 어떤 변수가 사용되었는지 쉽게 확인 할 수 있지만 프로그램의 길이가 길어질 경우 수 많은 변수들을 하나하나 정확하게 기억하기는 힘듭니다. 그래서 우리는 프로그램의 실행과는 상관없이 코드에 설명을 붙힐 수 있는데 이것을 주석이라고 합니다. 주석을 많이 작성한다고 해서 전체 프로그램의 크기가 커지는 것이 아니므로 가급석 코드에 주석을 많이 달아 두는 것을 권장 합니다. 주석을 달면 전체의 코드를 이해하기 쉽고 수정 또한 용이합니다. 특히 다른 사람이 작성한 코드를 주석 없이 해석하는 작업은 쉬운일이 아닙니다. 본인이 작성한 코드를 다른 사람이 볼 필요가 있다면 꼭 넣어 주는 것이 좋습니다.

 

 

 

 

 그림과 같이 // 주석은 입력 이 후의 라인을 모두 주석처리 됩니다. 앞에 다른 문장이 있더라도 // 이후의 문장들은 모두 주석으로 처리됩니다.

윗 그림에서 실행 결과를 보면 주석의 내용은 나타나지 않고 main 메서드 안의 실행문만 실행된 것을 볼 수 있듯이 각 행의 설명을 할때 주로 사용합니다.

 

 

 

 

 

 

 /* ~ */ 주석은 다음과 같이 주석의 범위를 지정할 때 사용합니다. 보통은 클래스 앞에 작성한 사람의 이름, 시간, 프로그램의 버전과 변경 이력 등 코드에 대한 정보를 표현할 때 주로 사용합니다. 주석문은 코드 내 어디서든 작성이 가능하지만 문자열 내부에는 올 수 없습니다. 문자열 안에서의 주석문은 주석이 아니라 문자열 데이터로 인식되기 때문입니다.

 

 이 두가지 주석은 코딩을 하면서 주로 사용하는 주석이고 외에도 자바 API 도큐먼트 문서에 포함되는 도큐먼트 주석(/** ~ */)도 있습니다. 이는 cmd창에서 javadoc.exe라는 명령어로 API 도큐먼트를 생성하는데 사용됩니다.

 

 우리가 다운로드 받은 JDK에는 rt.jar라는 자바로 코드를 작성하는데 제공되는 약 3000여개의 기본 API가 있습니다. 모든 API 클래스에는 자바문서가 제공되는데 사용법과 상속관계 등을 설명하고 있습니다. 자바를 공부하는데 많은 도움이 되며 개발을 하면서 필요한 클래스를 찾아 쓸 수 있게 웹으로 API문서를 제공하고 있습니다. 코딩을 하다가 필요할 경우 참조하시기 위해 링크를 걸겠습니다.https://docs.oracle.com/javase/7/docs/api/

 

 

 

 

 

2. 변수와 타입

 

 프로그램을 작성하면서 작업을 처리하는 중 필요에 따라서 데이터를 메모리에 저장합니다. 이 때 필요한만큼 메모리의 공간을 할당 받아야 하는데 이 작업을 위해서 변수를 선언해야 합니다. 즉, 변수란 하나의 값을 저장할 수 있는 메모리 공간입니다.

선언된 변수는 타입이 지정되어야 하는데 이를 데이터 타입이라고 합니다. 예를 들어 정수의 공간을 할당받겠다고 정수형 변수를 선언을 하게되면 그 공간에는 정수형의 데이터가 저장되어야만 합니다.

 

 앞편에서 클래스의 이름을 정할때 규칙이 있듯이 변수 역시 자바언어에서 정한 명명 규칙을 따라서 이름을 지어야 합니다. 작성 규칙은 다음과 같습니다.

 

 

 

 

 

 

 대체적으로 클래스의 명명규칙과 비슷한 규칙을 갖고 있습니다. 예약어의 경우 변수이름을 예약어로 지정하면 컴파일 에러가 발생하기 떄문에 주의해야 합니다. 지금은 모두 외울 필요는 없고 자바를 계속 학습하게 될 경우 알게 되므로 천천히 알아갈 수 있습니다.

 

 

 

 

 

 

 

 

 

 변수는 다음과 같이 선언 할 수 있습니다.

변수의 타입은 저장되는 값의 종류와 범위를 결정짓는 요소이기 떄문에 어떤 값을 변수에 변수에 저장할지 충분히 생각한 다음 결정해야 합니다.

왼쪽의 그림과 같이 int(정수형) 변수로 선언된 i의 경우 정수의 값만 저장할 수 있고 float이나 double(실수형)으로 선언된 변수의 경우에는 실수형의 데이터만 저장할 수 있습니다. 같은타입의 변수를 여러개 선언할고 싶을때는 ,의 중간에 넣어 어려개를 선언 할 수 있습니다.

변수는 어 값을 저장하고 있는지 쉽게 알 수 있도록 maxSpeed와 같이 의미있는 변수 이름을 지어주는 것이 좋습니다.

 

 

 

 

 

 변수의 종류는 기본형 변수 (primitive data)타입과 참조형 변수 (reference date)타입으로 나뉘게 되는데 기본형변수는 그림과 같이 숫자형, 문자형, 논리형 변수가 있는데 표로 정리하면 다음과 같습니다.

 

 

 

 

 

 

 

 

 정수타입에는 byte, short, int(기본형), long이 있고 실수타입에는 float, double(기본형)이 있습니다. char형 변수의 경우 정수타입으로 분류되지만 문자를 저장하는 변수로서 그값이 유니코드로 변환되어 정수형으로 저장되기 떄문에 정수형으로 분류되었습니다. 저장되는 값은 문자의 유니코드 값이며 우리가 숫자를 입력하고 출력할 경우 그 숫자에 해당하는 문자로 변환되어 출력됩니다.

논리타입인 boolean은 1바이트를 할당하게 되며 true/false의 값이 있으며 기본값은 false입니다. 이렇게 선언된 변수는 선언과 동시에 값을 저장할 수 있고 선언후에 다음라인에서 (변수이름 = 값) 이런식으로 값을 저장할 수 있습니다.

 

 

 

 

 

 프로그래밍을 하다보면 예를들어 byte타입을 int 타입으로 변하거나 반대로 int타입을 byte타입으로 변환해야할 경우가 있습니다. 이런 경우를 타입 변환이라 하며 타입 변환에는 자동 타입 변환과 강제 타입 변환이 있습니다.

 

 자동 타입 변환 (Promotion)은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말합니다. 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생합니다. 윗 문단의 경우 작은(byte)형 변수를 더 큰(int)형 변수에 저장하려고 하기 떄문에 자동타입 변환이 발생하게 됩니다.

크기별로 타입을 정리하면 byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) 이런 순서입니다. 여기서 floa의 경우 4byte인데 int와 long보다 더 큰 타입으로 표시되었습니다. 그 이유는 표현할 수 있는 값의 범위가 float이 더 크기 때문입니다. 이것만 주의하면 데이터의 타입의 크기를 비교하는 것은 어렵지 않을 것입니다.

 

 

 

 강제 타입 변환은 자동 타입 변환과는 반대로 큰 크기의 변수를 작은 크기의 변수로 옮겨 담는다고 생각하시면 편하실 겁니다. 하지만 그릇이 작으면 다 담을 수 없듯이 예를 들어 int타입을 byte타입에 담는다면 뒤에 1byte만 byte형 변수로 옮겨지며 나머지는 버려지게 됩니다. 이와 같이 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어 저장하는 것을 강제타입 변환 (Casting)이라고 합니다. 강제 타입 변환은 캐스팅 연산자 ()를 사용하는데 ( ) 안에는 바꾸고자 하는 목적타입을 적으면 됩니다.

 

 

 

 

 

 

 

 

 

3. Hello world!

 

 프로그래밍언어를 배울때 어떤 책이든 가장 맨 처음에 있는 Hello Wolrd를 출력하는 구문을 JVM이 어떤 순서로 수행하는지에 대해서 알아보겠습니다. 메모리에 관한 내용과 JVM의 수행순서에 대해서는 Daily Java Study 180107에서 한적이 있습니다. (http://iot-holic.tistory.com/entry/Daily-Java-Study-180107-Java%EC%9D%98-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%A9%94%EB%AA%A8%EB%A6%AC?category=748512 참조)

메인메서드 이외에 다른 메서드나 클래스가 없기 떄문에 간단하지만 JVM이 코드를 수행하는 순서를 생각하는 것을 습관화 하기 위해서 가장 간단한 코딩인 Hello Wolrd! 부터 알아 보도록 하겠습니다.

 

 

 

 

 

 

 

 아직 생성자와 다른 클래스, 객체의 개념을 정확하게 하지 않아서 이해하시기 힘드시겠지만 이런 순서로 JVM은 우리가 내린 java 명령어를 수행합니다. 최대한 열심히(?) 그림을 그려서 메모리 어떤 영역에 어떤 객체가 만들어지고 이를 우리가 사용하는데 JVM이 어떤 원리로 사용할 수 있게 하는지에 대해서 완벽하게 이해하는 것이 Daily Java Study의 첫번째 목표입니다. 사실 다른 문법들은 제 설명 보다는 책에 더 자세하게 나와있기 때문에 제 블로그를 보시고 책을 보시면 더 이해하시기에 수월 하십니다. 하지만 자바기본서를 보며 메모리를 이해하기 위해서는 조금 힘들 수 있기 때문에 최대한 메모리부분을 자세하게 설명하도록 하겠습니다. 오늘은 여기까지 마치며 다음시간에는 객체에 대해서 개념과 반복문, 조건문은 우리가 어떤 방식으로 쓰는지 알아보도록 하겠습니다. 감사합니다.

 

 

 

 

 

 

 

 

1. 자바의 주석에는 //(행주석), /* ~*/(범위주석) 그리고 javadoc을 위한 /** ~*/ 주석이 있다.

 

2. 변수를 명명규칙에 맞게 선언할 수 있으며 값을 초기화 할수 있다. 기본형 변수의 타입의 종류를 알고 타입이 다를 경우 타입변환을 할 수 있다.

 

3. Hello World! 를 출력하는 간단한 프로그램이 어떤 순서로 JVM이 수행하는지에 대해서 알 수 있다.

 

 

 

 

728x90
반응형

+ Recent posts