변수 사용의 장점
- 가독성 증가 (읽기 편해짐)
- 재사용성 증가 (한번 만든 변수를 계속 사용)
- 코드 길이의 감소
- 유지보수성 증가 (코드 수정)
1.대소문자 구분 O , 길이제한 X
int sdgasgsdvavsvsavasavasvas;
int sdgasgsdvavsvsavasavasvaS;
2. 예약어 사용 X

- 자바 자체에서 이미 예약한 단어라는 의미이다. 즉 자바에서 이미 사용하겠다고 예약어로 등록했기 때문에 사용자가 동일한 이름을 사용할 수 없다. 예약어의 개념은 자바 프로그래밍을 하는 데에 있어 특정한 의미가 부여되어 있는 이미 만들어진 식별자이다.
3. 숫자 시작 X
char 1abc; //x
char abc1;
4. 특수문자 _ $ 만 사용가능 (하지만 쓰지않는다)
int $intNumber; // 문제는 없지만 개발자가 직접 사용 안한다.
int in_number; // 자바는 카멜표기법 쓰기때문에, 작성 안함
// _작성표기법은 DB에서 사용
5. 카멜표기법
-> 변수명 작성 시 여러 단어를 이어서 작성하는 경우
띄어쓰지 않고 후속단어 첫 글자를 대문자로 작성.
char helloWorldAppleBananaTomato;
6. 변수명은 언어를 가리지 않는다 (하지만 사용하지 않음)
int 정수1 = 10;
int aa;
📝 입력
class variable{
public static void main(String[] args){
//변수타입 변수이름; //선언방법
int x; //정수(integer)를 저장하기 위한 x [선언]
x = 5; //변수 x에 5를 저장 [초기화]: 처음 변수에 값을 대입.
//int x = 5; 선언과 초기화를 한줄로 간단히 가능
System.out.println(x);
x = 3; //변수 x에 3을 저장, 기존의 값은 지워진다.
System.out.println(x);
}
}
🖥 출력
3
System.out.println(5 + 3); // 8 출력
System.out.println(5 - 3); // 2 출력
System.out.println(5 * 3); // 15 출력
System.out.println(5 / 3); // 1 출력
다른 숫자를 넣으려면 숫자 전부를 바꿔줘야한다.
int x = 5;
int y = 3;
// = ; 대입연산자 ==> 오른쪽에 있는 값을 왼쪽에 대입하겠다.
//입력된 [5 와 3]값을 literal [리터럴] 이라고 부른다. 그 자체로 값을 의미한다.
//자료형에 따라 표기법이 다름.
System.out.println(x + y);
System.out.println(x - y);
System.out.println(x * y);
System.out.println(x / y);
변수의 값을 바꾸면 출력구문의 숫자를 따로 변경하지 않아도 된다.
| 1 byte | 2 byte | 4 byte | 8 byte | |
|---|---|---|---|---|
| 논리형 | boolean | |||
| 문자형 | char | |||
| 정수형 | byte | short | int | long |
| 실수형 | float | double |
💡정수형에서 20억이 넘을땐 long
💡실수형에서 float는 오차없이 7자리, double은 15자리이다.
기본형 8개를 제외한 자료형은
참조형이라고 한다.
고로 자주 사용되는 문자열 타입인String은 참조형이다`
📝 입력
class variable{
public static void main(String[] args){
boolean booleanData;
//메모리에 논리 값(ture/false)을 저장할 공간 1byte 할당하고
//할당된 공강을 booleanData라고 부르겠다.
booleanData = true;
System.out.println("booleanData: " + booleanData);
}
}
🖥 출력
booleanData: true
📝 입력
class variable{
public static void main(String[] args){
//문자형 리터럴 표기법: ' ' (홑따옴표)
// -> 문자 하나
char ch = 'A';// 유니코드 -> 65
char ch2 = 66;// 출력 시 -> B로 출력 (강제 형변환)
String str = "gdsg"; // String은 대문자로 시작한다.
}
}
💡 char 자료형에 숫자가 대입될 수 있는 이유
컴퓨터에는 문자표가 존재하고 있는데(유니코드), 숫자에 따라 지정된 문자 모양이 매핑되어있고, 'B' 문자 그대로가 대입되면 변수에 숫자 66으로 변환되서 저장.
-->반대로 생각하면 변수에 애초에 66이라는 숫자를 저장하는것이 가능.
🤙🏻
String str = ""; //OK. 내용이 없는 문자열
char ch = ''; //에러. '' 안에 반드시 하나의 문자가 필요
char ch = ' '; //OK. 공백 문자(blank)로 변수 ch초기화
💡 숫자 뿐만 아니라 두 문자열을 합칠 때도 덧셈 사용 가능.
String name = "ja" + "va"; //"java" String str = name + 8.0; // "java8.0"
문자열 + any type -> 문자열 + 문자열 -> 문자열
any type + 문자열 -> 문자열 + 문자열 -> 문자열7 + " " -> "7" + " " -> "7"
" " + 7 -> " " + "7" -> "7"
7 + "7" -> "7" + "7" -> "77"
7 + 7 + "" -> 14 + "" -> "14" + "" -> "14"
"" + 7 + 7 -> "7" + 7 -> "7" + "7" -> "77"
📝 입력
class variable{
public static void main(String[] args){
byte byteNumber = 127;
/*
*메모리에 정수값을 저장할 공간 1byte 할당하고
* 할당된 공간을 byteNumber라고 부르겠다.
* 선언된 byteNumber 변수에 처음으로 127을 넣음.
* */
short shortNumber = 32767;// 변수 선언 및 초기화
//정수 자료형의 기본형 !! (short, byte 옛날 코드의 잔재)
int intNumber = 2147483647; // 변수 선언 및 초기화
//자료형 변수명 = 리터럴
long longNumber = 10000000000L;//
//100억 이라는 값은 범위를 벗어남
//뒤에 L을 붙여줌으로써 long 자료형인것을 나타냄
}
}
💡 long 뒤에 붙은 'L'접미사는 필수!!
class variable{
public static void main(String[] args){
float floatNumber = 1.2345f;
double doubleNumber = 3.141592;
//d를 뒤에 쓸 수는 있다. => 3.141592d;
}
}
💡 실수형에도 접미사가 사용된다.
💡 실수형은 float, double 두 개밖에 없기 떄문에 자바는 더 큰 double을 접미사를 안붙이고 쓰는애로 정함
final 키워드를 작성 (마지막 대입되는 값)대문자, 여러단어 작성 시_사용final double PI_VALUE = 3.14;
PI_VALUE = 2.3; // 에러! 대입불가
형변환 (casting) : 값의 자료형을 변환하는 것(단 boolean 제외)
형변환 왜 필요할까❓
💡컴퓨터는 기본적으로 같은 자료형끼리만 연산 가능.
💡다른 자료형과 연산 시 오류 발생.
--> 이런 상황을 해결하기 위해 필요한 기술이 형변환.
💡자동 / 강제 형변환이 존재.
1. 자동 형변환
[값의 범위]가 큰 자료형과 [값의 범위]가 작은 자료형 연산 시
작은 자료형 -> 큰 자료형으로
컴파일러에 의해 자동적으로 변환되는 것
📝 입력
int num1 =10;
double num2 =3.5;
System.out.println (num2 + num1);
//원래 에러가 발생해야 되지만 "자동 형변환" 덕분에 발생하지 않음.
int i1 = 3;
double d1 = i1; //double은 실수만 저장될 수 있는 자료형
//정수가 대입되는 연산이 수행되면
System.out.println("i1: " + i1);//3
System.out.println("d1: " + d1);//3.0
System.out.println(d1 + num2);//double + double
// char 문자형 자료형
// char 자료형은 문자형이지만 실제 저장하는 값은
// 0부터 6만5천번 사이에 있는 숫자
char ch = 'V';
int i3 = ch; // int 변수 = char 값
// => 자동형변환
System.out.println("i3: " + i3);
char ch1 = '각';
int i4 = ch1;
System.out.println("i4: "+ i4);
🖥 출력
13.5
i1: 3
d1: 3.0
6.5
i3: 86
i4: 44033
2. 강제형변환
💡기존 자료형을 원하는 자료형으로 강제 변환시키는 것
- 값의 범위가 큰자료형을 작은 자료형으로 변환할 때 사용
- 출력되는 데이터의 표기법을 변화시키고 싶을 때
💡 강제 형변환 방법
- 자료형을 변환시키고 싶은 값 또는 변수 앞에 (자료형)을 작성
📝 입력
double temp = 3.14;
int num = (int)temp;
double temp = 3.14;
int num = (int) temp;
System.out.println("temp: " + temp); //3.14
System.out.println("num: " + num); // 3
// 실수 -> 정수형 변환시 소수점 버림 처리 (데이터 손실)
System.out.println();
🖥 출력
temp: 3.14
num: 3
public class CastingPractice1 {
public static void main(String[] args) {
int iNum1 = 10;
int iNum2 = 4;
float fNum = 3.0f;
double dNum = 2.5;
char ch = 'A';
System.out.println( iNum1 / iNum2); //2
System.out.println( (int)dNum);//2
System.out.println( iNum2 * dNum );//10.0
System.out.println( (float)iNum1 );//10.0
System.out.println( (float)iNum1 / iNum2);//2.5
System.out.println( dNum );//2.5
System.out.println((int)fNum);// 3
System.out.println( iNum1 / (int)fNum);// 3
System.out.println(iNum1 / fNum); // 3.3333333
System.out.println(iNum1 / (double)fNum); // 3.3333333333333335
System.out.println( "'" + ch + "'" ); // 'A'
System.out.println( (int)ch ); // 65
System.out.println( (int)ch + iNum1 ); // 75
System.out.println( "'" +(char)(ch + iNum1)+ "'");//'K'
}
}