-
변수 개념과 활용 방법에 대해 알아보자프로그래밍 언어/Java 2024. 2. 28. 11:02
자바를 활용하기 앞서, 자바를 사용하기 위해 알아야할 기본적인 개념에 대해 알아보자.
가장 기초적으로 알아야할 부분은 바로 변수에 대한 개념이다.
변수란 값이 변할 수 있는 저장공간이다.
변수 선언은 아래와 같이 사용할 수 있다.
int number = 10; //1. 초기화 int a; //2. 선언 후 덮어쓰기 a = 1;
상수란 값이 변하지 않는 저장공간이다.
상수 선언은 아래와 같이 사용할 수 있다.
fianl int PI = 3.141592; //상수 선언 PI = 4; //새로운 값으로 대입시 에러 발생
위에서는 설명 없이 int라는 기본형 변수를 사용했지만, 변수들은 그냥 단독으로 사용할 수 없다.
모든 변수의 이름 앞에는 변수의 타입이 선언되어야한다.
a = 10; // 변수의 타입이 없어 사용 불가능 int = 10; // 변수의 이름이 없어 사용 불가능
이 변수의 타입을 명시하는게 불편할 수 있지만, 이는 컴퓨터의 저장공간 최적화 및 다른 타입과의 연산에서 벌어지는 에러를 미리 막을 수 있다는 장점이 있다. (이는 필자의 주관이 포함되어있다.)
다른 타입과의 연산 때문에 벌어진 괴담이 있다.
쇼핑몰을 운영하던 사람이 주문 목록을 확인하던 도중 비정상적으로 주문이 많이 된 경우가 있었다.
별로 인기 없는 상품의 주문이 111211건이나 접수된 것이다.
주문역할을 하던 코드를 뜯어보던 도중 그는 주문을 받는 변수 타입이 String인 것을 눈치챘다.
String의 숫자 연산은 뒤에 숫자를 그냥 붙이기 때문에, 1+1+1+2+1+1 이 111211이 된 것이다.
이렇게 잘못 들어간 주문 때문에 운영자는 큰 손해를 입었다...라는 업계 전설이 있다.
변수의 타입은 크게
- 기본형 변수 :: 저장공간이 정해져있다.
- 참조형 변수 :: 저장공간이 정해져있지 않다.
기본형 변수
- byte :: 정수형 변수. 1byte(8 bit)로 이루어진 저장공간.
- short :: 정수형 변수. 2byte로 이루어진 저장공간.
- int :: 정수형 변수. 4byte로 이루어진 저장공간.
- long :: 정수형 변수. 8byte로 이루어진 저장공간. int와 구분하기 위해 숫자 끝에 L을 붙인다.
- float :: 실수형 변수. 4byte로 이루어진 저장공간. long보다 더 큰 수를 저장 가능. double과 구분하기 위해 뒤에 f를 붙인다. (**4byte임에서 long보다 더 많은 공간을 저장할 수 있는 이유는?)
- double :: 실수형 변수. 8byte로 이루어진 저장공간. long보다 더 큰 수를 저장 가능.
- char :: 문자형 변수. 1byte로 이루어진 저장공간. 문자 하나를 저장 가능.
- boolean :: 논리형 변수. 1byte로 이루어진 저장공간. true/false 저장 가능. (**0과1만 저장하는 것과 다를바가 없는데 1bit가 아니라 1byte를 사용하는 이유는?)
참조형 변수
- String :: 문자열 변수. 문자열을 저장할 수 있다.
- Object, Array, List... :: 단일 저장 공간에 담을 수 없는 값을 저장 가능
래퍼클래스
기본형 변수를 클래스로 한번 감싼 변수 (클래스로 감싸면 얻는 이점?)
클래스로 변수를 관리하면 객체 지향의 기능을 사용할 수 있기 때문에 이점이있다. (아직은 실감하지 못하겠다.)
래퍼클래스는 변수 타입의 맨 앞글자를 대문자로 바꾸면 된다. (예: int -> Integer, char -> Character)
내가 만든 문제
저장 공간의 선언을 하는 방법은? (2가지)
변수와 상수의 뜻은?
변수의 기본형과 참조형을 열거하시오.
래퍼클래스란?
상수 선언을 위한 키워드는?
아스키 코드란?
Stack영역과 Heap영역을 변수를 저장하는 관점에서 서술하라
내가 궁금한 것
1. 래퍼클래스를 굳이 사용하는 이유?
2. float가 int보다 더 큰 수를 저장할 수 있는 이유?
3. boolean은 true/false만 저장하는데 1bit가 아니라 1byte나 사용하는 이유?
다음에 배워볼 것은
1. 아스키 코드
2. 문자와 문자열
'프로그래밍 언어 > Java' 카테고리의 다른 글
메서드 시그니처 (0) 2024.08.25 JVM? JDK? JRE? 개념을 정확히 알아보자 (1) 2024.02.27 Java 언어에 대한 이해 (1) 2024.02.26 객체지향 프로그래밍 파헤치기) 캡슐화를 알아보자! (1) 2023.12.15 JAVA 뽀개기) Collection - List에 대해 자세히 알아보자! (0) 2023.12.13