JAVA/JAVA BASIC

[JAVA] 변수와 기본타입 & 제어문자

아잠만_ 2024. 3. 5. 14:45

변수(Variable)

저장하기 위한 공간(메모리에 저장)

변수 선언

타입 이름;

(변수 선언 시 저장된 값은 마지막에 지정된 값을 저장함)

1. 선언 후 값 지정
public static void main(String[] args) {
	int x;
	int y, z; //같은 변수는 쉼표로 선언 가능
	x=1;
	y=2;
	z=3;
}
2. 선언과 함께 값 지정
public static void main(String[] args) {
	int x=1;
	int y=2;
	int z=3;
}

 

블록

클래스 블록, 메소드 블록

(블록을 벗어나면 그 변수를 사용할 수 없음)

로컬 변수

메소드 블록 내에 선언된 변수를 로컬 변수

로컬 변수는 메소드 블록 내에서만 사용되고 메소드 실행이 끝나면 자동 삭제

더보기
//클래스 블록 시작
public class JavaVar2 {
	int c = 10;
	
	// 메인 메소드 블록 시작
	public static void main(String[] args) {
		int a = 10;
		
		// 1번 블록 시작
		{
			int b = 7;		//1번 블록 시작 전에 b라는 변수가 선언되었다면 불가능
			System.out.println(a);
		// 1번 블록 종료
		}

		int b = 5;			//1번블록의 변수 b와 관계없는 변수
		System.out.println(b);
		// 메인 메소드 블록 종료
	}

	// 메소드1 블록 시작
	public void method1() {
		int a = 5;			//메인 메소드의 변수 a와는 관계없는 변수
		System.out.println(c);	//클래스 변수 c
	// 메소드1 블록 종료
	}

//클래스 블록 종료
}
int d = 8;
	{
	// 사용 가능한 변수 d
	int e = 10;
			{
				// 사용 가능한 변수 d e
				int f = 12;
				// 사용 가능한 변수 d e f
			}
			// 사용 가능한 변수 d e
		}
        // 사용 가능한 변수 d

변수 규칙

  1. 첫 번째글자는 문자거나 ' $ ', ' _ ' 이어야하고, 숫자로 시작 X
  2. 영어 대소문자를 구분
  3. 첫 문자는 소문자로 시작하되 다른 단어가 붙을 경우 첫 문자를 대문자로 함( 관례 ) > 카멜식
  4. 문자의 길이 제한은 없음
  5. 자바 예약어는 사용할 수 없음

예약어

자바 언어에서 의미를 가지고 사용되는 단어, 변수 이름으로 사용할 경우 컴파일 에러 발생

(예 : 기본 타입, 논리값, 클래스 관한것, 메소드 관한 것 등등)

 


기본 타입

기본타입 정수타입 byte, char, short, long
실수타입 float, double
논리타입 boolean

정수타입

byte 1 byte - 128 ~ 127
short 2 byte - 32768 ~ 32767
(기본 정수형)    int 4 byte - 2^31 ~ 2^31- 1
long 8 byte - 2^61 ~ 2^61- 1

                                                 long 타입은 데이터 끝에 L(l)을 추가               

                                                 ex) long x = 0.01L

더보기
public static void main(String[] args) {

		byte b1 = 127;
		System.out.println("b1 = "+b1);
//		byte b2 = 128;				범위 초과

		short s1 = 100;
		System.out.println("s1 = "+s1);
		short s2 = (short)(s1 + 10);		//캐스팅 필요
		System.out.println("s2 = "+s2);
		
		int i1 = 100;
		System.out.println("i1 = " + i1);
		int var1 = 200;					//10진법
		int var2 = 0203;				//8진수 0- 
		int var3 = 0x74a;				//16진수 0x-
		int var4 = 0b11011;				//2진수 0b-
		System.out.println("var1="+var1);
		System.out.println("var2="+var2);
		System.out.println("var3="+var3);
		System.out.println("var4="+var4);
		
		long l1 = 10000;
		System.out.println("l1="+l1);
		long l2 = 100000000000L; 		//길이가 길면 L표시
		System.out.println("l2="+l2);
		long l3 = l1+1000;
		System.out.println("l3="+l3);

}

 

문자와 문자열

문자 char 부호 없는 2byte 정수 0~65535 (아스키코드) 한 글자 데이터로 ' ' 선언
문자열 string     복수개의 글자로 구성된 자료 (기본타입X)
" " 로 묶어 선언
public static void main(String[] args) {

	char c1 = 65;
	System.out.println(c1);
	char c2 = 66;
	System.out.println(c2);
		
	char c3 = '가';
	System.out.println((int)c3);
    
	char c4 = 'a';
	char c5 = (char)(c4+1);
	System.out.println(c5);
    
	String s1 = "abcdef";
		
}
더보기
A
B
44032
b

실수타입

float 4 byte 부호 1bit, 지수 8bit, 가수 23bit
(실수형 기본 타입)  double 8 byte 부호 1bit, 지수 11bit, 가수 52bit

                                                          float 타입은 데이터 끝에 f (F) 추가

public static void main(String[] args) {
		float f1	= 3.141592f;
		double d1	= 3.141592;
		
		if(f1==d1) {
			System.out.println("같은값");
		}else {
			System.out.println("다른값");
		}
}
더보기
다른값

정확도가 다르기 때문에 (double이 더 높음) 결과값이 다르게 나온다

논리타입

true 1byte 조건문과 제어문의 실행 흐름을 변경하는데 사용
false
public static void main(String[] args) {

	boolean flag = false;
	System.out.println("flag="+flag);
		
	flag = (1<2);
	System.out.println("flag="+flag);

}
더보기
flag=false
flag=true

제어문자 ( escape 문자)

\n 개행 \\ 역슬래시 문자 출력
\r 개행 \" 큰따옴표를 출력
\r\n 개행 \' 작은따옴표를 출력
\t 수평탭    
public static void main(String[] args) {
	String s2 ="강감찬";
	String s3 ="이순신";
	System.out.println(s2+"\t"+s3);

	System.out.println(s2+"\n"+s3);
	System.out.println(s2+"\r\n\\\""+s3);

	System.out.println("\""+s2+"\"\t\""+s3+"\"");
}​
더보기
강감찬   이순신
강감찬
이순신
강감찬
\"이순신
"강감찬" "이순신"

리터럴 

2진수 8진수 10진수 16진수