📌변수의 이해
변수란?
- 다양한 종류의 자료를 표현할 수 있는 값을 변수라고 부르며, 일반적으로 웹 페이지에서 처리하고자하는 데이터에 해당된다.
자료형(data type)
- 프로그래밍 언어에서 변수의 종류를 구별하기 위해 사용되는 키워드
- 자바에서 제공되는 자료형의 종류에는 8가지있따. 이를 기본자료형(Primirtive Data Type) 이라 한다.
모든 변수는 컴퓨터의 메모리 영역에 생성된다.
일반적으로 메모리란, PC에 설치하는 RAM을 의미한다.
4byte의 크기를 갖는 변수 값 하나를 생성할 경우, PC의 RAM에서 해당 용량만큼을 사용하게된다.
변수는 RAM의 크기를 넘지 않는 범위 안에서만 생성할 수있다. (용량을 넘어서는 경우 OutOfMemory에러발생)
문자열 데이터
- 프로그램 코드에서 "문장을 표현하기 위해 사용되는 데이터 값
- String
- 문자열을 표현하기 위한 자료형이다. -> 어차피 char 로 쪼개서 실행
- 글자수에 상관없이 쌍따옴표로 묶인 내용을 할당할 수 있다.
- 글자값의 경우 쌍따옴표로 묶이게 되면 문자열로 취급되므로, 숫자와 문자열을 분명하게 구별해야한다.
변수를 사용하는 방법은 "선언"과"할당"의 두 영역으로 구분된다.
변수의 선언
-> 선언은 데이터형과 사용하고자 하는 변수의 이름을 정한 후, 세미콜론으로 한 라인을 종료
데이터 형+변수이름;
=> int num;
변수의 할당
- 선언된 변수에 원하는 값을 대입하는 과정
- 의 대입은 대입연산자(=)를 사용하여 우변에서 좌 변으로 대입된다.
변수이름 = 값;
=>num = 100;
선언과 할당의 통합
데이터형 변수이름 = 값;
=> int num2 = 200;
문자열 데이터
- String 형의 변수를 선언하고 쌍따옴표로 묶인 값을 대입한다.
- 빈 분자열이나 공백도 문자열 데이터 이다.
=> String msg = " 안녕하세요. 자바"; -> 문장을 표현(공백 포함)
=> String blank = " " ; => 공백 OK -> 빈 문자열 값
=> String age = "20"; -> 숫자값이 쌍따옴표로 묶였다면 문자열이다.
문자열 데이터의 덧셈
- 문자열 + 문자열 : 두 문장을 하나로 합쳐준다.
=> String language = "JA" + "VA"; -> "JAVA"
문자열 + 기본자료형
-기본자료형의 데이터가 문자열로 변환되고, 두 문장이 합쳐진다.
int age =20;
String name = "자바학생";
String result = name + age;
-> "자바학생" + 20 -> "자바학생20"
📌변수이름의 명명 규칙
1. 변수이름은 영문, 숫자, "_", "$" 만 사용가능
2. 변수의 이름의 첫글자는 숫자로 시작될 수 없다.
3. 대/소문자를 엄격하게 구분, 오타에 주의
4.자바에서 사용하는 예약어(키워드)를 사용할 수 없다.
5.클래스 이름의 명명 규칙도 변수 이름의 규칙과 동일하다.
📍 변수의 할당
- long, loat, double 은 다른 데이터 형과의 구별을 위해 값뒤에 데이터 형의 첫글짜를 접미사로 가질 수 있다.
접미사는 대/소문자를 가리지 않지만 가급적 대문자로 사용하는 것이 좋다.long money = 50000000L; float PI = 3.14F; double lat = 128.32452D;
- boolean은 true(참), false(거짓) 중의 한 가지만 갖는다.
boolean user = ture; boolean is Japanese = false;
- char는 홑따옴표로 감사진 한 글자만 대입할 수 있다.
char first = '곽'
📍 값의 할당 방법
- 생성된 변수는 다른 변수에 대입될 수 있다.
int num1 = 100; int num2 = num1; int num1 = 100; num1 = 200;
- 반복하여 다른값이 할당될 수 있지만, 선언은 중복 불가
int num1 = 100; num1 = 200; int num1 = 300;
- 선언되지 않은 변수는 사용할 수가 없다
int num1 = 100; num1 = 200; num2 = 300; // 에러
- 값이 대입되지 않은 변수는 다른변수에 대입하거나 출력할 수가 없다.
int num1; //에러 에초에 num1값에 할당되지 않아서 num2에 할당해 줄수 없음 int num2 = num1; //에러 num1에 대입되지 않은 변수 System.out.println(num1);
📌상수
👉 변하지 않는 수, 무조건 대문자로만 써야하는 암묵적인 룰이있음 : 이름만으로도 상수구나! 캐치가능
- 변수와 마찬가지로 메모리상에 존재하지만, 값이 변경될 수 없는 데이터
- final 키워드를 사용하여 선언된 변수는 상수로 생성된다.
final int age = 20; fianl long money = 120000L; float pi = 3.14F;
- 메모리상에 이름이 생성되므로 접근은 가능하지만, 할당한 값을 변경할 수는 없다 (읽기 전용)
final int AGE = 20; AGE = 21; //에러
📌연산자
연산자란?
프로그램에서 수행하기 위하여 사용되는 특수기호들
👍대입연산자 ("=")
👍사칙연산자
10 나누기 3을 계산할때, 수학에서는 몫이 3, 나머지가 1이라고 계산된다.
10/3 👉 "3"
10%3 👉 "1"
👍단항연산자
int x = 100;
x = x + 5;
_______________
int x = 100;
x += 5;
- 단항 연산자는 모든 사칙연산자의 표현이 가능하다.
+=, -=, *= %=
👍증감연산자
- 특정 변수에 저장되어있는 값을 1씩 증가,감소 시킬 경우 사용
- 단항연산자로 표현할 수 있는 식에서 계산 대상 값이 1인 경우 덧셈과 뺄셈에 대해서는 다시 한번 축약할 수 있다.
[덧셈의 경우]
x = x + 1;
x += 1;
x ++;
++x;
[뺄셈의 경우]
x = x -1;
x -= 1;
x --;
--x;
X++; 와 ++X;의 차이
- 증감 연산자는 그 자체가 다른 연산식의 피 연산자로 사용될 수 있다. 이 때, 증감 연산자의 표시 위치에 따라 결과가 서로 다르게 적용된다.
[X++ 경우]
증감 연산자가 뒤에 표시되는 경우, 현재 x의 값을 먼저 수식에 적용하고, 나중에 x에 대한 1 증가 처리 한다.
int a = 100;
int x = 1;
int y = a + x ++; //100 + 1 = 101
System.out.println(y) //y : 101 , x : 2
[++X 경우]
증감연산자가 앞에 표시된 경우 먼저 현재 x의 값을 1 증가시킨 후 그 결과를 수식에 적용한다
int a =100;
int x = 1;
int y = a = ++x; //100 + 2 = 102
System.out.println(y) //y : 102, x : 2
👍논리연산자
- 좌변과 우변을 논리연산하고, 참일때는 true, 거짓일때는 false값을 변환한다.
- 두개 이상의 비교 연산자의 결과나 boolean 값에 대해 추가로 "AND" 나 "OR" 연산을 수행하여 결과를 얻는다
✔AND의 의미를 갖는 &&
&&연산자 두 개의 boolen값을 비교하여 모두 true인 경우에만 결과값이 true
ex) 로그인 : 아이디 비밀번호 둘다 맞아야 로그인
✔OR의 의미를 갖는 ||
||연산자는 두 개의 boolean값을 비교하여 둘중 하나라도 true인 경우 결과값이 true
ex) 2호선, 8호선 타고 잠실가기 - 뭘타든 타기만하면 잠실 도착함
int a = 10;
int b = 20;
a<b || a!=b ->true
a==b && a>=b ->false
!(a<b || a!=b) ->false
!true ->false
!false ->true
📌형변환 (Casting)
형변환이란?
- 변수의 자료형이 변환되는 것을 의미한다.
- 특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다.
- 암묵적 형변환과 명시적 형변화의 두 종류가 있다.
[암묵적 형변환]
- 암묵적 형변환은 서로 다른 자료형을 연산 혹은 대입하는 경우, java컴파일러가 자료형을 통일한다.
int a = 100; //정수형
float b = a; //정수형을 실수형에 대입
- 암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입가능함을 의미한다.
[명시적 형변환]
- 데이터의 손실을 감수하더라도, 강제로 형변환을 시키는 형태
ex) 5.5 -> 5 // 0.5손실)
- 실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다
double a = 3.14d;
int b = (int)a; // 3
🔎변수의 범위
- 자신보다 하위 블록으로는 침투할 수 있다.

- 자신이 선언된 블록 밖으로는 빠져나갈 수 없다.


- 블록안에서 선언된 변수는 블록 밖에서 존재하는 동일한 이름의 변수와는 이름만 동일할 뿐,다른 값으로 인식된다.
