해당 내용은 인프런에 있는 [김영한의 자바 입문] 강의를 보고 참고하여 정리한 글이다.
혹시 문제가 된다면 꼭 알려주시길 바랍니도...😢
변수(variable)
어딘가에 값을 보관하고 필요할 때 값을 꺼내 읽을 저장소. 즉, 데이터를 담는 그릇
변수는 이름 그대로 변할 수 있다는 뜻
public static void main(String[] args) {
int a; //변수 선언
a = 10; //변수 초기화
System.out.println(a);
}
*tip: class를 만들 땐 관례상 첫 글자는 대문자로 작성한다
-변수 선언
int a;
변수를 만드는 것을 변수 선언이라고 함
a라는 변수 그릇에 int(integer) 정수를 보관할 수 있음
-변수 초기화
a = 10;
자바에서 =는 오른쪽에 있는 값을 왼쪽에 저장한다는 의미, 수학에서의 같다(equals)와는 다른 뜻.
변수 a에 10(값)을 대입하여 저장하는 것을 변수 초기화라고 함
-변수 값 읽기
System.out.println(a);
변수에 저장되어 있는 값을 읽는 방법은 변수의 이름을 적어주면 됨
변수 a에 10이 들어가 있다면 자바는 실행 시점에 변수의 값을 읽어서 사용함
변수의 값을 읽는다고 값이 사라지는 것은 아니며 반복해서 읽을 수 있음
변수 값 변경
public static void main(String[] args) {
int a; //변수 선언
a =10; //변수 초기화
System.out.println(a); //변수 a 에는 10이 들어있다. 10 출력
a = 50; //변수 값 변경: a(10 -> 50)
System.out.println(a); //변수 a에는 50이 들어있다. 50출력
}
프로그램은 위에서 부터 아래로 실행됨
변수 a가 10으로 초기화 되었지만 10을 출력 후, 50으로 변수 a 값이 변경되어 두번째 출력에선 50으로 값이 나오게 된다.
변수 선언과 초기화
-변수 선언
변수를 선언하면 컴퓨터의 메모리 공간을 확보하여 그곳에 데이터를 저장
변수 이름을 통해 해당 메모리 공간에 접근할 수 있음
즉, 데이터 보관 공간을 만들고 이름을 부여하는 것
public static void main(String[] args) {
//변수는 하나씩 선언할 수도 있고
int a;
int b;
// 한번에 여러 변수를 선언할 수도 있다.
int c,d;
}
-변수 초기화
변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라고 함
public static void main(String[] args) {
//변수 선언, 초기화를 따로
int a;
a = 1;
System.out.println(a);
//변수 선언과 초기화를 한번에
int b =2;
System.out.println(b);
//여러 변수 선언과 초기화를 한번에
int c =3, d =4;
System.out.println(c);
System.out.println(d);
}
-초기화 하지 않은 변수
int f;
System.out.println(f);
변수는 초기화를 반드시 해야 함
초기화를 하지 않은 변수는 다음과 같은 에러 발생
java: variable f might not have been initialized (변수가 초기화 되지 않았다는 오류)
*해당 오류는 컴파일 에러 => 자바 컴파일러가 컴파일을 돌려 .class 파일을 만들어야 하는데 지금 그게 진행이 안되는 것
컴파일 에러는 자바 문법이 맞지 않았을 때 발생하는 에러, 오류를 빠르고 명확하게 찾을 수가 있기 때문에 사실 좋은 에러
왜 오류가 발생하는가?
컴퓨터의 메모리는 여러 시스템이 함께 사용하는 공간이라 계속 어떠한 값들이 저장됨
변수 선언 시 메모리 상 어떤 공간을 차지하고 사용하겠단 말, 그 공간에 기존에 어떤 값이 있었는진 아무도 모름
그래서 초기화를 하지 않으면 이상한 값이 출력될 수 있기 때문에 자바는 변수 초기화를 하도록 강제함
*지금 배우고 있는 변수는 지역변수(Local Variable)라고 함. 지역 변수는 개발자가 직접 초기화 해주어야 하지만,
클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행함
변수 타입1
public static void main(String[] args) {
int a = 100; //정수
double b = 10.5; //실수
boolean c = true; //불리언(boolean) true, false 두 가지만 입력 가능
char d = 'A'; //문자 하나, 2개부턴 오류 발생
String e = "Hello Java"; //문자열, 문자열을 다루기 위한 특별한 타입
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
변수는 데이터를 다루는 종류에 따라 다양한 형식(type) 존재 ( 형식, 타입, 형 모두 같은 의미)
- int: 정수 ex) 1, 2, 10, 10000
- double: 실수 ex) 0.2, 1.6, 1000.8455
- boolean : 불리언(boolean) / true, false 두 값만 사용 가능, 참과 거짓을 판단하는 곳에 사용
- char : 문자 하나를 다룸 / 작은 따옴표(')로 감싸야 함 ex) 'A', '가'
- String : 문자열 / 큰따옴표(")를 사용해야 함 / String은 첫 글자가 대문자로 시작한다 ex) "hello java"
리터럴
코드에서 개발자가 직접 입력한 고정된 값을 리터럴(literal)이라고 함
ex) 100, 10.5, true, 'A', "Hello Java"
변수 타입2
메모리를 작게 사용하면 작은 숫자 표현 가능, 메모리를 많이 사용하면 큰 숫자 표현 가능
- 정수
- byte : -128 ~ 127
- short : -32,768 ~ 32,767
- int : -2,147,483,648 ~ 2,147,483,647 (약 20억)
- long : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
- 실수
- float : 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도
- double : 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도
- 기타
- boolean : true, false (1byte)
- char : 문자 하나(1byte)
- String : 문자열을 표현, 문자 길이에 따라 메모리 사용량 달라짐
실무에서 자주 사용하는 타입
- 정수- int, long : 기본적으로 정수는 int, 20억이 넘을 것 같으면 long 사용
- 파일을 다룰 땐 byte 사용 (그나마 파일 전송 시 사용한다고 함)
- 실수 - double
- 불린형 - boolean : 조건문에 자주 사용
- 문자열 - String : 문자를 다룰 땐 문자 하나든 문자열이든 String으로 사용하는 것이 편리
변수 명명 규칙
* 변수 이름은 의미있고, 용도를 명확하게 설명해야 함 / 변수 이름을 잘 짓는 것이 중요하다고 하심
규칙 : (규칙은 필수) 규칙을 지키지 않으면 컴파일 오류 발생
- 변수 이름은 숫자로 시작할 수 X / BUT 숫자 포함은 가능
- 이름에 공백 포함 X
- 자바의 예약어를 이름으로 사용X
- 변수 이름에는 영문자, 숫자, 달러기호($), 밑줄(_)만 사용 가능
관례 : 필수는 아니지만 전세계 개발자가 해당 관례를 따르므로 사실상 규칙인 셈
- 소문자 시작하는 낙타 표기법(camel case)
- 변수 이름은 소문자로 시작하는 것이 일반적임 / 여러 단어로 이루어진 변수 이름의 경우, 첫 번째 단어는 소문자로 시작하고 이후의 단어는 대문자로 시작하여 공백 없이도 단어 구분을 쉽게 함 ex) myJava, orderDetail
자바 언어의 관례 정리
클래스는 대문자, 나머지는 소문자로 시작
- 자바에서 클래스 이름 첫글자는 대문자로 시작 / 나머지는 모두 소문자로 시작 & 낙타 표기법 적용
- ex) 클래스 : Person, OrederDetail
- 변수를 포함한 나머지 : firstName, userAccount
- 예외 2가지 존재
- 상수는 모두 대문자 사용 & 언더바로 구분 ex) USER_LIMIT
- 패키지는 모두 소문자 사용 ex) org.spring.boot
강의 中
백문이 불여일타!
프로그래밍은 수영이나 자전거 타기처럼 직접 물 속에 들어가거나 자전거를 타봐야 이해할 수 있듯 직접 코딩을 해보는 것이 중요하다고 말씀하셨다.
읽어서 이해가 잘 안되더라도 직접 코딩을 해보면 자연스럽게 이해가 되는 경우가 많고, 백번 읽는 것 보다 한번 직접 코딩해서 결과를 보는 것이 좋은 개발자로 빠르게 성장할 수 있는 지름길이다.
'개발 공부 > [java]' 카테고리의 다른 글
[java] 김영한의 자바 입문 / 강의 정리 / 5. 반복문 2 (1) | 2024.01.31 |
---|---|
[java] 김영한의 자바 입문 / 강의 정리 / 5. 반복문 1 (1) | 2024.01.30 |
[java] 김영한의 자바 입문 / 강의 정리 / 조건문 (0) | 2024.01.28 |
[java] 김영한의 자바 입문 / 강의 정리 / 연산자 (0) | 2024.01.26 |
[java] 김영한의 자바 입문 / 강의 정리 / 자바 기초 (1) | 2024.01.25 |