알고리즘 문제

Java 변수, 데이터 타입

정리제이 2024. 7. 22. 16:28

변수

변하는 수

int number : 변수

 

 

상수

변하지 않는 수

final int number : 상수  

final을 쓰면 상수가 되면서 한 번 저장한 값은 바뀌지 않는다.

상수에는 변하지 않는 수 를 저장 하면 됨 EX) PI -- 파이 : 3.14

 

선언 

int number : 변수 선언

 

초기화

1. int number = 10;  : 변수에 값을 저장(초기화) 

2. int number = 12;      number = 10;   : 변수는 값 바꿀 수 있음 O

3. final int number = 12;   number = 11;  : 상수는 불가능 함  X

 

 

기본형

실제 값을 저장

Strack영역에 저장

 

boolean  : 논리형 변수

true, false 2개의 값만 넣을 수 있음

 

char  : 문자형 변수 (' 따옴표 사용 ')

 ' A ' , ' 1 ' 

문자 하나만 저장할 수 있음

문자 뒤에 \0(널문자) 가 없다

1byte만 쓴다

 

byte > short > int > long  : 정수형 변수

숫자를 저장할 수 있음

저장할 수 있는 값의 크기가 왼쪽부터 커짐 

1byte > 2byte > 4byte > 8byte

long l = 12039123L

long 은 값 뒤에 접미사 L을 적어야 함

 

1byte = 8bit

bit = 0과 1을 표현하는 최소단위

byte = -128 ~ 127 (총 256)

byte는 8자리를 가지고 있다 

한 자리마다 bit고 한 자리마다 0과 1이 있다

2^8 = 256 = 1byte 가 된다.

 

float, double  : 실수형 변수

실수를 저장할 수 있음

실수는 표현범위가 매우 넓어서 정수형 변수에 담지 못할 수 있다.

 

float 범위 : 3.4 * 10^38

double 범위 : 1.7 * 10^308

 

float f = 3.123F

float 은 값 뒤에 접미사 f를 적어야함

 

1. 고정소수점

뒤에 나올 소수점을 미리 제한해서 쓰는 방식

 

2.부동소수점

부호와 가수와 지수를 구분해서 저장하고 이 값들을 곱한 값을 저장하는 방식

 

참조형 = "주소형 변수" 라고도 함 

뭔가 복잡한 것 (한번에 저장이 어려운 거)

별도로 저장한 주소값을 따로 참조해서 사용

실제 값이 아닌 원본 값의 주소값을 저장 

Heap(동적으로 할당된 메모리 영역) 영역에 원본값이 있음

주소값은 Stack영역에

 

 

String : 문자열 변수 (" 큰 따옴표 사용 ")

문장을 저장할 수 있다.

" apple ", " 텍스트 "

몇byte를 쓸 지 몰라서

\0(널문자)가 함께 저장된다.

 

그 외 

Object, Array, List

단일 저장공간에 담을 수 없는 값을 저장 

 

배열

[대괄호 안 에 값이 하나씩 들어가 있음 여러 값을 가질 수 있다]

int[] a = {1,2,3}

 

 

 

래퍼클래스(Wrapper Class)

기본형 변수를 클래스로 한번 감싸는 변수

기본 타입 클래스 변수
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

 

래퍼클래스 사용

int number = 21;

Integer num = new Integer(number);  // 옛날 방식 이제는 사용안함

Integer num = number;                    // 이걸 사용   (박싱)

 

System.out.println(num.intValue());   //  (언박싱)

 

숫자와 문자

아스키코드

문자를 숫자값으로 저장을 할 때 아스키코드(10진)로 저장이 된다

아스키코드 표

 

동적 정적

동정 : 알 수 없을 때

고정되지 않는 값

Heap

 

정적 : 알 수 있을 때

고정된 값

Stack

 

형 변환 : 변수 타입을 바꾸는 방법

수동으로 형 변환을 할 때           // 이렇게 수동으로 형 변환을 하게 되면 데이터 값에 손실이 일어남 

double or float a = 1010.22;

int number = (int)a;

실수 -> 정수로 바뀌면 소주점 자리는 사라짐

정수 -> 실수

int a = 1010.22;

double or float number = (double or float)a;

 

 

 

byte -> short -> int -> long -> float -> double

순으로 자동 형 변환이 된다.

자동 형 변환이 될 때

byte a = 127;

int number = a;  // 자동으로 형변환 됨

 

char -> int 변환 가능 

이렇게 할 때에는 아스키코드로 변환됨

 

 

카멜케이스(소문자로 시작 , 단어마다 앞 알파벳을 대문자로)

변수, 함수, 메서드, 속성 등의 이름에 주로 사용.

Ex) byteNumber,  javaBasicByteNumber

 

파스칼케이스(대문자로 시작, 단어마다 앞 알파벳 대문자로)

클래스, 타입, 인터페이스 등의 이름에 주로 사용.

Ex) ByteNumber,  JavaBasicByteNumber