수학에서의 변수는 '변하는 수'라는 뜻이지만
프로그래밍 언어에서 변수는 값을 저장할 수 있는 메모리 상의 공간이다.
기본형 - 변수에 값이 저장된다ex) 쪽지에 25가 적혀 있음
참조형 - 변수에 주소가 저장된다.
ex) 경남정보대 503호의 맨 뒤 컴퓨터 책상
실제로는 메모리의 어떤 공간에 있는 것이다.
- 변수는 타입이 있다.
- 변수의 이름을 개발자가 설정해야 한다.
- 프로그래밍 언어에서 equal(=)표시는 같다라는 뜻이 아니라 오른쪽의 값을 왼쪽에 넣겠다는 뜻이다.
- 값은 타입에 맞게 작성해야 한다.
- 마지막에 세미콜론으로 완료한다.
// 변수 선언
int age;
// 변수 초기화
age = 25;
// 변수 값 변경
age = 31;
가독성이 떨어져 자주 사용하지 않는다.
int age, year;
int a = 1, b = 2;
int a = 10;
int b = 20;
// a에 b의 값 20을 넣는다
a = b;
int Num = 1;
int num = 2;
프로그래밍 언어의 구문에 사용되는 단어들을 예약어라고 한다.
(class, int, true, String, for, if 등등)
int true = 1;
int num1 = 1;
int 2num = 2;
int _num = 1;
int n_um = 2;
int $num = 3;
int nu$m = 4;
int #num = 5; //에러
int n^um = 6; //에러
// 권장
class hello {}
// 권장하지 않음
class hello {}
// 변수 이름의 첫글자는 소문자
int num = 1;
// 함수 이름의 첫글자는 소문자
int add(int a, int b) {
return a + b;
}
// hello world는 hello 띄우고 world
// 띄어쓰기 대신 다음 글자를 대문자로 작성한다.
public class HelloWorld {
}
// my num
// 띄워쓰기 대신 다음 글자를 대문자로 작성한다
int myNum = 1;
// add number
// 띄어쓰기 대신 다음 글자를 대문자로 작성한다.
int addNumber(int a, int b) {
return a + b;
}
static final int THE_2ND_WORLD_WAR = 1939;
클래스명, 변수명, 함수명 등은 유니코드로 작성 가능하지만, 아스키코드인 영문자로 작성하는 것을 추천한다.
유니코드를 인식하지 못하는 OS도 있기 때문이다.
// 한글도 가능하지만
// 영어로 작성하는 것을 추천
class 자동차 {}
class Car {}
우리가 주로 사용하는 값의 종류는 크게 문자와 숫자로 나눌 수 있으며 여기서 숫자는 다시 정수와 실수로 나뉜다.
논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위한 실제 값을 저장한다.
정수형의 default 자료형은 int 이며
실수형의 defalut 자료형은 double 이다.
int가 default인 이유는 CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문이다.
객체의 주소를 저장한다. 기본적으로 Java.lang.Object를 상속받을경우 참조형이 된다.
즉, 기본형을 제외하고는 참조형이라 생각해도 된다.
참조형 변수는 객체의 주소 또는 null을 값으로 갖는다.
String은 기본형이면서 참조형이다.
주석을 참고하길...
public class Study02 {
// 한 프로그램 내에 여러 main함수가 있을 수 없다.
public static void main(String[] args) {
// 변수
// 데이터를 자바 프로그램이 실행되는 동안 유지할 때 사용
// 기본형 타입 변수(예약어 첫글자가 소문자인 타입 - 파란색 친구들도)
// 정수형 데이터를 저장할 때 int를 사용한다.
// 정수는 소수가 없는 숫자 ex) -1, -2, 0, 100, 1000
// 21억정도까지 저장된다.
int num = 1;
// long은 정수형 데이터 int보다 큰 숫자를 저장할 때 사용
// long은 L을 붙여도 되고 안해도 되고지만 확실히 할려면 붙이는게 좋음
long longNum = 2L;
// 실수형 데이터
// float는 무조건 F를 붙여줘야함
float floatNum = 1.2F;
// 실수형 데이터보다 더 큰 것
double doubleNum = 1.2;
// 논리형 데이터
boolean bool = true; // 또는 false
// 문자 데이터 (캐릭터의 줄임말 char)
// 홀 따음표로 감싼다.
char ch = 'a';
// 참조형 타입 변수(예약어 첫 글자가 대문자인 타입)
// 문자열 데이터
// 쌍 따음표로 감싼다
String str = "hello world";
}
}
주석을 참고하길...
public class Study03 {
public static void main(String[] args) {
// 문자는 더하면 합쳐진다
// System.out.println("hello" + "world");
// 숫자는 연산된다
// System.out.println(1 + 1);
// 문자와 숫자를 더하면 합쳐진다.
// System.out.println("hello" + 1);
// 결과 hello1
// 문자와 불린을 더하면 합쳐진다
// System.out.println("hello" + false);
// 결과 hellofalse
int num = 2;
double doubleNum = 3;
// 정수와 실수를 더하면 실수가 된다.
System.out.println(num + doubleNum); //결과값 5.0
// 정수와 실수를 빼면 실수가 된다
System.out.println(num - doubleNum); //결과값 -1.0
// 정수와 실수를 곱하면 실수가 된다
System.out.println(num * doubleNum); //결과값 6.0
// 정수와 실수를 나누면 실수가 된다
System.out.println(num / doubleNum); //결과값 0.66666666
System.out.println(doubleNum / num); //결과값 1.5
// 정수와 정수를 나누면 정수가 된다.(나머지 소수가 증발한다.)
// 몫을 구한다
System.out.println(3 / 2); //결과값 1
// %는 나머지를 구한다
System.out.println(3 % 2); //결과값 1
}
}
그 자체로 값을 의미하는 것을 뜻한다.
프로그래밍 언어에서는 기본형 타입의 값은 메모리에 고정으로 저장되기 때문에, 고정 값을 저장하는 상수와 구분하기 위해 리터럴이라는 단어를 사용한다.
변수(variable) 값을 저장하기 위한 공간
상수(constant) 값을 한번만 저장할 수 있는 공간
리터럴(literal) 그 자체로 값을 의미하는 것