[혼공자] chapter02 - 변수와 타입

나봉·2025년 1월 13일
0

13기 혼공자

목록 보기
3/14

02-1 변수

  • 변수(variable) : 값을 저장할 수 있는 메모리 번지에 붙인 이름, 값을 저장하고 읽을 수 있음
  • 변수 선언 : 어떤 타입의 데이터를 저장 할 것인지 변수 이름은 무엇인지 결정
    ex) int age;
    • 변수 이름 짓기 규칙
    1. 첫 번째 글자는 문자이거나 '$', '_'이어야 하고 숫자로 시작 할수 없고 문자가 포함될 수 없다.
    2. 영어 대소문자를 구분한다.
    3. 첫 문자는 영어 소문자로 시작하고 다른 단어가 붙을 경우 첫 문자를 대문자로 한다.
    4. 문자수의 제한은 없다.
    5. 자바 예약어는 사용할 수 없다.
    • 변수 사용 : 변수의 값을 읽거나 변경하는 것
  • 변수 사용 범위 : 자신이 선언된 위치에서 자신이 속한 블록 내까지만 사용이 가능, 그 외는 사용할 수 없음
public class VariableScopeExample {

	public static void main(String[] args) {

		int v1 = 15;
		if (v1 > 10) {
			int v2;
			v2 = v1 - 10;
		}
		//int v3 = v1 + v2 + 5; // 에러 발생 v2는 if 안에서 선언 되었기 때문
	}
}

02-2 기본 타입

  • 정수 타입 : 정수를 저장할 수 있는 타입
    1. byte(1byte)
    2. short(2byte)
    3. char(2byte)
    4. int(4byte)
    5. long(8byte)

      정수 리터럴

      • 2진수 : 0b 또는 0B로 시작하고 0과 1로 구성 ex) 0b1011 -> 11
      • 8진수 : 0으로 시작하고 0~7 숫자로 구성 ex) 013 -> 11
      • 10진수 : 소수점이 없는 0~9 숫자로 구성 ex) 12
      • 16진수 : 0x 또는 0X로 시작하고 0~9숫자와 A,B,C,D,E,F 또는 a,b,c,d,e,f로 구성
        ex) 0xB3 -> 179
  • char 타입 : '(작은 따옴표)로 감싼 하나의 문자 리터럴을 저장할 수 있는 타입, 유니코드로 변환되어 저장
  • String 타입 : "(큰 따옴표)로 감싼 문자열을 저장할 수 있는 타입

    이스케이이프 문자

    • \t - 탭만큼 띄움
    • \n - 줄 바꿈
    • \" - "출력
    • \' - '출력
  • 실수타입 : 소수점이 있는 실수 리터럴을 저장할 수 있는 타입
    1. float(4byte) : float타입으로 저자하고 싶다면 f, F를 붙여 float 타입으로 저장한다.
    2. double(8byte)
  • boolen 타입 : true, false를 저장할 수 있는 타입, 제어문과 조건문의 실행 흐름을 변경하는 데 사용

02-3 타입 변환

  • 자동 타입 변환 : 값의 허용범위가 작은 타입이 허용 범위가 큰 타입으로 저장
    => 크기순 : byte < short < int < long < float < double
    * char 타입보다 허용범위가작은 byte 타입은 char 타입으로 자동 형변환될 수 없다.
    => char 타입은 음수를 포함하지 않는데 byte 타입은 음수를 포함하기 때문에
  • 강제 타입 변환 : 큰 허용범위 타입을 작은 허용범위 타입으로 강제로 형변환
// 강제 형변환
		int intValue = 44032;
		char charValue = (char) intValue;
		System.out.println(charValue);
  • <정수 연산>에서 int 타입보다 작은 byte, short타입의 변수는 <int 타입>으로 자동 형변환되어 연산을 수행

  • <실수 연산>에서 피연산자 중 하나가 double 타입이라면 다른 피연산자도 <double 타입>으로 자동 형변환 후 연산을 수행

  • +연산에서의 문자열 자동 형변환 : 피연산자 오두 숫자일 경우 덧셈연산을 수행, 피연산자 중 하나라도 문자열일 경우 문자열로 자동 형변환후 문자열 결합

		int value = 10 + 2 + 8;
		System.out.println(value); // 20
		
		String str1 = 10 + 2 + "8";
		System.out.println("str1: " + str1); // 128
		
		String str2 = 10 + "2" + 8;
		System.out.println("str2: " + str2); // 1028
		
		String str3 = "10" + 2 + 8;
		System.out.println("str3: " + str3); // 1028
		
		String str4 = "10" + (2 + 8);
		System.out.println("str4: " + str4); // 1010
  • 문자열을 기본타입으로 강제 형변환
		// 문자열에서 기본타입으로 변환
		int value1 = Integer.parseInt("10");
		double value2 = Double.parseDouble("3.14");
		boolean value3 = Boolean.parseBoolean("true");
		
		System.out.println("value1: " + value1); // 10
		System.out.println("value2: " + value2); // 3.14
		System.out.println("value3: " + value3); // true
		
        // 기본타입에서 문자열로 변환
		String str1 = String.valueOf(10);
		String str2 = String.valueOf(3.14);
		String str3 = String.valueOf(true);
		
		System.out.println("str1: " + str1); // 10
		System.out.println("str2: " + str2); // 3.14
		System.out.println("str3: " + str3); // true

02-4 변수와 시스템 입출력

  • System.out.println() : 시스템의 표준 출력 장치, 괄호 안의 내용을 출력하고 줄 바꿈

  • System.out.print() : 괄호 안의 내용을 출력

  • System.out.printf("형식문자열", 값1, 값2, ...) : 괄호 안의 첫 번째 문자열 형식으로 출력

		int value = 123;
		System.out.printf("상품의 가격:%d원\n", value); // 123원
		System.out.printf("상품의 가격:%6d원\n", value); // ---123원
		System.out.printf("상품의 가격:%-6d원\n", value); // 123---원
		System.out.printf("상품의 가격:%06d원\n", value); // 000123원 
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넓이:%10.2f\n", 10, area);
		
		String name = "홍길동";
		String job = "도적";
		System.out.printf("%6d | %-10s | %10s\n", 1, name, job);

=> 형식 문자열에 포함될 값이 2개 이상일 경우에는 값의 순번을 알려 준다.
1$ 첫번 째 값, 2$ 두번 째 값

System.out.printf("이름: %1$s, 나이: %2$d", "김자바", 25);
  • System.in.read() : 표준 출력 장치
    public static void main(String[] args) throws Exception {
    
    		int keyCode;
    		
    		while(true) {
    			keyCode = System.in.read();
    			System.out.println("keyCode: " + keyCode);
    		}
    	}
=> System.in.read()의 단점은 키코드를 한개 씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없다.
  • Scanner scanner = new Scanner(System.in);
public class ScannerExample {

	public static void main(String[] args) throws Exception{

		Scanner scanner = new Scanner(System.in);
		String inputData; // 키보드를 눌렀을 때 문자열
		
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: " + "\"" + inputData + "\"");
			if (inputData.equals("q")) {
				break;
			}
		}
		System.out.println("종료");
		
	}

}
  • 기본 타입의 동일한지 비교할 때에는 ==를 사용, 문자열이 동일한지 비교할 때에는 equals()를 사용

0개의 댓글

관련 채용 정보