[항해99] Pre-onboarding 1일차

kyuu·2022년 11월 7일
1

항해99

목록 보기
6/19
post-thumbnail

항해99 Pre-onboarding 1주차 항해일지 <1day - TIL>

📍Today I Learn(Day 1 - Chapter 1&2)

- 배운 것 :

  • 변수, 변수 선언, 변수 사용, 변수 사용 범위
  • 자바의 기본 타입 (정수, 실수, 논리값)
  • 자바의 타입 변환
  • 변수와 시스템 입출력

(1) 변수

  • 변수는 값을 저장하는 저장소의 이름
  • 변수 이름에는 몇가지 규칙이 있음
    ( 첫글자는 문자 or & or _ 이어야함, 대소문자를 구별하고, 예약어 사용불가, 자바에서는 변수명은 캐멀케이스로 이름을 맞춰 지어야함)
  • 변수는 메소드 블럭안에서만 사용하는 로컬변수 / 메소드 블록 전체에서 사용하는 전역변수로 선언함
    *) 초기화 하지 않으면 사용할 수 없다!

(2) 기본 타입

  • 자바의 기본타입에는 크게 정수타입, 실수타입, 논리타입이 있다
  • 타입별로 저장되는 값이 범위가 상이하며, 선언되는 변수의 크기별에 맞춰서 선언이 필요하다 (필요하지않은 메모리를 사용하지않도록)

    *) 작은 따옴표는 char, 큰따옴표는 String

💡정수

  • byte, char(유니코드로 처리, short, int(기본 정수형), long

💡실수

  • fload, double 등 실수(소수점)을 처리

💡논리(boolean)

  • 논리형(True, False)를 저장할 수 있는 타입

(3) 타입 변환

  • 변수의 데이터 타입을 다른 타입으로 변환하는 것
  • 타입의 종류에는 자동 타입 변환과 강제 타입 변환이 있음

🌀자동 타입 변환 ?

  • 값의 허용 범위가 작은 타입이, 허용 범위가 큰 타입으로 저장될 때 발생함
    byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

🌀강제 타입 변환 ?

  • 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 나눠서 넣는 것
  • 끝의 한 부분만 작은 타입으로 나눠서 들어감
  • 강제 타입 변환을 캐스팅 이라고도 함!
예시 코드)
int intValue = 10;
byte byteValue = (byte) intValue;
                   ㄴ허용범위가 작은 타입

🌀 + 연산에서의 문자열 자동 타입 변환

  • Java에서의 + 연산자는 두가지 기능을 가지고 있음
    (1) 피연산자가 모두 숫자일 경우 덧셈 연산을 수행
    (2) 피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 변환되어 문자열 결합 연산을 수행함
    • ) 헷갈릴 수 있으니 아래의 예시 참조
String str = 10 + 2 + "8" ; 
System.out.println("str1 : " + str1); 
ㄴ 숫자 10 + 숫자 2 + 문자 8 = 128

String str = 10 + "2" + "8" ; 
System.out.println("str1 : " + str1); 
ㄴ 숫자 10 + 문자 2 + 문자 8 =1028

String str = "10" + 2 + 8 ; 
System.out.println("str1 : " + str1); 
ㄴ 문자 10 + 문자 2 + 문자 8 = 1028

String str = "10" + (2 + 8) ; 
System.out.println("str1 : " + str1); 
ㄴ 문자 10 + 문자 (숫자 2+ 숫자 8) = 1010

🌀 문자열을 기본 타입으로 강제 타입 변환

  • 문자열에 대한 연산이 필요할경우 문자열을 기본 타입으로 변환하여 사용 함
    ( String -> Byte, String -> short 등)
#변환 방법(ex)
String str = "la";
int value = Integer.parseInt(str)
		    ㄴ자료형.parse.자료형

(4) 변수와 시스템 입출력

  • 시스템 표준 출력 장치(모니터), 표준 입력 장치(키보드)

✏️ 변수의 출력 :
(1) print - 그대로 출력
(2) printf - 첫번째 괄호의 문자열 형식대로 출력
(형식 문자열에 포함된 값이 2개 이상인 경우, 값의 순번을 알려주어야함 1,2, 2 등)
(3) println - 괄호안에 내용 출력 후 행 바꾸기

✏️ 변수의 입력 :

  • Scanner class를 통한 키보드를 통한 변수 입력 받기
    *) system.in.read()의 경우 키코드를 하나씩만 읽을 수 있어서, 2개 이상의 키가 조합된 한글을 읽을 수 없음 그래서 Scanner 메소드를 이용함
  • 사용 메소드 : scanner.nextLine()
    ㄴ Enter키가 입력되기 전까지 대기상태, enter 키가 입력되면 입력된 모든내용을 문자열로 받음

- 추가적으로 공부한 것📔

  • 자바의 자료형
    • 여러 언어를 맛보기형식으로 공부하였더니 토대의 힘이 부족한것 같아서 한번 짚고 넘어가려했는데 재미난 자료를 봤다 그래서 정리

자바의 기본형과 참조형

Java Data Type 
✏️ Primitive Type
    ㄴ Boolean Type(boolean)
    ㄴ Numeric Type
        ㄴ Integral Type
            ㄴ Integer Type(short, int, long)
            ㄴ Floating Point Type(float, double)
        ㄴ Character Type(char)
        
✏️ Reference Type
    ㄴ Class Type
    ㄴ Interface Type
    ㄴ Array Type
    ㄴ Enum Type
    ㄴ etc.
    

👉 기본형의 특징

  • 자바에서 기본 자료형은 반드시 사용하기 전에 선언되어야함
  • OS에 따라 자료형의 길이가 변하지 않음
  • 비객체 타입으로 따라서 null 값을 가질 수 없음.

👉 참조형변수란 ?

  • 기본형 변수에는 리터럴, 실제값이 저장되지만 참조형 변수에는 실제 값이 아닌 주소값을 저장한다.
  • Class Type, Interface Type, Array Type, Enum Type 등

👉 기본형과 참조형 변수의 차이
*) 차이를 알기 위해서는 먼저 간단히 메모리 구조를 알아야한다.

  • 간단하게 3개의 영역으로 나누면 위와 같고, 이 구조에서보는 기본형과 참조형 변수의 차이는,

⬛ 기본형 변수는 실제의 값이 저장되는데, 변수 선언시 Stack영역에 선언한 변수 만큼의 공간이 생성되며 그 공간안에 값이 들어간다

🟥 참조형 변수는 기본형 변수처럼 Stack 영역에 변수의 이름을 가진 공간이 생성되고, new라는 명령어가 Heap 영역에 새로운 공간을 생성한다.
🟥 공간의 크기는 넣으려는 값만큼, 그리고 할당받은 메모리 주소값을 Stack영역에 생성된 변수라는 장소에 저장한다.

🟨 요약)

  • 기본형 변수는 Stack영역에서 실제값을 그대로 저장
  • 참조형 변수는 Stack영역에 공간을 생성하고, Heap영역에도 공간을 생성하여 실제값을 저장한다음 그 공간의 주소값을 Stack영역에 저장한다.
profile
엔지니어 꿈틀 개발자

0개의 댓글

관련 채용 정보