변수, 자료형, 연산자, 조건문 복습

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. 삼항연산자