시작 전 안내

자바의 정석 1장 정리 바로가기
이번 챕터의 경우 제가 기존에 알던 내용들은 생략하거나 간단하게 넘어갔음에도 불구하고, 너무 내용이 길어져서 두 개의 게시물로 나누어 작성하겠습니다.

변수

변수는 값을 저장할 수 잇는 메모리 상의 공간을 의미힌다.
하나의 변수에는 단 하나의 값만 저장할 수 있고, 새로운 값을 저장하면 기존의 값은 사라진다.

변수의 선언과 초기화 방법

변수 타입 변수 이름;의 형태로 선언한다.
변수 선언 시 타입에 알맞은 크기의 저장곤간이 확보된다.
변수는 사용 이전에 초기화를 해야하는데, 이는 메모리에 쓰레기 값이 남아있어서 내가 원하는 대로 작동하지 않을 가능성이 있기 때문이다.

변수가 작동하는 방식

int x=10;int y=0이라는 두개의 변수가 있다.
이때 두 개의 변수를 바꾸기 위해서는 꼭 temp라는 임시 저장소 역할을 하는 변수가 필요하다.

왜 그럴까?
x=y;를 통해 x에는 0이라는 값이 들어간다.
이 상태에서 y=x;를 하면 두 개의 값이 교환되는 게 아니라
하나의 변수 값을 다른 변수에 덮어씌우게 된다.

올바른 방법
임시 저장소인 temp를 선언한다(int temp=0;).
이 temp를 사용해 첫번째 변수의 값을 저장한다.
첫번째 변수에 두번째 변수의 값을 할당한다.
이후 temp를 두번째 변수의 값에 할당한다.

변수 네이밍 컨벤션

책에서는 어떤 것을 기준으로 했는지 잘 모르겠지만, 나는 책 내용과 구글 컨벤션,네이버 컨벤션을 기준으로 작성했다.

google자바 컨벤션

지역 변수명은 lowerCamelCase로 작성한다.
한국어 발음대로 표기하지 않는다.
변수 이름뿐 아니라 식별자에는 예약어를 사용하지 않는다.
숫자로 시작되지 않도록 한다.
아스키코드에 없는 문자의 경우 아스키코드로 변환한 뒤 이름을 설정한다.
변수가 많아질 경우 관련된 변수를 enum/동반객체/패키지 구조 등을 활용화하여 그룹화한다.
상수의 이름은 모두 대문자로 하며, 여러 단어로 이루어진 경우 _를 사용한다.
클래스 이름의 첫글자는 대문자로 한다.

변수의 타입

자료형은 값의 타입에 따라서 문자형, 정수형, 실수형으로 나뉘며
특성에 따라 참조형과 기본형으로 나뉜다.
참조형 변수는 주소를 값으로 갖게되고(예시: C언어의 &*)
그 주소를 통해 내용을 읽어와야하지만
기본형 변수는 실제 데이터를 저장하게 된다.

참조 변수 선언법

예를 들어 자바에서 배열을 선언한다고 하면,
코틀린에서는 val score: IntArray = IntArray(5)으로 하였던 작업을
자바에서는 int[] score = new int[5];이런 식으로 해야한다.
동적으로 크기가 5개인 int배열을 힙 메모리에 할당하고 그것을 score가 참조하여 저장하는 원리이다.

상수와 리터럴

상수

상수는 변수와 마찬가지로 값을 지정하는 공간이지만 한번 저장한 값을 다른 값으로의 변경은 불가능하다.
선언 방법은 변수와 동일하게 선언하며, 타입 앞에 final키워드를 추가한다.
한번 저장한 뒤 다른 값으로의 변경은 불가능하므로, 선언과 동시에 초기화 해서 사용해야한다.

리터럴

간단하게 설명하면 아까 정의한 상수는 공간
리터럴은 그 자체이다.
상수를 기준으로 설명하자면 상수는 공간이어서 주소를 가지고 있고, 리터럴은 그 주소를 토대로 찾아간 내용이라고 생각하면 된다.
그렇지만 사실 일반변수도 리터럴을 가질 수 있기 때문에 이 설명은 이해를 돕기 위한 예시 정도로만 이해하는 게 좋을 것 같다

long과,float,double의 리터럴에는 접미사가 붙는데 각각L,f,d가 붙는다.
여기에서 double의 d는 생략가능하다.
리터럴의 타입은 변수와 일치시키는 것이 통상적이지만
넓은 쪽에 좁은 타입의 값을 저장시키는 것은 가능하다.

유의점: 그러나 int에 ‘A’라는 char을 집어넣으면 유니코드 값이 들어가게 된다.
즉 예상과 다른 작동을 일으킬 수 있다.
또한 같은 실수형이지만 double입의 리터럴을 float에는 저장시킬 수는 없는데 이는 부동소수점의 정밀도 차이 때문이다.
그럴 때에는 명시적 형변환을 사용해야한다.

문자 리터럴

char과 string차이와 비슷한데, 작은 따옴표로 감싼 한글자 짜리 리터럴은 문자 리터럴
두글자 이상으로 ““로 감싼 리터럴은 문자열 리터럴이라 부른다.
문자열 리터럴에는 ““이 가능한 반면 문자열 리터럴에 ‘‘만 사용하는 것은 안된다.
또한 +연산이 가능한데, 이때 주의해야할 것은 숫자의 덧셈과 달리 문자열의 덧셈은 순서에 따라 결과가 바뀔 수 있다.
7과 같은 기본형 타입을 문자열로 변환할 때에는 ““을 꼭 더해주어야한다.

출력하기

println과 printf는 기본적으로 출력을 한다는데에서는 동일하지만, println은 출력 후 줄바꿈을 하고 printf는 줄바꿈을 하지 않는다.

양식을 맞추는 방법은 크게 보면 두가지가 있는데
책에서 설명하는 지시자를 사용하는 방법과 format을 사용하는 방법이 있다.
위 두 방법중 format는 형식화된 문자열을 반환한 후에 출력한다.
복잡한 문자열이라면 format을 사용, 그런 것이 아니라면 지시자를 사용하는 방식이 간편할 확률이 높다.

입력받기

Scanner을 사용한다.
이떄 꼭 java.util.를 제대로 import해주어야한다.
` Scanner sc = new Scanner(System.in);로 선언을 하는데,<br> 만약 줄바꿈이 입력되면 지금까지 입력된 내용이 문자열로 변환되도록 하고 싶다면<br> String input=sc.nextLine();을 추가하면 되고 이를 int로 변경해야할 때에는 int num=Integer.parseInt(input);` 이런 식으로 변환을 하면 된다.

공부 시 참조될 링크

format사용법
캠퍼스 핵데이 자바 컨벤션

댓글남기기