[22.10.26] 5일차 [백엔드] Java 자료형 변수, 리터럴

W·2022년 10월 26일
0

국비

목록 보기
9/119

자료형

- 변수 : 기억장소에 이름을 부여하고 어떤 데이터를 저장할지 데이터 형태 지정, 초기값을 저장
- 변수 선언(기억장소 크기 지정, 이름부여)
- 초기값 할당(기억장소 값을 저장)

int : 데이터 형태 - 정수형, 기억장소 4바이트 크기 지정

컴퓨터 저장 0,1 저장 → bit 1비트에 0,1 저장 가능
1byte → 8bit
4byte → 32bit

기본자료형

  • 정수형 : 소수점 없는 수
    byte(1byte), short(2byte), int(4byte), long(8byte)
  • 실수형 : 소수점 있는 수
    float(4byte), double(8byte)
  • 문자형 : 글자한자 저장 → 정수(양수)
    char(2byte)
  • 논리형 : True/False
    boolean(1byte)

정수자료형

10진수 10 → 2진수 8x1+ 4x0 + 2x1 + 1x0 = 1010(2)

** 범위
byte(1byte) : -2의 7승 ~ 2의 7승-1 (-128 ~ 127)
short(2byte) : -2의 15승 ~ 2의 15승-1 (-32768 ~ 32767)
int(4byte) : -2의 31승 ~ 2의 31승-1(-2147483648 ~ 2147483647)
long(8byte) : -2의 63승 ~ 2의 63승-1 
byte b=10;
     b=128 -> 범위 초과. error
     
기본적으로 숫자값을 int 인식
long 쓰려면
숫자에 long형을 표시하는 L,l 표시.
ex) long num2= 12345678900L;

문자자료형

컴퓨터는 문자를 0,1로 조합해서 나타냄
* A -> 0,1 조합 65로 전환

  • 문자 인코딩 : 문자를 정해진 코드 값으로 변환
  • 아스키(ASCII)코드 : 문자 인코딩
    영문자 숫자 특수 문자를 나타내는 문자세트
    아스키코드표
  • 아스키코드 1byte(256개) : 대문자, 소문자, 특수문자, 기호
  • 유니코드 : 한글, 다른 언어 문자 복잡 2byte 필요
    각 언어 표준 인코딩을 정의
    char 2byte
char a = 'A' -> 문자는 작은 따옴표로 묶는다. 큰 따옴표는  error
System.out.println(a); // 'A' 문자 출력
System.out.println((int)a); // 'A' 정해진 코드값 변환된 내용 출력 -> int 형으로 변환

char ch3 = 66;
System.out.println(ch3); // char형 B로 출력됨
		
int ch4=67;
System.out.println(ch4);
System.out.println((char)ch4); // C로 출력됨 ->  char 형으로 변환
***
'A' → 65 인코딩
65 → 'A' 디코딩

🤷‍ char 값은 음수가 없다.

cf) String ch="ABC"; // 여러개 문자를 저장 -> 문자열 -> 기본 자료형 X 참조형 O

  • 유니코드 : 전세계 모든 문자를 처리할 수 있도록 만든 표준 문자 전산 처리방식
char ch9 = '한';
System.out.println(ch9); // 한으로 출력
// 유니코드 16진수
char ch10 = '\uD55C';
System.out.println(ch10); // 한으로 출력

유니코드 사이트 : https://home.unicode.org/

UTF-8, UTF-16 인코딩

  • UTF-16 2바이트 표현 → 자바에서 사용. 영문은 1byte로 표현할 수 있는데, 기억장소 낭비
  • UTF-8 1~4바이트 표현 → 기억장소 낭비가 적고 속도가 빠름. 인터넷에서 많이 사용 함

실수자료형

  • 실수형 : 소수점이 있는 숫자
    float(4byte), double(8byte)
    부동 소수점 방식 : 0.1 -> 1.0 * 10의 -1승
    float 부호 1비트, 지수(승) 8비트, 가수 23비트 -> 32비트
    double 부호 1비트, 지수(승) 11비트, 가수 52비트 -> 64비트
    실수 = double 형 대표(기본인식)
double dnum = 3.14;
float fnum = 3.14; -> error 발생
float fnum = 3.14F; -> 숫자 뒤에 F 또는 f 표시해줘야 됨

논리자료형

참, 거짓 값을 나타내는데 사용
boolean(1byte)
남여, 결혼여부,...

boolean b = true;
boolean c = false;
기억장소(변수) -> 기억장소 크기, 자료형 지정

자바 10버전부터는 컴파일러가 자료형 추측해서 인식
var 사용 가능
var num = 10; // int 
var dNum=10.0; // double
var str="hello"; // String

상수와 리터럴

상수

변하지 않는 수, 상수 이름은 대문자로 지정

원면적 : 반지름 x 반지름 x 3.14 → 3.14는 상수

int r = 10; //반지름
// final → 값을 변경 못하게 막아줌
final double PI = 3.14;// 원주율 3.14 
PI = 4.15 ; 값 변경 → 에러 발생
System.out.println("원의 면적 : " + (r*r*PI)); → 출력 : 원의 면적 : 314.0

final int NUM;
NUM = 0; // 초기값
NUM = 10; → 에러 발생

리터럴

프로그램에서 사용하는 숫자, 문자, 논리값
ex) 10, 3.4, 'A', true
리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수풀에 놓임.
예를 들어 int num = 3; 문장에서 값 3이 메모리 공간 어딘가에 존재해야 num 변수에 그 값을 복사 할수 있음. 즉 숫자가 변수에 대입되는 과정은 일단 숫자 값이 어딘가 메모리에 쓰여 있고, 이 값이 다시 변수 메모리에 복사되는 것.

문자열 데이터

참조형 자료형
"" 큰따옴표 표현, 0개 이상 문자
String 타입 → 참조 데이터 타입, 기본 데이터 타입 아님

"Hello, World" 출력
System.out.println("Hello World");
		
// 변수에 저장 => 출력
String str="홍길동";
System.out.println(str);
        
"안녕하세요
자바 프로그래밍" 출력
// 이스케이프 문자 줄바꿈(\n), 탭(\t)
// 다음줄 이동 \n
System.out.println("안녕하세요\n자바\t프로그래밍");

0개의 댓글