Back to the Basics

[Java & SpringBoot ] 자바인강-JAVA 기초 문법 본문

Language/JAVA

[Java & SpringBoot ] 자바인강-JAVA 기초 문법

9Jaeng 2021. 12. 26. 23:02
728x90
반응형

JAVA 기초 문법

패스트 캠퍼스 JAVA & StringBoot 1주 차 강의 중 일부를 정리해보았다.

이번 주 강의 주제는 자바의 기초 문법에 관한 내용이 대부분이었다. 어느 프로그래밍 언어의 기초 문법이 그렇듯 설치 방법부터 시작하여 Java에서 사용하는 자료형 그리고 연산자들을 먼저 학습하였다. 한 주간 배웠던 내용 중 기억할 만한 내용들을 위주로 정리해보았다.

1. JAVA는 객체지향 프로그래밍이다.

OPP(Pbject Oriented programming) 이라고 하며 절차 지향 언어와 항상 비교되는 언어이다.

정말 간략하게 추상적으로 예를 들어자면 ,,

  • 절차 지향 : 아침에 일어난다 → 세수를 한다 → 밥을 먹는다 → 양치를 한다 → 옷을 입는다 → 출근한다.

위와 같이 시간의 흐름 순서대로 진행되는 것을 의미한다. 대표적인 언어로 C언어가 있다.

  • OOP : 인터넷 소핑몰 사이트를 예를 들어보자. 대부분의 쇼핑몰의 기능들을 나열해보면 회원가입 기능 , 상품 정보 보여주는 기능, 장바구니 기능, 결제기능 등 등등... 여러 기능들의 집합으로 볼 수 있다. 이렇게 각 기능들(이것들을 객체라고 한다) 객체들이 모여서 구현되는 것을 의미한다고 할 수 있다. 대표적인 언어로 JAVA, C++, C#, Python 등이 있다.

굉장히 추상적인 비유지만 비슷하다고 생각한다.

  • OOP의 특징 이전에 정리해놓은 객체지향 특징
    • 재사용성이 좋다 : 객체는 한 가지 (또는 여러 가지)의 기능을 위해 만들어진다. 하나의 기능만을 하는 모듈은 다름 프로젝트를 할 때 비슷한 기능이 필요한 경우 언제든 다시 사용할 수 있는 특징이 있다.
    • 유지보수가 용이하다. : 만약 쇼필몰 사이트에서 회원가입을 담당하는 기능에 문제가 생긴다면 회원가입 기능을 담당하는 모듈만 수정하면 된다.
    • 코드 관리 : 모듈에는 비슷한 기능을 하는 객체들로 구성되어있다. 따라서 코드를 관리하기도 매우 용이하다.

2. 자바의 변수 자료형(기본 자료형)

자바는 모든 변수에 자료형을 미리 정해놓는다.(물론 C나 C++도 그렇다) 사용하려는 자료가 숫자 , 문자, 볼린 등 에 따라서 그에 맞는 자료형을 사용해야 한다. 효율적인 프로그래밍을 위해 적절한 자료형을 선택하고 메모리 관리를 잘해야 한다.

  • 참고로 int num = 10에서 10을 literal이라고 한다. 프로그램이 실행할 때 data 영역 또는 constant 영역에 미리 저장이 된다. 위의 경우 data 영역에 들어있는 10이라는 자료가 num아 가리키는 memmory 위치에 복사되어 저장이 된다. data 영역은 프로그램 실행이 끝나면 해제된다.

  • 1byte = 8bit 이며 2의 8승 = 256개의 수를 표현할 수 있다. 01111111 은 십진수로 127이고 100000000은 -128이다. (음수는 2의 보수법으로 표현한다) 최상위 비트인 0과 1은 각각 부호를 의미하며 MSB(Most Significant Bit)이라고 한다.

  • 크기가 N인 bits인 정수형의 범위는 -2^(N-1) ~ 2^(N-1)-1 로 표현할 수 있다.

  • 정수 자료형

    • byte : 동영상, 음악 또는 실행파일 등의 자료를 처리 또는 I/O 실행 시 data를 받아서 처리할 때 사용된다.

      • short : C/C++ 언어와 호환이 필요할 때 사용된다.
    • int : 숫자 literal은 기본적으로 int로 저장된다. 따라서 32비트를 초과하는 숫자는 long 자료형으로 처리해야한다.

    • long : 숫자의 뒤에 L 또는 l을 붙인다. 소문자의 경우 숫자 1과 비슷하므로 대문자를 쓰도록하자!

     int num = 12345678900; // 오류 -> 범위를 넘는다.
     long lnum = 12345678900; //오류 -> literal은 int형이다.
     long lnumber = 12345678900L; // ok

    위의 코드에서 두 번째는 long으로 자료형을 선언했지만 err가 난다. 이유는 literal 자체가 4byte로 공간을 할당받았기 때문이다. 세 번째 코드와 같이 literal 위에 식별자 L을 추가하여 8byte 메모리를 할당해주어야 한다.

  • 실수 자료형 참고자료실수는 표현하는 방법이 정수보다 까다롭다.

    • 정규화 : 가수가 밑수보다 작은 한 자리까지 가수로 표시되는 것이다. 컴퓨터는 밑수가 2이므로 가수는 1.m x 2 ^-n이 된다.

    • 하지만 부동소수점의 방식에는 지수부가 0을 표현할 수 없으므로 약간의 오차가 있다. 하지만 훨씬 많은 range를 사용하기 위해 이 방법을 사용한다.

  • ±(1.가수부)×2지수부-127
  • fixed point 방식인 고정 소수점 방식과 floating point 방식인 부동 소수점 방식이 있다. 이 중 부동소수점 방식은 소수를 정수와 소수부로 나누는 것이 아닌 , 가수부와 지수부로 나누어 표현하는 방법이다.
  • Java naming convention
    • 변수 이름은 대소문자 무관하다.
    • 특수문자는 _ 과 $만 사용한다.
    • 예약어 (while , for 등)은 사용불가
    • 변수의 이름은 그 용도에 맞고 가독성이 좋도록 만들어야 한다.

내가 생각하기에 이번 수업에서의 핵심은 자바는 변수마다 자료형을 꼭 정하여 사용해야 한다는 점이었다. JavaScript나 Python와 달리 int형을 사용할 것인지 int에서도 long을 사용할 것인지 등을 상당히 신경 써야 한다는 점이 좀 까다롭다고 생각했으나, 오히려 자료형을 미리 정함으로써 코드의 가동성이 더 좋아질 것이라고 생각한다. 이 변수가 문자형인지 숫자형인지, 볼린 형인지를 미리 지정을 해놓기 때문에 코드가 길어지고 많아지고 복잡해질수록 변수의 형을 쉽게 알아볼 수 있기 때문이다. 또한 미리 타입 error를 발견할 수 있기 때문에 코드의 안정성이 높아진다는 것 또한 이점이지 않나 싶은 생각이다.

728x90
반응형

'Language > JAVA' 카테고리의 다른 글

Java&SpringBoot-Interface란?  (0) 2022.01.25
Java&SpringBoot-Singleton-Design-pattern  (0) 2022.01.15
Java & SpringBoot-Switch-Expression비교  (0) 2022.01.11
Java & SpringBoot-ObjectOriented-Class  (0) 2022.01.11
Java & SpringBoot-StringObject  (0) 2022.01.11
Comments