2024_01_04(목요일)
복습시간
▣자료타입
1.정수
byte : 1byte
short : 2byte
char : 코드 2byte
int: 4byte
long : 8byte 숫자 L, 숫자1
1)연산( +, -, *, /, %) - JVM (4byte면 int로 처리)
byte 연산 byte, short, int >> 결과 : int
short
int
(byte >long
작은 그릇은 큰그릇으로 담으면 큰그릇으로 바뀐다. > 자동 형변환
2.실수
float(4byte) : 숫자 뒤에 F 또는 f
double : 8byte
3.문자
char : 2byte, 한글자
4.boolean : true, false
파일명 : TypeExam01(day04/type/)생성 - 개념설명
5.char형
-문자(정수)를 저장하는 자료형
-문자를 저장하기 위해서는 작은 따옴표(‘’) 사용 : ‘a’, ‘3’, ‘가’
-유니코드 값을 그대로 입력 가능(‘\u 16진수코드’)
-정수값(10진수 또는 16진수 등 다양한 진법)의 직접 입력 가능
ASCII( 아스키코드 - (특수,숫자,영문)
ex) A를 65 B를 66으로 정했다.
65035자 유니코드
아스키코드가 유니코드에 통합되었다.
▣자료형 변환(=타입변환, 형변환)
-자바는 =(등호)를 기준으로 왼쪽과 오른쪽의 타입(=자료형,형)이 동일해야 함
★중요★
1.자동 타입변환
- 작은 타입이 큰 타입으로 자동으로 변경 되는 것
- 작은 그릇과 큰 그릇이 연산을 하면 큰 그릇에 값이 담김
- 정수형(byte, short, char, int)은 산술연산(+,-,*,/,%)을 하면 자동으로 int타입으로 바뀜
jvm은 기본적으로 4byte 단위로 연산을 처리하기 때문
byte + byte => int
byte < short < int < long < float < double
2.강제 타입 변환(casting)
- 타입 변환 연산자를 사용해 데이터 타입을 강제로 변환하는 연산
- 타입 변환 연산자 : (타입)형태의
(double)sum / 3
(int)avg
- 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것
데이터 손실이 발생할 수 있음
작은 크기 타입 = (작은크기타입) 큰 크기 타입
- 주의 사항 : 사용자로부터 입력받은 값을 변환할 때 값의 손실이 발생하면 안됨
강제 타입 변환을 하기 전에 우선 안전하게 값이 보존될 수 있는지
검사할 필요 있음
정수 타입을 실수 타입으로 변환할 때도 정밀도 손실을 피해야 함
3.문자열 타입변화
-문자열은 어떤 자료형과 묶으면 무조건 문자열
“가나다” + 34 => “가나다34”
3+8+”가나다” => “11가나다”
“가나다” + 3 + 4 => “가나다34”
“가나다” +(3+4) => “가나다7”
-문자열을 일반 자료형으로 타입변환
일반 자료형은 일반 자료형끼리 타입변환 되고
클래스 타입은 클래스를 사용하여 타입변환을 해야 함
“100” - 문자열 => 정수
Integer.parsenInt(“100”) => 정수값 100
“52.3”
Double.parseDouble(“52.3”) => 실수52.3
▣개념정리
1.문자열: “”(큰따옴표로 감싸진 부분)
“가”, “1”, “abc”
2.문자:’’
‘가’, ‘1’
3.변수(variable) : 하나의 값을 저장하기 위한 공간(가장 마지막에 들어온 값 하나만 저장)
4.상수(constant) : 처음 값을 한번 저장하면 바꿀 수 없음
한번만 저장할 수 있음, 코드 중간에 값을 변수 처럼 변경할 수 없음
선언하는 곳에서만 변경 가능
자바에서는 상수에는 final(더이상 뭐안하겠다. 끝) 붙이고 상수명을 대문자로 표현
ex)바뀌면 안되는 것들(ID,정해진높이)
final 상수타입 상수명 = 값;
final double PI = 3.141592;
final int height;
height = 20;
5.리터럴(literal) : 그 자체로 값을 의미하는 것
String name = “홍길동”;
타입 변수이름 =리터럴(정수,문자,실수형)
메모리에서 상수풀에서 저장된다.★?★
6.서식문자
printf(“출력할 서식문자들”, 출력할 값)
-줄바꿈 안됨
-지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능
System.out.printf(“%s %d %.2f\n”, name, kor, avg);
int age=25;
int year = 2024;
System.out.printf(“나이 = %d, 연도 = %d \n”, age, year);
-서식문자
%d : 10진(decimal) 정수의 형식으로 출력
%c : 문자(chracter)로 출력
%s : 문자열(string)로 출력
%f : 부동소수점(floating-point)형식으로 출력
%전체자릿수.소수점아래자릿수f
%x : 16진(hexa-deciaml) 정수의 형식으로 출력
%o : 8진(octal) 정수형식으로 출력
%3d : 3자리 확보, 오른쪽부터 채워짐
%-3d : 3자리 확보, 왼쪽부터 채워짐
JVM메모리
1.클래스(설계도,틀) -영역
2.스택(지역변수)
3.힙(객체저장되는 곳) - 객체(인스턴스) -영역
Scanner scan = new Scanner(
(참조타입)
영역을 구분한다.
(클래스)붕어빵 틀 가지고 (힙-객체)붕어빵만들어서 판매(스택)
—---------------
위에것 다시 설명
String클래스
int kor = 90; (대입연산자)
kor == 90 (같는가)
String name = “홍길동”;
기본타입 (byte,short,int,long,float,double,char - 스택(생성)
참조타입(boolean ,배열) - 힙(생성)
—------------------
kor == 90
name = 주소가 담겨져있고, 스택에서 name
“홍길동”의 값은 - 힙에 담겨져있다.
name.equls(“홍길동”);
TypeExam03(day04/type/)생성 - 개념설명
클래스/스택(지역변수)/힙(=객체)
==(은 스택영역에 있는것을 비교한다, 즉 값이 아닌, 주소위치 값을 비교하게된다.(주소값))
equal(은 힙의 영역에 있는 값을 비교한다. (실제값))
▣키보드로부터 데이터 입력받기
1.read() : 키보드에서 키 하나를 입력하면 프로그램에서 숫자로 된 키코드를 읽음
system.in.read()
(키보드 표준입력장치)
2. Scanner 클래스 사용
-Scanner 클래스 사용하기 위해서는 프로그램의 첫 행에 Scanner 클래스의 경로
이름을 컴파일러에게 알려주어야 함
- import java.util.Scanner
- import : 컴파일러에게 알려주기, 해당되는 클래들을 미리 불러와서 준비시켜라
해당 클래스명 위에서 ctrl + shift + o
- 데이터 입력 메소드
next() : 문자열(String), 탭, 공백, Enter로 구분
nextLine() : 문자열, Enter를 치면 Enter 전까지의 모든 자료를 읽어오기
주소같은 것들을 읽어 올때
- nextInt() : 정수형(int)
- nextLong() : 정수형(long)
- nextFloat() : 실수형(float)
- nextDouble() : 실수형(double)
…..
scanner(참조타입) scan(참조변수) = new(힙영역) Scanner(System.in);
(생성자) system in : 재료
scan,nextLine
scan:주소가서
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
영역
클래스,메소드 ㅣ 스택(지역변수) ㅣ 힙(은 주소값을 스택에 넘겨준다)
스캐너(틀) 재료값을 저장
'1. JAVA > 3). 자바_개념' 카테고리의 다른 글
자바_개념_Day_06 (0) | 2024.01.08 |
---|---|
자바_개념_Day_05 (1) | 2024.01.05 |
자바_개념_Day_03 (1) | 2024.01.05 |
자바_개념_Day_02 (2) | 2024.01.05 |
자바_개념_Day_01 (0) | 2024.01.03 |