컴퓨터프로그래밍및실습 (2022년)/0905

From DISLab
Revision as of 15:43, 18 July 2022 by Swpark (talk | contribs)
Jump to navigation Jump to search

변수

  • 변수란 기억 장소(메모리)에 대한 별칭이다.

변수의 선언

int age;  // 정수(int) 값을 저장할 수 있는 age 변수 선언
double value; // 실수(double) 값을 저장할 수 있는 value 변수 선언

int x, y, z;  // 여러 개를 선언할 수 있음

변수 이름을 붇이는 규칙

  1. 첫 번째 글자는 문자이거나 $, _ 이어야 하고 숫자로 시작할 수 없다. (필수)
  2. 영어 대소문자가 구분된다. (필수)
  3. 첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자는 대문자로 한다. (관례) (maxSpeed, firstName, carBodyColor)
  4. 문자 수(길이)의 제한은 없다.
  5. 자바 예약어는 사용할 수 없다. (필수)
분류 예약어
기본 데이터 타입 boolean, byte, char, short, int, long, float, double
접근 지정자 private, protected, public
클래스와 관련된 것 class, abstract, interface, extends, implements, enum
객체와 관련된 것 new, instanceof, this, super, null
메소드와 관련된 것 void, return
제어문과 관련된 것 if, else, switch, case, default, for, do, while, break, continue
논리값 true, false
예외 처리와 관련된 것 try, catch, finally, throw, throws
기타 transient, volatile, package, import, synchronized, native, final, static, strictfp, assert


변수의 사용

int score;    // 변수 선언
score = 90;   // 값 저장

int score = 90; /// 선언과 동시에 값 저장

Literal

  • 리터럴(literal) : 소스 코드 내에서 직접 작성된 값
    • 정수 리터럴 : 0, 75, -100 (10진수), 02, -04 (8진수), 0x5, 0xA, 0xB3, 0xac08 (16진수)
    • 실수 리터럴 : 0.25, -3.14 (10진수), 5E7, 0.12E-5 (0.12×10-5)
    • 문자 리터럴 : 'A', '한', '\t', '\tn'
Escape 문자 용도 Unicode
\t 수평 탭 0x0009
\n 줄 바꿈 0x000A
\r 리턴 0x000D
\" "(큰 따옴표) 0x0022
\ '(작은 따옴표) 0x0027
\\ \ 0x005C
\u16진수 16진수에 해당하는 유니코드 0x0000 ~ 0xFFFF

변수의 초기화

  • 초기화하지 않고 사용하면 오류
int value;
int result = value + 10; // value 값을 초기화하지 않아 오류가 남
  • 초기화하여 사용한 예
int value = 30;
int result = value + 10;

변수의 사용 범위

  • 변수는 블록 범위 내에서 정의, 사용할 수 있음
public class VariableScopeExample {
    public static void main(String[] args) {
        int v1 = 15;
        if (v1 > 10) {
            int v2 = v1 - 10;
        }
        int v3 = v1 + v2 + 5; // v2 변수를 사용할 수 없기 때문에 컴파일 에러가 생김
    }
}

데이터 타입 (Data Type)

기본(원시: primitive) 타입

값의 종류 기본 타입 메모리 사용 크기 저장되는 값의 범위
정수 byte 1 byte (8 bits) -27 ~ 27-1 (-128 ~ 127)
char 2 bytes (16 bits) 0 ~ 216-1 (\u0000 ~ \uFFFF, 0 ~ 65535)
short 2 bytes (16 bits) -215 ~ 215-1 (-32,768 ~ 32,767)
int 4 bytes (32 bits) -231 ~ 231-1 (-2,147,483,648 ~ 2,147,483,647)
long 8 bytes (64 bits) -263 ~ 263-1
실수 float 4 bytes (32 bits) (+/-)1.4E-45 ~ (+/-)13.4028235E38
double 8 bytes (64 bits) (+/-)4.9E-324 ~ (+/-)1.7976931348623157E308
논리 boolean 1 byte (8 bits) true, false

정수 타입

  • byte, char, short, int, long
  • 음수는 2의 보수로 표현함

byte

이진수 십진수
01111111 127
01111110 128
... ...
00000001 1
00000000 0
11111111 -1
11111110 -2
... ...
10000001 -127
10000000 -128

  • 예제 코드
public class ByteExample {
    public static void main(String[] args) {
        byte var1 = -128;
        byte var2 = -30;
        byte var3 = 0;
        byte var4 = 30;
        byte var5 = 127;
        // byte var6 = 128; // 컴파일 에러

        System.out.println(var5);
        var5++;
        System.out.println(var1); // var1은 왜 음수가 되는가?
    }
}
  • 실행 결과
127
-128

char

  • 예제 코드
public class CharExample {
    public static void main(String[] args) {
        char c1 = 'A';
        char c2 = 65;
        char c3 = '\u0041'; // 10진수로 표현하면 65

        char c4 = '가';
        char c5 = 44032;
        char c6 = '\uac00'; // 10진수로 표현하면 44032

        int uniCode = c1;
        
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
        System.out.println(uniCode);
    }
}
  • 실행 결과
A
A
A
가
가
가
65
  • String과 char
String name = "홍길동";

char c1 = '';  // 컴파일 에러
char c2 = ' '; // 에러가 나지 않음. 스페이스 문자

String str = ""; // 빈 문자열

int

  • 10진수로 10인 정수(int)의 경우 4 바이트로 다음과 같이 표현
00000000 00000000 00000000 00001010
1 byte 1 byte 1 byte 1 byte

  • 예제 코드 (int & long)
public class IntExample {
    public static void main(String[] args) {
        int var1 = 10;  // 10진수로 저장
        int var2 = 012; // 8진수로 저장
        int var3 = 0xA; // 16진수로 저장

        System.out.println(var1);
        System.out.println(var2);
        System.out.println(var3);
    }
}
  • 실행 결과
10
10
10

long

  • 예제 코드
public class LongExample {
    public static void main(String[] args) {
        long var1 = 10;
        long var2 = 20L;
        // long var3 = 1_0000_0000_0000; // 컴파일 에러
        long var4 = 1_0000_0000_0000L;

        System.out.println(var1);
        System.out.println(var2);
        System.out.println(var4);
    }
}
  • 실행 결과
10
20
1000000000000