일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 부산 맛집
- 쿠팡매크로
- 반려견 더위
- 홀리스틱 유기농
- 반려견 열사병
- 강아지종류
- 반려견 종류
- 강아지
- 반려견 유기농
- 강아지 유기농
- 반려견 사료등급
- 티켓팅매크로
- 동인천 맛집
- 티켓팅메크로
- 국비지원 예습
- 반려견 유기농 사료
- 반려견
- 강아지 열사병
- 강아지 유기농 사료
- 반려견 홀리스틱
- 서울대입구 맛집
- 쿠팡메크로
- 강아지 더위
- 샤로수길 맛집
- 강아지 종류
- 샤로수길 데이트
- 닥스훈트
- 신포동 맛집
- 강아지 홀리스틱
- 자동화봇
- Today
- Total
심심한잉여의 잡동사니
JAVA - 변수 2 본문
변수 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 |