• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

클래스와객체(1) 질문

21.06.15 17:40 작성 조회수 200

0

18:17에서, int 는 앞에 i 가 소문자인데, String 은 왜 S가 대문자인가요. 또한 studentName에서 왜 N만 대문자인가요.

감사합니다

답변 1

답변을 작성해보세요.

14

codesweaver님의 프로필

codesweaver

2021.06.15

안녕하세요 안주형님!

.

### 1에 대한 답변

int, long, float, double 같은 타입과 String은 조금 차이가 있습니다.

메모리에서의 관리가 달라지는데요, 비유를 들어 설명드리겠습니다.

.

변수를 박스라고 하겠습니다. int, long 같은 변수는 박스안에 바로 필요한 물건들을 넣어놓고, 필요할때마다 찾아서 쓰는 방식이라고 할 수 있습니다. 이런 변수를 원시타입 (Primitive Type) 이라고 합니다.

.

반면 String은 박스안에 물건을 넣는것이 아니라, 내가 찾아가야할 주소만 담겨 있습니다. 그래서 박스를 까서 주소를 확인하고 그 주소까지 찾아가면 비로소 내가 필요한 물건을 찾을 수 있습니다. 이런 변수는 참조형 이라고 합니다. 혹시 포인터 라는 걸 들어보셨는지요? 사람들이 C언어를 공부할 때 공포의 대상이라는 그 포인터가 바로 이 자바의 참조형입니다.

.

여기까지 들으면 String은 사용하기 불편할것 같습니다. 값을 바로 쓸 수 없고 주소를 보고 찾아가는 과정이 추가되었으니까요. 왜 이런 방법을 사용할까요? 그 이유중 하나는 프로그램을 만드는 단계에서는, 프로그램을 실행할 때 얼마만큼 많은 메모리가 필요한지 예측할 수 없기 떄문입니다. 

.

가령 엑셀파일을 읽어서 그래프로 만드는 프로그램을 작성한다고 하겠습니다. 근데 엑셀 파일의 크기는 얼마나 될까요? 개발단계에서는 이걸 알 수 없습니다. 또 엑셀파일마다 크기가 모두 다르겠죠? 그러니 어떤 일정한 크기라고 단정할 수 없습니다. 그럼 모든 엑셀파일이 들어갈만한 메모리를 미리 잡아놓으면 어떨까요? 그렇게 되면 메모리 낭비가 심해집니다. 그래서 프로그램은 유연하게 메모리를 확보하는 기능이 필수적으로 필요합니다. 그리고 이것에 최적화된 방법이 참조형 입니다.

.

### 2에 대한 답변

.

변수명을 지을 때 개발자들이 따르는 관습이 있습니다. 유저명을 담는 변수는 다음과 같이

userName, UserName, USER_NAME, user_name 다양하게 표현할 수 있습니다.

이중 자바에서는 변수명을 userName과 같이 첫글자는 소문자로 시작하되, 다음 단어의 첫글자는 대문자로 표현하는 방식을 많이 사용합니다. 이런 방식을 낙타등 처럼 울퉁불퉁하다해서 카멜표기법 이라고 합니다. 변수명 뿐 아니라 메서드의 이름도 카멜표기법을 주로 사용하며 클래스명은 첫글자를 대문자로 하는것이 관례입니다. (UserName) 

.

이런식으로 관습적으로 굳어진 방법이며 강제사항은 아닙니다. 다만 개발일이란 것이 협업을 많이 해야 하는 작업이고 안주형님의 코드에서 막히는 부분을 다른 사람에게 물어볼 일도 자주 생기는데 이 때 코드작명법을 마음대로 할 경우 상대방이 코드를 이해하는데 더 힘들어 질 수 있습니다.

.

변수명은 카멜표기법을 하되, 변수의 역할을 대표할 수 있는 이름을 짓도록 손에 익히시는게 좋습니다.

.

감사합니다.