변수의 정의
변수란 메모리 공간(RAM - 주기억장치)에 값을 기록하기 위한 공간
RAM의 구성 - Stack, heap, static
자료형 (Data type)
데이터 | 자료형 | byte (메모리 크기) | |
논리 | boolean | 1 byte | |
문자 | 문자 | char | 2 byte |
문자열 | String | - | |
숫자 | 정수 | byte | 1 byte |
short | 2 byte | ||
int | 4 byte | ||
실수 | long | 8 byte | |
float | 4 byte | ||
double | 8 byte |
chae -> sign bit가 없기 때문에 저장되는 범위가 달라진다.(0~6만)
리터럴
변수에 대입되는 값 자체를 의미한다.
char = ‘ ‘
String = “ “
long = ~L;
float = ~f;
변수 선언
Stack에 값을 담을 수 있는 공간을 만든다.
int point; // 변수의 선언 (자료형 변수명)
point = 100; // 초기화 (공간 = 값)
int point = 100; // 선언과 동시에 초기화
int total; // 공간 생성
total = point; // 공간 = (공간이 가지고 있는) 값
명명 규칙
대소문자를 구분한다.
String userName; // O
String username; // X
예약어를 사용하면 안된다.
// boolean true; // 예약어 사용해서 컴파일 에러 발생
boolean True; // 암묵적인 규칙에 의해 권장하지 않음
숫자로 시작하면 안된다.
int age1;
// int 1age; // 숫자로 시작해서 에러 발생
특수 문자는 '_'와 '$'만 허용한다.
// double sh@rp; // 다른 특수 문자 사용시 에러 발생
double $harp;
여러 단어의 이름은 두 번째 단어의 앞 글자부터 첫 글자마다 대문자로 표기한다.
// 낙타봉 표기법(camel case)
String ageOfVampire;
String ageofvampire; // 에러가 발생하지 않지만 권장하지 않음(큰일남)
한글 사용 가능
String 이름;
상수의 경우 대문자로 표기
final int AGE; // final 상수 - 값을 바꾸지 못함
final int age; // 암묵적인 규칙에 어긋남
상수는 단어와 단어 사이를 '_'로 구분한다.
final int NAXAGE; // 암묵적인 규칙에 어긋남
final int MAX_AGE;
예제
A_명명규칙
/* 패키지 선언부
* 클래스가 속한 패키지에 대한 선언을 반드시 해 주어야 한다.
* 모든 클래스 파일의 가장 첫 줄에 작성한다.
*/
package com.kh.variable;
// 클래스 선언부
public class A_변수선언 {
/* 패키지가 다르면 같은 이름의 클래스도 만들 수 있다.
* 클래스의 이름은 사실 패키지를 포함한 이름이다.
* ex) com.kh.variable.A_변수선언 <- 클래스의 fullName이다.
*/
public void declareVariable() {
/* 숫자형 */
// 정수형
byte bnum;
short snum;
int inum;
long lnum;
// 실수형
float fnum;
double dnum;
// 문자형
char ch;
// 논리형
boolean isTrue;
// 문자열(참조형)
String str;
// 변수 값 대입 후 출력
bnum = 1;
snum = 2;
inum = 4;
lnum = 8L;
fnum = 4.0f; // float는 리터럴에 반드시 f를 붙여야 한다.
dnum = 8.0; // double은 실수 값을 바로 입력해도 된다.
isTrue = true; // true or false 값만 저장할 수 있다.
ch = 'a';
str = "a"; // 문자를 한 개만 써도 리터럴을 String 리터럴로 사용해야 한다.
System.out.println("bnum의 값 : " + bnum);
System.out.println("snum의 값 : " + snum);
System.out.println("inum의 값 : " + inum);
System.out.println("lnum의 값 : " + lnum);
System.out.println("fnum의 값 : " + fnum);
System.out.println("dnum의 값 : " + dnum);
System.out.println("isTrue의 값 : " + isTrue);
System.out.println("ch의 값 : " + ch);
System.out.println("str의 값 : " + str);
}
public void initVariable() {
// 변수의 선언과 동시에 초기화
// 숫자형
// 정수형
byte bnum = 1;
short snum = 2;
int inum = 4;
long lnum = 8L;
// 실수형
float fnum = 4.0f;
double dnum = 8.0;
// 논리형
boolean isTrue = true;
// 문자형
char ch = 'a';
// 문자열
String str = "a";
System.out.println("bnum의 값 : " + bnum);
System.out.println("snum의 값 : " + snum);
System.out.println("inum의 값 : " + inum);
System.out.println("lnum의 값 : " + lnum);
System.out.println("fnum의 값 : " + fnum);
System.out.println("dnum의 값 : " + dnum);
System.out.println("isTrue의 값 : " + isTrue);
System.out.println("ch의 값 : " + ch);
System.out.println("str의 값 : " + str);
}
public void namingRuleTest() {
// 1. 대소문자 구분한다.
String userName;
String username;
// 2. 예약어를 사용하면 안된다.
//boolean true; // 예약어 사용해서 컴파일 에러 발생
boolean True; // 암묵적인 규칙에 의해 권장하지 않음
// 3. 숫자로 시작하면 안된다.
int age1;
//int 1age; // 숫자로 시작해서 에러 발생
// 4. 특수 문자는 '_'와 '$'만 허용한다.
//double sh@rp; // 다른 특수 문자 사용시 에러 발생
double $harp;
// 5. 여러 단어으이 이름은 두 번째 단어의 앞 글자부터 첫 글자마다 대문자로 표기
//낙타봉 표기법(camel case)
String ageOfVampire;
String ageofvampire; // 에러가 발생하지 않지만 권장하지 않음(큰일남)
// 6. 한글 사용 가능(권장하지 않음 -> 운영체제별 인코딩 방식이 다름)
String 이름;
// 7. 상수의 경우 대문자로 표기
final int AGE; // final 상수 - 값을 바꾸지 못함
final int age; // 암묵적인 규칙에 어긋남
// 8. 상수는 단어와 단어 사이를 '_'로 구분한다.
final int NAXAGE; // 암묵적인 규칙에 어긋남
final int MAX_AGE;
}
public static void main(String[] args) {
A_변수선언 test = new A_변수선언();
//test.declareVariable(); // 변수 선언 후 초기화
test.initVariable(); // 변수 선언과 동시에 초기화
test.namingRuleTest(); // 명명규칙
}
}
B_키보드입력테스트
package com.kh.variable;
import java.io.BufferedReader; // 패키지 java.io의 BufferedReader 클래스를 이용 (재사용성)
import java.io.IOException;
import java.io.InputStreamReader;
// import java.util.Scanner; // ctrl + 1
public class B_키보드입력테스트 {
/*
* java.io 패키지에서 제공되는 클래스를 이용한 키보드 입력 테스트
*/
public void inputTest1() {
// 구경용 코드
BufferedReader br
= new BufferedReader(new InputStreamReader(System.in));
// println과 print는 줄 바꿈 차이이다.
System.out.print("정수 한 개를 입력하세요 : ");
try{
// 입력한 글자를 문자열 형태로 읽어들임
String value = br.readLine();
// 에러 문자열에 *3을 할 수 없음
// System.out.println("계산 결과 : " + (value * 3));
// 문자열 형태의 숫자를 실제 숫자 데이터로 변환 : parsing
int number = Integer.parseInt(value);
System.out.println("계산 결과 : " + (number * 3));
}catch(IOException e) {
e.printStackTrace();
}
}
public void inputTest2() {
/* java.util 패키지의 Scanner 클래스 사용
* java 5버전 이후부터 추가됨
*
* 클래스의 fullName을 사용하면 import를 하지 않아도 된다.
* 입력을 받기위해서 필요한 구문
*/
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.print("이름을 입력하세요 : ");
String name = sc.nextLine(); // 한 줄에 대한 정보를 읽어온다.
System.out.print("나이를 입력하세요 : ");
int age = sc.nextInt(); // 정수 값을 읽어온다. parsing 필요없음
System.out.print("키(소수점 첫째 자리까지 입력) : ");
double height = sc.nextDouble(); // 실수로 값을 읽어온다. // runtime error - 실행 중 오류
System.out.println(name + "님은" + age + "세 이며, 키는" + height + "cm 입니다.");
}
public static void main(String[] args) {
B_키보드입력테스트 test = new B_키보드입력테스트();
//test.inputTest1();
test.inputTest2();
}
}
C_변수값변경테스트
package com.kh.variable;
import java.util.Scanner;
public class C_변수값변경테스트 {
public void changeValue() {
// 변수 선언
String name; // 이름
char gender; // 성별
int age; // 나이
double height; // 키
// 초기화
name = "김진호";
gender = 'M';
age = 20;
height = 180.5;
System.out.println(name + "님의 개인 정보");
System.out.println("gender :" + gender);
System.out.println("age : " + age);
System.out.println("height : " + height);
// 키보드로 입력 받아 변수에 저장된 값 변경
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하세요 : ");
name = sc.nextLine(); //문자열
System.out.print("성별을 입력하세요 : ");
gender = sc.next().charAt(0); //문자열 - 문자를 읽어오는 메소드가 없다. / charAt(0) -> 첫 번째 글자를 char로 반환
System.out.print("나이를 입력하세요 : ");
age = sc.nextInt();
System.out.print("키를 입력하세요 : ");
height = sc.nextDouble();
System.out.println(name + "님의 개인정보");
System.out.println("gender : " + gender);
System.out.println("age : " + age);
System.out.println("height : " + height);
String str = "안녕하세요";
System.out.println(str.charAt(0));
System.out.println("안녕하세요".charAt(0));
}
public static void main(String[] args) {
C_변수값변경테스트 test = new C_변수값변경테스트();
test.changeValue();
}
}
'JAVA > 이론 정리 및 예제' 카테고리의 다른 글
[JAVA/자바] #3_0 제어문 / beforeTest (0) | 2021.09.05 |
---|---|
[JAVA/자바] #2_2 연산자 실습 문제 (0) | 2021.09.03 |
[JAVA/자바] #2_1 연산자 / 예제 (0) | 2021.09.03 |
[JAVA/자바] #1_3 변수, 형변환 실습 문제 (0) | 2021.09.03 |
[JAVA/자바] #1_2 변수 - 상수, 형변환, 오버플로우 / 예제 (0) | 2021.09.03 |