2024. 8. 13. 15:46ㆍ■ JAVA REVIEW & PRACTICE/LECTURE2 - ATTIC
기본형 변수(=primitive type)
정수형 변수는 타입마다 크기가 있고 크기에 따라 사용하면 됨
byte=1byte=8bit (범위: -128 ~ 127 )
short=2byte=16bit (범위: -32768 ~ 32767)
int=4byte=32bit (범위: -21억 ~ 21억)
long=8byte=64bit (범위: 9백경) -> 끝에 알파벳 L붙여주기
실수형 변수: 소수점 실숫값 저장 (둘다 long보다 큼) 요새는 float보다는 double을 많이 사용하는 추세. 옛날보다 데이터 저장하는 공간도 커서 공간의 고려의 걱정이 적어져서 float 보다는 double 추천
float=4byte -> 끝에 f 붙여주기
double=8byte
논리형 변수: True/False 값만 저장( if 문에 참과 거짓할 때 많이 쓰임 )
boolean
문자형 변수: 'A', '1'과 같은 영문권 키보드로 입력하는 하나의 문자 하나만 저장할 때 사용
char
아스키코드
컴퓨터는 모든 내용을 0과 1로만 저장
char c1 = 'a';
sout((int)c1);
sout((char)97); //형변환연산자
sout((char)97+1); // 98에 해당하는 문자 b가 나옴
sout((char)97-32); // 65니까 대문자 A가 나옴
char c1 = 'a' - 32;
char c2 = 'b' -32;
sout(c1); //Aㅇ
참조형 변수 (=reference type)
참조현 변수의 값은 Heap이란 메모리 영역에 특정 위치에 저장되있는데 이때 이 변수가 주소값을 저장하고 있음
1. 사용자가 만든 클래스에 해당하는 변수들은 모두 참조형
(new 키워드 써서 만든 객체에서도 참조형 변수)
2. String (문자열 " ")
3. List (interface 사용해서 만들어진 변수)
4. ArrayList(이것도 클래스에 해당하는 변수)
래퍼클래스=Wrapper Class
기본형 변수를 클래스로 한번 랩핑하는 변수: 첫글자는 무조건 대문자
ex) 제네릭 등등의 기능들이 클래스만으로 동작하는 기능이 있어서 이럴 때 래퍼 클래스 사용
boxing: 래퍼클래스의 객체를 감쌀 때
unboxing: 래퍼클래스의 객체를 꺼낼 때
auto boxing
auto unboxing
개념만 이해하고 있자. 요즘 많이 쓰질 않음
형변환 (자동/수동)
명시적으로 형변환 하는 방법 : 형변환 연산자 사용 (데이터가 유실하는 상황에서 잠재적인 문제가 발생할 수 있는 상황이지만 나는 그 상황을 알고 있고 강제적으로 할거야 라고 할 때 사용)
자동형변환 : 값이 큰쪽 방향으로 형변환을 할 때, 그래서 형변환 연산자를 따로 해줄 필요가 없음 (작은값->오른쪽)
9반대로 오른쪽에서 왼쪽 방향으로 변환을 하면 에러가 남, 데이터를 저장하는 비트가 줄어들면서 데이터의 유실이 발생해서 오류가 발생)
char c1 = 'a';
(int) c1;
double과 float을 int로
double d1 = 10.1; //실수형은 소숫점 포함하여 값을 다를 수 있음
int i1 = (int)d1; //인트는 소숫점 불가능
sout(d1); // 10.1 출력
sout(i1); // 10으로 출력
-----------------------
int i1 = 3;
int i2 = 2;
double d1 = i1 * 3 / 2;
sout(d1); //1.0출력
? 그렇다면 double의 제대로 나눈 값을 출력하려면?
연산자
연산자 순위
산술 > 비교 > 논리 > 대입
무엇이 우선인지 헷갈리고 어려우니까 괄호를 활용해보기
특히 if 조건문에서 사용하기
산술변환
연산 전에 피연산자의 타입을 일치시키는 것 ( 둘 중 저장공간 크기가 더 큰 타입으로 일치시키는 것 = 자동형변환)
조건문은 크게 3가지로 나뉨
1. if 문 / if 중첩문
//if문 비교와 논리 연산자 써서 사용해보기
//true냐 false냐에 따라 가는 방향이 다름
if (여기에 비교연산자 또는 논리연산자를 많이 씀) {
} else {
}
// && 는 false가 강함 // ㅣㅣ 은 true가 강함
if ((a > 1) && (b > 2) && <c >3)) {
} else {
}
2. switch: switch 옆 ( )괄호안에 있는 내용이 case에 있는 값과 일치할 때 그 case 가 실행이 됨
switch는 항상 변수를 위에 선언 해줘야해
switch 사용 못하는 경우 (a > 1)(b > 1) (c > 1) 같은 복합적인 조건을 제시할 때는 if문이 많은 케이스를 커버할 수 있어
switch 는 보통 간결하게 쓸 때 사용함( 아래보면 month를 한번만 언급하지만 if 문은 매번 언급해주고 비교할 값을 넣어줘야함)
switch/case 예시1
// 변수 먼저 선언해주기
int month = 8;
String str = "11";
char c = 'a';
//switch 아래 괄호 안에는 변수, 수식, 열거형 다 넣을 수 있음
switch (month / 10) {
case 'a';
break;
case 'b';
break;
}
--------------------------------------------------------
switch/case 예시2
int month = 8;
switch (month) { //break 만나면 바로 종료
case1 :
sout("1");
break;
case2 :
sout("1");
break;
default :
sout("default");
break;
}
}
3. 삼항연산자
'■ JAVA REVIEW & PRACTICE > LECTURE2 - ATTIC' 카테고리의 다른 글
Creating a Library Book Management System (0) | 2024.08.23 |
---|---|
Using Parameters in Constructors in Java (0) | 2024.08.22 |
List, Queue, Set, Map 특징 (0) | 2024.08.21 |
반복문, 배열 복습 (0) | 2024.08.12 |