심심한잉여의 잡동사니

JAVA - 변수 2 본문

코딩일기/Java

JAVA - 변수 2

심심한잉여 2021. 8. 4. 01:39
반응형

 

변수 2

 

 


데이터 오버플로우

 

 

오버플로우란 넘친다는 뜻이며 말 그대로 데이터가 넘친다는 뜻이다.

 

byte 자료형 기준으로 최대 127까지 그리고 최소 -128까지 표현이 가능하며

최대 127까지 표현을 했는데 그 수를 넘어간다면 다시 최소값인 -127부터 다시 카운트 된다.

 

예를 들어 128이라면 최대값인 127을 1을 넘었으므로 -128을 표현하게 되는것이다.

 

내가 봤을 때 느낀것은 앞자리가 하나 올라간것으로 느껴졌으며

 

1byte가 가득 찻으니 2byte를 다시 채우는 느낌이였다.

 


형변환

 

 

출력 시 혹은 연산 시 활용하면 좋을 것으로 보인다.

 

형변환은 말 그래도 자료형을 변환시키는 것이며

 

정수를 실수, 혹은 문자로 표현을 할 때 사용한다.

 

대신 형변환을 하는 경우 데이터 유실이 될 수 있다.

 

예를 들어 실수형(double)의 데이터를 정수형(int)으로 바꾸는 경우 소수점이 유실 된다.

 

이를 활용할 수 있지만 의도치 않게 소수점이 없어지는 경우를 잘 생각해야 된다.

 


자동 형변환

 

변환하려는 자료형이 변환 하고자하는 자료형보다 작은 경우 별도의 형변환 없이 입력하면

자동으로 형변환이 된다.

 

예시) byte -> short -> int -> long -> float -> double

 

이 경우에는 아래와 같이 문제 없이 형변환이 가능하다.

 

byte bNum = 127;
short sNum = bNum;
int iNum = sNum;
long lNum = iNum;
float fNum = lNum;
double dNum = fNum;

 


강제 형변환

 

 

 

강제 형변환이란 값의 범위가 큰 자료형을 값을 범위가 작은 자료형으로 변환할 때 사용이 되는

형변환 방법이다.

주의해야 할 점은 강제 형변환 시 데이터 손실이 발생 될 수 있으며 해당 손실을 감수하고 변환을 하는 경우에

사용한다.

 

double -> int

 

이 경우 소수점이 손실이 되니 주의가 필요하다.

 

 

 


변수와 메모리구조

 

프로그래밍은 RAM(메모리)를 사용하며

RAM(메모리)는

 

STATIC = 고정된[고정적인]

 

HEAP = (아무렇게나 쌓아 놓은) 더미

 

STACK = (정돈하여) 쌓다[포개다]; 쌓이다, 포개지다

 

세 영역으로 나눠지며 각 용어의 사전적 의미는 옆에 나열해두었다.

 

간단하게 이해하기로는 이에 대해 계속해서 공부해야겠다.

 

Static -> 클래스와 동일하다고 볼 수 있으며 final과 같이 고정시켜 둘 때 사용을 하는 것 같다.

지역변수로 해둔 다음 static을 걸어두지 않으면 사용이 불가하여 사용을 한다

 

HEAP -> new연산자에 의해 동적으로 할당하고 저장되는 공간 = 참조형이 할당되는 공간 이라고 이해가 됐다.

따라서 String과 같은 참조형은 여기로 들어가며 stack영역에 있는 변수가 Heap에서 끌어오는 것으로

이해가 되었다.

 

STACK -> 기본 자료형의 변수명과 초기화 값이 있으며 참조 자료형의 변수명도 이곳에 할당이 되는것으로 이해가

되었다. 또한 메소드가 실행되는 동안 해당 메소드에 대한 변수들은 전부 호출되며 return되면 사라지는

것 같다.

 

 

 


출력 메소드

 

이는 가장 흔하게 사용되는 println, print, printf 에 대해 배웠다.

시스템 -> 아웃풋 -> 프린트라인메소드 를 출력하는 것

아무 생각이 없이 영상을 보며 그냥 사용을 했으나 이 또한 메소드라는 것에 대해 신기함을 느꼇다.

 

 

System.out.println(); = 문장 출력 후 줄바꾸기

System.out.print(); = 문장 출력 (줄바꿈 x)

System.out.printf(); = 포멧 문장 출력(c언어에서 주로 사용되며 자바에서는 거의 안쓰이므로 기본소양 숙지)

 

printf 로 출력 시 메소드 안에 형식에 맞는 변수를 해줘야 한다.

 

%d = 정수형

%o = 8진수 , %x = 16진수

%f = 실수(소수점 아래 6자리), %e : 지수형태표현, %g : 대입 값 그대로

%A : 16진수 실수

%b = 논리형

 

해당 변수를 쓴 후 메소드 사용법과 같이 콤마(,) 후 순서에 맞춰 변수를 입력

 

원시적인 프린트출력법으로 활용에 따라 편하게 사용이 가능 할 수 있을 것 같다.

(실무에서는 쓸일이 잘 없다고 함)

 

String str = "Hello world"; 

System.out.println(str); // "Hello world" 출력 후 줄바꿈 
System.out.print(str); // "Hello world" 출력
System.out.printf("%s",str); // "Hello world" 출력

 


스캐너

 

Scanner 클래스를 불러와

콘솔을 통해 입력값을 받을 때 주로 사용함

 

클래스를 불러오는 것이므로 사용법은 동일하다.

 

import가 우선적으로 이뤄져야 하며

 

import java.util.Scanner;

 

Scanner를 생성해준다.

 

Scanner sc = new Scanner(System.in);

 

그리고 사용 할 메소드를 불러온다.

 

정수, 실수, 문자열에 맞춰

 

정수 = sc.nextInt();

실수 = sc.nextDouble();

문자열 = sc.nextLine();

 

보통은 수정 및 사용이 간편할 수 있도록 변수에 사용한다.

 

 

 

int tempInt = sc.nextInt();
double tempDb = sc.nextDouble();
String str = sc.nextLine();

 

 

반응형

'코딩일기 > Java' 카테고리의 다른 글

JAVA - 1차원 배열  (0) 2021.08.12
JAVA - 반복문  (0) 2021.08.12
JAVA - 조건문  (0) 2021.08.10
JAVA - 연산자의 종류와 우선순위  (0) 2021.08.04
JAVA - 변수  (0) 2021.08.04