4/12 변수, 상수, 형변환

박세현·2024년 4월 12일

JAVA

목록 보기
4/22
post-thumbnail

변수와 자료형

1. 컴퓨터는 데이터를 어떻게 표현할까?

  • 반도체
    전기 신호가 있으면 1
    전기 신호가 없으면 0
    -> 2진수



2. 10진수와 2진수

  • 1100100 - 2진수

  • 10진수 : 100

  • bit : 1,0으로 표현할 수 있는 최소 단위

  • 8bit -> 1byte




3. 부호있는 수를 표현하는 방법

  • 1bit : 부호 비트 (0 - 양수, 1 - 음수)

  • 1byte = -2^7 ~ 2^7 - 1 (-128~127)
    가장 앞자리인 부호비트 자리 제외(2^7), 0(-1) 제외 하고 숫자 표현가능





변수란 무엇일까?

1. 변수란?

  • 변하는 수
  • 공간의 이름
    변수를 선언한다
    공간의 이름을 정한다
  • 공간 : 메모리
  • 자료형 : 메모리 크기

메모리, 이름, 자료형

자료형 : 공간의 크기




2. 변수 선언하고 값 대입하기

  • 변수 선언
    자료형 변수명;
    int 변수;
    ㄴ int = 자료형
    ㄴ int = 4byte라는 공간의 크기를 가지고 있다
  • 자료형 변수명 = 값;




3. 변수 초기화하기

  • 변수에 최초로 값을 대입(저장) 하는 것
  • 자료형 변수명 = 값;
    선언과 동시에 초기화



4. 변수 이름 정하기

1) 알파벳, 숫자, 특수문자($, _)

2) 숫자는 변수명 앞에 사용 불가

3) 예약어는 사용 불가(return, throw, if ...)

4) 유의미한 단어로 변수명 구성

5) 카멜 표기법(관례) - noOfStudent

  • 첫단어 제외하고 뒤에부터 대문자

  • 예시)
    int 1st; - X
    int _$dollor - O
    int noOfStudent - O
    int throw - X
    	

참고)
주석 - 설명, 컴파일러가 해석 X, 제거
// - 한줄 주석
/
여러줄 주석
....
/
/* 설명 주석

*
*/
프로그램 실행 배제 - 해석 X -> 실행 X




5. class명

1) 파스칼 표기법(관례) - OrderInfo

  • 처음부터 대문자 사용




변수가 저장되는 공간의 특성, 자료형

1. 변수와 메모리

자료형 : 공간의 크기

① 기본 자료형

  • 숫자를 저장하는 자료형

  • 정수형 : 소수점이 없는 수

    • byte: 1byte (8bit)
    • short : 2byte (16bit)
    • int : 4byte (32bit)
    • long : 8byte (64bit) / l(L)
  • 실수형 : 소수점이 있는 수

    • float : 4byte / f(F)
    • double : 8byte
  • 논리형 : true, false

    • boolean : 1byte

    • 판별식
      조건문, 반복문에서 자주 사용

  • 문자형 : '문자'

    • char : 2byte ~ 3byte
      ex) char ch = 'A';

    • 아스키코드(1byte) : 문자표
      문자로 입력한 걸 컴퓨터 내부적으로는 숫자로 인식
      -> 그래서 문자형이 기본자료형(숫자만 저장하는 자료형)에 속한다
      -> 문자도 숫자이다

    • 유니코드(2 ~ 3byte) : 문자표
      한글...
      아스키코드로는 공간이 작아 표현 못하니 유니코드로 한글 표현

    • 아스키코드, 유니코드
      문자표에 있는 숫자만 가능
      -> 양의 정수만 가능


  • 자료형 보다 넘치는 값을 담을 순 없다

참고) 값을 넣지 않으면 설정되는 기본값

  • 선언만 하고 값을 넣지 않으면 메모리만 만들어지게 되는데 기본자료형 같은 경우 값을 넣지 않으면 초기값이 대입된다


    1) 기본 자료형 : 초기값
  • 정수형 자료형(byte, short, int, long) -> 0
  • 실수형 자료형(float, double) -> 0.0
  • 논리형 자료형(boolean) -> false
    예시)



    2) 참조 자료형 : 초기값
  • String -> null
    예시)

    자료형

    1) 기본 자료형
    숫자를 담는 변수에 크기


    2) 참조 자료형
    주소값을 담는 변수의 자료형

참고)
psvm + tab 단축키

public static void main(String[] args) {   
    }

참고)
sout + enter 단축키

System.out.println();


② 참조 자료형

  • 다른 데이터의 주소를 참조 하는 자료형
  • 자원의 주소만 가지고 있는 변수를 선언하는 자료형
  • ex) String, Date, Student 등



2. 기본 자료형의 종류

1) 정수 자료형

byte : 1바이트(8비트) -2^7 ~ 2^7 -1 (-126~125)
short : 2바이트(16비트) -2^15~2^15 - 1
int : 4바이트(32비트) -2^31~2^31 - 1
long : 8바이트(64비트) -2^63~2^63 - 1



2) 문자 자료형

char : 2바이트

참고) 숫자 변수에 대입 숫자 그대로 대입
문자를 변수에 대입할 경우 '문자'

			숫자 - 문자 : 아스키코드(1byte)
								/ 양의 정수 
								unsigned : 양의 정수 
								0~255
								
								- 영문, 특수문자 
			숫자 - 한글 :  유니코드(2byte, 3byte)
			


3) 실수 자료형

  • 소수점을 가지고 있는 숫자
    float : 4byte
    - 숫자 끝에 F(f)를 추가
    	double : 8byte


4) 논리자료형

  • 참, 거짓 (true, false)
    boolean



상수와 리터럴

1. 상수 선언하기

  • 상수 : 변하지 않는 수 (constant)
  • final 예약어 변수명 앞에 추가
  • 이름 명명 관례
    • 대문자로 작성
    • 단어와 단어 사이 _로 구분
      예) final int MAX_NUMBER = 10;

참고) final : 변경할 수 없는




2. 리터럴(literal)

1) 리터럴 상수

  • 재료가 되는 수 (문자, 숫자, 논리값)
  • 같은 재료 -> 하나만 생성(상수)

예시)
변수라는 공간에 값을 담으려면 값이라는 것도 존재해야 담을 수 있다
-> 어딘가 메모리에 값이 미리 할당되어 있다
-> 재료가 되는 수가 여러개 있을 필요 없다 : 상수




ㄴ 10이라는 재료가 되는 수 가 여러개 있을 필요가 없다
-> 자원이 1개다 (상수)
-> 자원이 동일한 위치에 있다
-> 동일한 자원을 공유한다

2) 모든 정수를 처음에는 int 인식

예시)
long num = 10000000000
int 10000000000 -> 오류

왜 오류가 뜨지?
자바는 일하기 싫어해
-> 정수만 들어오면 개발자들은 int를 많이 쓰니까 뭘 쓰든간에 먼저 int를 던지자
-> 음? 아니네? 그러면 기입한거로 다시 던져줘야지
-> 아 그래서 long으로 썻어도 int로 인식해서 오류가 뜬거구나

-> 처음부터 long이라고 알려주자~ 오류해결!
-> 처음부터 long으로 할당을 하려면 숫자 끝에 l ,L 을 붙여주자
_붙여도 ㅇㅋ

3) 모든 실수를 처음에는 double 인식


-> 그럼 처음부터 float이라고 말해주자

4) 결론: 처음부터 int(정수), double(실수)을 쓰는게 효율적이다

  • 자바가 일을 적게 한다




형변환

  • 자료형간 변환

1. 묵시적 형변환 / 자동 형변환

1) 작은 자료형 -> 큰 자료형

byte -> short -> int -> long -> float -> double : 자동 형변환
	     char ->

예시1)

예시2) 정수에서 실수로 변환

  • 실수 : 소수 점이 있는 수
  • 정수.소수점
  • 소수점 : 0~1미만
  • 실수범위 > 정수범위 == 실수의 표현범위가 정수의 표현범위보다 크다
  • 작은 자료형 -> 큰 자료형
    = 정수 -> 실수
    = 정수를 실수에 대입하면 실수형으로 자료형이 바뀐다

2) 정수(덜 정밀한 숫자) -> 실수(더 정밀한 숫자)

3) ❕연산 중 자동 형변환

  • 연산은 같은 자료형만 가능 -> 연산을 위해서 자동 형변환
    • 작은 자료형 -> 큰 자료형 변경
    • 정수 -> 실수

예시1)

예시2) 정수 * 실수 = 정수가 나오게끔




2. 명시적 형변환 / 강제 형변환

  • 데이터의 유실이 발생할 가능성이 있는 경우 - 자동 형변환 X
  • 명시적으로 형변환 의사 표현

예시1)

ㄴ 큰 바구니에 있는 물을 작은 바구니에 담으면 담긴 하지만 온전히 담을수가 없다
ㄴ 자료가 변질될 것이다
ㄴ 자바 : 자료가 변질될 가능성이 있어 안담아줄거야ㅇㅇ

ㄴ 나 : 변질된다고 해도 담아줘! -> (자료형명시)
ㄴ 데이터가 변질되면서 담겼다...

예시2)

ㄴ 유실이 없어도 오류 뜨넹

ㄴ 유실 없어도 명시적 형변환 해줘야 하넹

예시3)

ㄴ 데이터 유실 가능성 있어ㅓㅓ

ㄴ 나 : 알아,바꿔줘
ㄴ 데이터가 변질되면서 담겼다...





연산자

  • 항과 연산자


  • 연산에 사용되는 값

    • 단항 연산
    • 이항 연산
    • 삼항 연산

예시)
10 + 20 -> 항: 10, 20

  • 연산자
    연산에 사용되는 기호

1. 대입 연산자

int num1 = 10 +20*3;

  • = : 연산의 우선순위가 가장 낮다



2. 부호 연산자

  • +
  • - : 부호 반전
    양수 -> 음수
    음수 -> 양수
    예시)
    int num1 = 10;
    int num2 = -num1; // -10



3. 산술 연산자

  • +
  • -
  • *
  • /
  • % 나머지 연산자
    3으로 나누면 나머지는 항상 0,1,2 반복
    -> 균등 배분 해야쥐

10 + 2*3 = 16

  • 우선순위 : *, /, % > +, -

  • 우선순위 강제 적용 : (...)




4. 증가감소 연산자

  • ++ : 1씩 증가
    num++;
    ++num;
    -> 대입하면 우선순위가 다르다

예시)
int num2 = num++;
ㄴ 대입먼저하고 연산을 나중에

int num2 = ++num;
ㄴ 연산을 먼저하고 대입을 나중에

  • -- : 1씩 감소



5. 관계(비교) 연산자




6. 논리 연산자

  • 단락회로 평가



7. 복합 대입 연산자

대입연산자 + 다른 연산자(주로 산술 연산)

num = num + 2;
num += 2;
num *=2;




8. 조건 연산자(삼항조건연산자)




9. 연산자 우선순위





profile
귤귤

0개의 댓글