Java 프로그래밍기초 230213 #1 변수/타입/연산자

김춘복·2023년 2월 13일
0

Java 공부

목록 보기
4/20

변수

  • 변수 : 단 하나의 값을 저장할 수 있는 메모리 공간. 고정x, 다른 값으로 덮어씌울 수 있음.

  • 메모리 공간: 1Byte(정보처리 기초 단위)로 구성. 각각은 공간 구분을 위해 메모리주소 가지고 있음.

  • 메모리에 값을 저장하거나 읽을때 해당 메모리 주소 사용하는데, 특정 메모리 영역에 이름을 붙이고 주소 대신 이름을 사용해 메모리에 값을 저장하고 읽을 수 있게 한 것이 변수.

변수의 선언

  • 선언 이유 : 메모리에 값을 저장할 공간을 마련하기 위해

  • 선언 방법 : 변수타입 변수이름;

  • 규칙 : 대소문자구분, 특문은 _랑$만. 숫자로 시작 불가.
    일반적으로 java는 camelCase 사용.

변수의 초기화

  • 초기화 : 변수에 처음으로 값을 저장하는 것.

  • 초기화 방법 : 변수타입 변수이름 = 값;


상수와 리터럴

  • 상수 : 한 번만 값이 저장 가능한 변수. 한 번 저장하면 변경할 수 없는 저장공간.
    final 변수타입 변수이름; 으로 선언.

  • 리터럴 : 그 자체로 값. (원래의 상수 개념을 리터럴이라함).

  • 리터럴의 타입(종류)

  • 정수형 : byte short int long
    byte short는 연산보단 저장목적임. 기본형은 int. long은 구분위해 접미사 L을 붙임.
    int 접두사 : 2진수 - 0b, 8진수 - 0, 16진수 - 0x / 10의n제곱 = en (1e3 = 1000)

  • 실수형 : float double
    float에는 접미사 f, double에는 d 가 붙으나 d가 기본형이라 d는 생략.

  • 고로 정수 long의 L, 실수 float의 F만 붙이면 된다. 대소문자 상관없으나 헷갈리니 대문자 쓰면 좋다.

  • 문자형에서 char (글자하나)는 ''를 쓰고, String (문자열)은 ""를 쓴다.


기본형과 참조형

기본형

  • 논리형, 정수형, 실수형, 문자형

  • 기본형 변수는 실제 값을 저장.

  • 오버플로우(타입 한계값을 초과)시 값이 순환.

  • 정밀도(실수형에서 소수점 몇자리까지 오차없이 표현가능)
    : float은 7자리, double은 15자리.

  • 숫자 + '0' -> 문자 / 문자 - '0' -> 숫자

  • 숫자 + "" -> 문자열 / 문자 + "" -> 문자열

  • 문자열을 숫자로 : Integer.parseInt("문자열") / 문자열을 문자로 : "문자열".charAt(0)

참조형

  • 기본형을 제외한 나머지 타입(String, System 등). 항상 4byte(jvm이 64bit면 8byte)

  • 참조형 변수는 메모리주소나 null(어떤 객체의 주소도 저장하지 않음)을 저장.



연산자

  • 연산자 : 연산을 수행하는 기호 (+ - * /). 피연산자를 연산.
    **모든 연산자는 연산 결과를 반환한다.**

  • 연산자의 종류: 산술, 비교, 논리, 대입, 기타

  • 연산자의 우선순위: 기본적으로 왼쪽에서 오른쪽. 대입과 단항연산자만 오른쪽에서 왼쪽.
    단항연산자(부호, ! 등) > 산술{곱나눔나머지 > 덧뺄 > 이동} > 비교(부등호) > 논리(& | && ||) > 대입 (= +=)
    단항(1) > 이항(2) > 삼항(3)

연산자 1

증감 연산자

  • 증가연산자(++) : 피연산자 값 1 증가 / 감소연산자(--) : 피연산자 값 1 감소

  • 전위형 : k = ++j; 값이 참조되기 전에 값(j)을 증감
    후위형 : k = j++; 값이 참조된 후 값(j)을 증감

부호연산자

  • - : 부호 반대로.

형변환 연산자

  • 형변환 : 변수나 상수의 타입을 다른 타입으로 변환
    (타입)피연산자 로 변환

  • 형변환시 값 손실이 발생할 수 있으니 기존 값을 최대한 보존할 수 있는 타입으로 변환해야.

사칙연산자와 산술변환

  • 사칙연산자 : + - / *

  • 산술변환 : 연산전에 피 연산자 타입 일치. 보다 큰 타입으로 일치해야
    ex) float + int -> float + float => float

나머지연산자 %

  • 오른쪽연산자(0이 아닌 정수)로 나누고 남은 나머지 반환. 부호는 무시

Math

  • Math는 수학과 관련된 메서드를 가지고 있는 클래스
    Math.메서드(값) 으로 사용

  • round() : 실수를 소수 첫째자리에서 반올림정수를 반환
    ceil() : 올림값을 double형으로 반환
    floor() : 내림값을 double형으로 반환
    abs() : 절대값. int double 둘 다 사용 가능.

  • ex) 파이를 소수점 4째 자리에서 반올림한 값을 구하라!

double pi = 3.141592
double shortPi = Math.round(pi * 1000) / 1000.0; 
// round는 첫째자리에서 반올림하는 Math의 메서드
// 따라서 pi를 1000을 곱해 round(반올림)하고 다시 1000.0으로 나눠주면 됨
System.out.println(shortPi); // 정답 3.142


연산자 2

비교 연산자 : 비교해서 참 거짓 반환.

  • == : 왼쪽 오른쪽 같으면 참.
    != : 왼쪽 오른쪽 다르면 참.
    .> >= < <= : 왼쪽 오른쪽 비교

  • 문자열 비교는 == 대신 equals() 사용

논리 연산자

  • && : AND. 모두 참이면 참.
    || : OR. 하나라도 참이면 참
    ! : NOT. 참이면 거짓. 거짓이면 참.

비트 연산자

  • 비트 단위연산. & | ^ ~ << >> >>> 0과 1로 표현 가능한 정수형이나 형변환 가능한 자료형만 가능.

  • 부호 절대값 : 가장 왼쪽 비트가 부호비트라고 했을 때 0이면 양수 1이면 음수.

  • 1의 보수 : 11111111 - x. 1을 0으로 0을 1로.

  • 2의 보수 : 100000000 - x. 가장 많이 사용하는 방식. 1의 보수에 +1

조건 연산자

  • 삼항 연산자(? :) : 조건식 ? 반환값1 : 반환값2
    조건식이 맞으면 1, 틀리면 2반환?

대입연산자

  • 왼쪽의 피연산자에 오른쪽의 피연산자를 연산 후 결과값은 왼쪽의 피연산자에 대입
    = += -= *= /= %= &= != ^= <<= >>= >>>=
int num = 7; 
num -= 3;
sout(num) // 4. 7-3해서 나온값을 num에 넣었기 때문.
profile
Backend Dev / Data Engineer

0개의 댓글