Java 기초

TigerStoneV·2022년 1월 18일
0
post-thumbnail

역사를 이해하고 간다면 먼저 편할꺼 같다.

Java 란 C언어 + 객체 지향을 입힌 단어이다.

즉, OOP(Object Oriented Programming) 객체 지향 프로그래밍 이란 모든 데이터를 현실에 빗대어 객체로 다루는 프로그래밍 기법이다.

특징)

  1. 캡슐화 (Encapsulation) : 데이터와 함수를 하나로 묶는다.
  • 데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다.

  • 객체와 함수의 재사용이 쉽다.

  1. 정보은닉 (Information Hiding) : private으로 선언한 데이터는 자기 자신을 통해서만(setter, getter) 접근 가능하다.
  • 각 객체간의 수정이 다른 객체에 미치는 영향을 최소화 한다.

  • 외부 객체의 직접 접근을 막아 프로젝트 확장 시 오류를 최소화 한다.

  1. 추상화 (Abstraction) : 불필요한 부분은 생략하고 중요한 것에만 초점을 맞춰 모델로 만든다.
  • 복잡한 모델을 중요한 것 만 추려 추상화 함으로써 시스템 구조를 시각적으로 표현할 수 있다.

  • 완전한 시스템이 구축되지 않더라도 개략적으로 모델을 만들어 테스트 하고 살을 붙여나갈 수 있다.

  1. 상속성 (Inheritance) : 부모클래스에 정의된 모든 것을 자식 클래스가 물려받는다.
  • 재정의 할 필요가 없어 코드 작성이 간결해진다.

  • 상속으로 인한 최소한의 규칙을 통해 프로젝트의 확장 시 오류를 최소화 한다.

  • 자식클래스에서 새로운 함수를 추가하거나 부모 클래스의 함수를 재정의(Overriding)해 사용할 수 있다.

  • 클래스의 재사용이 쉽다.

  1. 다형성 (Polymorphism) : 호출하는 객체에 따라 다른 동작을 한다.

-하나의 클래스에서 같은 이름의 함수를 여러 개 가질 수 있다(Overloading). 호출하는 객체가 어떤 인풋 파라미터를 사용해 호출하냐에 따라 각자 다른 함수가 호출되게 한다. 즉, 비슷한 기능을 하는 다른 함수를 만들 때 불필요하게 너무 많은 함수명을 만들어 내 가독성이 떨어지는 문제를 해결할 수 있다.

여기까지가 OOP의 간단한 설명과 특징을 나열했다.

자바의 장점.

  1. 운영체제와는 독립적으로 실행할 수 있다

  2. 불필요한 기능을 과감히 제거하여 다른 언어에 비해 배우기가 쉽다.

  3. 자동 메모리 관리 등을 지원하여 다른 언어에 비해 안정성이 높다

  4. 연산자 오버로딩을 금지하고 제네릭을 도입함으로써 코드의 가독성을 높였다.

  5. 관한 수많은 참고 자료를 찾을 수 있다.(사용자가 많음으로 그만큼 자료또한 풍부함.)

자바의 단점.

  1. 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다. (JVM: Java Virtual Machine)

  2. 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있다.

  3. 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.

자바 프로그래밍 실행 과정.

자바 설치

OOP(Object-Oriented Progrmming)

객체 지향 프로그래밍 = OOP
객체를 생성하고, 이를 블록처럼 조립해서 하나의 프로그램으로 만드는 것

학교 가는 과정에 대한 절차적 프로그래밍.
1 일어난다 2 씻는다 3 밥을 먹는다 4 버스를 탄다 5 요금을 지불한다
6 학교에 도착한다
<시간에 흐름에 따른 프로그래밍>

학교 가는 과정에 대한 객체 지향 프로그래밍.
1 객체를 정의한다
2 객체의 기능을 구현한다
3 객체 사이의 협력을 구현한다

OOP의 장점

1 실행이 빠르다
2 구조가 깔끔하고 명확하다.
3 코드를 DRY(Don't Repeat Yourself) 상태를 유지 할 수 있도록 해준다.

[ " Class가 없다면 계속 작업이 반복돼 흑흑 " ]

변수란 ?

프로그램에서 사용되는 자료를 저장하기 위한 공간 할당받은 메모리의 주소 대신 부르는 이름.
프로그램 실행 중에 값 변경 가능 사용되기 이전에 선언되어야 한다

변수명 규칙

  1. 대소문자 구분하며 길이 제한은 없음
  2. 예약어(Reserved Word)를 사용하면 안됨( ex. for, int, short...) 3. 숫자로 시작하면 안됨
  3. 특수문자는 ’_’ 와 ‘$’만 허용됨
  4. 이름 사이에 공백이 있으면 안됨
    [ 변수의 역할에 어울리는 의미 있는 이름으로 지을것 ]

상수란 ?

항상 같은 수를 의미한다

  • final 키워드 이용해 선언
  • 대문자로만 구성된 명사로 정함 - 값이 변하면 위험한 경우에 사용

변수의 자료형

Primitive(원시) 자료형

  • int, long, double, float, boolean, char
  • 원시 자료형은 실제 데이터를 담는다
  • 리터럴(literal)로 값 세팅 가능하다
  • 참조 자료형(Reference) : 데이터를 가리키는 주소값을 가진다

리터럴

  • 리터럴은 계산식 없이 소스코드에 표기하는 상수 값 ( ex. 10, 3.14, ‘A’, true)
  • 리터럴에 해당하는 값은 특정 메모리 공간인 상수 풀에 있다 - 상수 풀에 저장할 때 정수는 int, 실수는 double 로 저장한다.
  • 따라서 long, float으로 저장하는 경우 L, f의 식별자 필요하다

자료형

자료형(정수)

byte

  • 1바이트
  • 저장돼 있는 데이터를 바이너리(Binary) 원본 그대로 다루고 싶을 때 사용 - 동영상, 음악 파일 등 실행 파일의 자료를 처리할 때 주로 사용

short

  • 2바이트
  • 주로 C/C++ 언어와의 호환 시 사용

int

  • 자바에서 사용하는 정수에 대한 기본 자료형
  • 4바이트
  • 프로그램에서 사용하는 모든 숫자(리터럴)는 기본적으로 int로 저장
  • 32비트 초과하는 숫자는 long형으로 처리해야 함

long

  • 8바이트
  • 가장 큰 정수 자료형
  • 숫자 뒤에 L 또는 l을 써서 long형임을 표시해야 함

자료형(실수)

  • 문자 자료형 -> Char : 문자도 내부적으로는 비트의 조합으로 표현 (2byte)

문자 자료형

  • 문자를 위한 코드값들을 정해 놓은 세트
  • 아스키(ASCII) -> 1byte로 영문자, 숫자 ,특수문자 등을 표현
  • 유니코드(Unicode) -> 한글과 같은 복잡한 언어를 표현하기 위한 표준 인코딩. (UTF-8,UTF-16)

형 변환

  • 자료형은 각각 사용하는 메모리 크기와 방식이 다르다
  • 서로 다른 자료형의 값이 대입되는 경우 형 변환이 일어난다
  • 자료형은 각각 사용하는 메모리 크기와 방식이 다르다
  • 서로 다른 자료형의 값이 대입되는 경우 형 변환이 일어난다
  • 명시적형변환: 변환되는자료형을명시해야함 자료의 손실이 발생할 수 있다

!-! 자동 형변환 (묵시적 형 변환 )

  • 작은수 -> 큰수, 덜 정밀한 수(정수) -> 더 정밀한 수(실수)

연산자

대입 연산자(Assignment)

  • 변수에 값을 대입하는 연산자
  • 연산의 결과를 변수에 대입
  • 우선 순위가 가장 낮은 연산자

산술 연산자

  • 사칙연산에 사용되는 연산자

증감 연산자

  • 단항 연산자
  • 항의 앞뒤 위치에 따라 연산의 결과가 달라짐

관계 연산자

  • 이항 연산자
  • 연산의 결과가 true(참), false(거짓)으로 반환됨

논리 연산자

  • &&à모두 참일 때 참 (and 연산자)
  • ||à하나라도 참이면 참 (or 연산자)
  • !àboolean의 값 역전시킴 (not 연산자)

복합 대입 연산자

  • 대입 연산자와 산술 연산자 함께 사용

조건 연산자

  • 삼항 연산자
  • 제어문 중 조건문을 간단히 표현할 때 사용할 수 있음

조건문

switch/case 문

입력변수의 값과 일치하는 case 입력값(입력값1, 입력값2, ...)이 있다면 해당 case문 하위의 문장이 실행
breakà해당 case문을 실행 한 뒤 switch문을 빠져나가기 위함 defaultà만약 break 문이 빠져 있다면 그 다음의 case 문이 실행됨

while 문

  • 조건문이 참인 동안 실행

for 문

  • 반복문 중 가장 많이 사용

    <뀰팁 난 그냥 초조증이라고 암기를 해버렸다>
profile
개발 삽질하는 돌호랑이

0개의 댓글