반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 8주차


 

8주차 학습 내용

REST API

HTTP PROTOCOL

SPRING BOOT

 

 


REST API

 

REST: 자원의 상태 전달

1. URI를 이용해서 자원을 식별해야함
2. 데이터를 전달할 수 있다 주로 json, html
3. http 프로토콜을 통해 데이터의 처리방식을 포함 - GET, POST, PUT, DELETE

4. 응답 데이터뿐만 아니라 추가적인 URI 정보를 제공할 수 있다.

 



URI - 자원을 나타내는 주소 값
URL - 자원의 위치를 식별하는 주소

 


 

설계규칙
계층관계는 / 를 사용한다.
하이픈은 가독성을 높이는데 이용한다.
소문자를 사용한다

복수형을 사용한다.
파일확장자를 명시하지 않는다.
세션을 명시하지 않는다.

 


HTTP PROTOCOL

 

컴퓨터에서 다루는 대부분의 데이터는 전송할 수 있다.

클라이언트가 서버에게 request , 서버의 response를 클라이언트가 받는 방식으로 작동한다.

 

HTTP METHOD
get - 자원 취득
post - 자원 생성, 수정
put - 자원 수정
delete - 자원 삭제

 


응답상태코드
1.. 처리중

2.. 성공

3.. 리다이렉트

4.. 클라이언트 에러

5.. 서버 에러

 


SPRING BOOT


 SPRING BOOT의 가장 큰 장점은 사전 구성이 거의 필요 없다.
기존에 사전 구성을 하기 위해 xml 설정이 과도하게 필요했는데 현재는 xml 요구사항이 전혀 없다.
또한 WAS를 내장하고 있기 때문에 별도의 설치가 필요 없다.

 

REST API를 활용하여 Get method를 이용하여 URI 정보를 받는 여러가지 방식


RequstMapping에 주소를 명시한다.
GetMapping에 세부 주소를 명시한다.

 

요청 정보 받기
PathVariable 은 주소에 { } 를 사용한다.
RequestParam 은 ?name=값 처럼 이용한다.
또한 DTO를 사용할 수도 있다.

 


 

REST API를 활용하여 Post method를 이용하여 정보를 받는 여러가지 방식

RequestBody 데이터를 HTTP body에 넣어서 전송
      DTO 를 body 에 전송할 땐 해당 어노테이션 사용

객체는 카멜케이스, json은 스네이크케이스이므로
칼럼에 JsonProperty
객체에 JosnNaming
body에 전달되어 오는 json을 객체에 매핑
객체를 json으로 변환시키고 return 시킬 수 있음

 



Put
PathVariable 수정할 자원을 명시

전달받기 위해 RequestBody를 활용할 수 있다.

 



Delete
PathVariable 삭제할 자원을 명시

역시 전달받기 위해 RequestBody를 활용할 수 있다.


json -> object 할때는 objectMapper사용하면 편리하다.

 


 

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 7주차


 

7주차 학습내용

 

객체지향

디자인 패턴

 


객체지향

 

현실에 존재하는 물체를 모델링하기 위한 방법론이다.

절차 지향적인 프로그래밍 방법을 객체지향적인 프로그래밍 방법으로 발전시켰다.

 

물체를 객체로 정의하기 위해 해당 객체가 가지고 있는 특성을 분석하여

속성(변수)과 기능(메서드)으로 분리하여 모델링한다.

객체는 실체화된 개념일 수 있고, 추상적인 개념일 수도 있다.

 

상태 유지(속성)

객체는 해당 상태를 저장할 수 있어야 하고 그 상태를 유지해야 한다.

기능 제공(메서드)

객체는 다른 객체와 협력하기 위해 기능을 제공해야 한다.

고유 식별자

객체는 고유한 값을 갖고, 다른 객체와 식별될 수 있어야 한다.

 


 

객체지향의 4대 특성

 

캡슐화

객체의 상태인 속성은 기능을 통해 변경되어야 한다.

무의미한 값을 저장하지 않도록 무결성을 유지할 수 있다.

상속

객체를 구조화할 수 있다. 유지보수가 향상된다.

추상화

객체 간의 특성을 추출하여 추상화시킬 수 있다.

다형성

하나의 인스턴스가 여러 형태로 변화할 수 있다.

코드의 재사용성이 향상된다.

 


 

객체지향 설계의 5원칙(SOLID)

 

객체 간의 의존성은 낮추고, 책임지고 있는 기능에 집중해야 한다.

결합도는 낮추고, 응집도는 높인다.

 

단일 책임 원칙

하나의 객체가 여러 기능을 부담하지 않고, 객체가 하나의 기능에 집중하도록 분리해야 한다.

 

개방 폐쇄 원칙

변경되어야 하는 부분은 폐쇄적이어야 하고, 확장에는 개방되어야 한다.

인터페이스를 사용하면 손쉬운 확장이 가능하고, 클라이언트 코드의 변경도 없다.

 

리스 코프 치환 원칙

부모의 인스턴스가 사용되던 자리에 자식의 인스턴스가 사용된다면

기존의 부모 인스턴스가 갖고 있던 규칙을 자식이 위반하면 안된다. (오버라이딩시 위배가능성)

 

인터페이스 분리 원칙

인터페이스의 기능들을 하나의 인터페이스에 통합하지말고

인터페이스를 분리해서 구현체가 필요한 메서드를 가진 인터페이스만을 구현받도록 분리해야 한다.

 

의존 역전 원칙

의존 객체를 구체적인 구현체가 아닌 상위 추상적인 개념을 의존하게끔 설계해야한다.

 

 


디자인 패턴

 

싱글톤

 

 

생성자를 private로 만들어서 생성할 수 없게 한다.

싱글톤 패턴은 자기 자신을 속성으로 갖고 있다. getInstance 메서드를 통해 자기 자신인 속성을 가져온다.

getInstance가 static이므로 getInstance에서 이용해야 하는 자기 자신인 속성도 static으로 선언된다.

 


 

어댑터

 

 

관련이 없는 두 인터페이스를 중간에서 어댑터가 바꿔치기하여 연결시켜주는 디자인 패턴이다.

기존 인터페이스가 A이고, A 인터페이스를 사용하는 위주로 클라이언트 코드가 작성되었다고 할 때

B 인터페이스 새로 사용해야 한다면 B 인터페이스를 A 인터페이스로 중간에서 교체하는 어댑터를 만들어 줄 수 있다.

 

어댑터는 A 인터페이스를 구현하고, B 인터페이스를 속성으로 받아

A 인터페이스들의 메서드를 호출하면, A메서드를 오버라이딩해서 B 인터페이스 메서드를 대신해서 호출시켜주면 된다.

 


 

프록시

 

 

스프링 프레임워크에서 AOP로 프록시 패턴을 사용한다.

프록시가 인터페이스인 GameInterface를 구현하고, 실제 구현체인 GameService를 속성으로 갖는다.

 

클라이언트 코드에서 직접 GameService를 사용하지 않고 Proxy를 통해 사용한다.

Proxy는 GameService의 메서드를 호출을 하는데, 이때 앞과 뒤로 추가적인 작업이 가능해진다.

 


 

데코레이터

 

상속관계를 통해 super키워드를 이용하여 부모의 메서드를 호출하여

실행 결과를 반환받는 디자인 패턴이다.

 

호출은 (자식 -> 부모) 순으로 호출되며

실행은 (부모 -> 자식)으로 나오게 된다.

 

 


 

옵저버

 

 

변화가 일어날 때 등록해둔 옵저버(인스턴스)들에게 모두 알려주는 것이다.

옵저버를 등록시키고, 특정 함수가 동작할 때 옵저버의 기능이 동작하도록 한다.

 


 

파사드

 

클라이언트 코드가 복잡한 (여러 클래스)들의 기능을 일련의 과정으로 사용할 때

(클라이언트 코드)와 (여러 클래스) 사이에 (파사드 객체)를 두어

파사드 객체가 각 클래스들이 복잡하게 호출되는 일련의 과정을 메서드로 제공한다.

 

클라이언트 코드는 파사드 객체가 제공하는 간단한 메서드를 사용하게 하는 방식이다.

 


 

전략

 

가장 보편적으로 사용되는 패턴으로 

클라이언트 코드단에서 인터페이스를 구현한 구현체 부분을 전략으로 선택하여

선택한 전략 구현체를 사용하는 방법이다.

 

생성자를 인수를 인터페이스로 지정하여 내부 동작들은 인터페이스의 메서드를 사용하여구현체인 인스턴스의 메서드로 동작시키는 것

 

 


 

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 6주차


6주차 학습내용

 

자료구조

 

제네릭

 

컬렉션과 맵

 


자료구조

 

 

데이터를 효과적으로 저장하고 사용하기 위한 여러 가지 방법이 있다.

이러한 방법들을 정리한 것이 자료구조이며 데이터의 사용 방식에 따라 정의된다.

 

배열: 메모리 공간에 연속적으로 배치하여 관리한다. 물리적, 논리적 위치가 같으므로 접근이 빠르다.

연속적인 배치 구조로 내부가 변경된다면 요소들을 재배치하는 과정이 필요하므로 내부가 변경된다면 비효율적이다.

연결 리스트: 자료들을 연결된 형태로 배치한 것이다. 한쪽의 자료가 다른 쪽의 참조 위치를 알고 있다. 양쪽을 연결할 수도 있다.

배열과는 다르게 내부가 변경되어도 좌우 참조값을 변경해주면 되기 때문에 변경에 유리하다.

 

스택: FILO 구조로 쌓듯이 저장하는 자료구조이다.

: FIFO 구조로 먼저 들어간 자료가 먼저 나오는 구조이다.

 

트리: 부모와 자식으로 이루어진 자료구조이다. 보통 이진트리로 사용한다.

이진 검색 트리: 부모 노드보다 작다면 왼쪽 자식으로, 부모 노드보다 크다면 오른쪽 자식으로 배치하여 검색에 효과적인 자료구조이다.

 

그래프: 정점과 간선의 형태로 이루어진 자료구조이다. 간선의 방향이 있다면, 방향 그래프이다.

 

해싱: 검색을 효과적으로 하기 위한 자료구조이다. 기본적으로 배열과 같은 논리로, key의 해시 함수 결과로 bucket에 저장된

value를 알 수 있으므로 시간 복잡도를 줄일 수 있다.

 

 


제네릭

 

 

제네릭: 클래스 내부에서 사용하는 자료형을 미리 정의해두지 않고, 자료형의 변경에 유리하도록 하는 기능

 

부모가 될 Animal 클래스

 

 

Animal의 구현체인 Dog

 

 

Animal의 구현체인 Cat

 

 

위에서 정의한 구현체를 클래스 내부 자료형으로 사용할 UseClass

(T extends Animal을 사용하면 Animal을 상속받은 클래스만 자료형으로 사용하도록 범위를 줄일 수 있다.)

 

 

최종적으로 제네릭을 사용한 Main 클래스

 

 

 


컬렉션과 맵

 

Collection - List, Set을 이용하도록 정의해둔 인터페이스

구현체 - ArrayList, LinkedList, HashSet, TreeSet..

 

List - 순서가 있고, 중복을 허용한다.

Set - 순서가 없고, 중복을 허용하지 않는다.

 


 

Map - Map을 이용할 수 있도록 정의해둔 인터페이스

구현체 - HashMap, TreeMap

 

Map - Key-Value 쌍으로 정의된 자료구조, Key는 중복을 허용하지 않는다.

 

 

 


 

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 5주차


 

5주차 강의 학습내용

 

interface
자바의 유용한 클래스
자료구조

 


interface

 

객체지향의 4가지 특징으로 가장 중요하다고 여겨지는 것은 다형성이다.

다형성을 더 효과적으로 사용하는 것을 목적으로 만들어진 것이 인터페이스이다.

 

기본적으로 인터페이스는 클래스가 아니며, 추상 메서드를 갖고 있다고 생각하면 된다.

전에 학습한 추상 클래스는 기본적인 클래스의 틀을 유지하면서 추가적으로 추상 메서드를 갖고 있다.

 

반면, 인터페이스는 추상 메서드만을 갖는다.

추상 메서드 외에 static 메서드나 default 메서드도 갖는 것이 가능하지만

추상 메서드가 가장 중요하다.

 

인터페이스를 구현하게 되면 클래스를 작성하기 이전에 미리 어떠한 함수를 구현해야 하는지 알 수 있으며

해당 인터페이스를 구현했다면 인터페이스에서 작성한 모든 추상 메서드를 구현한 것이 된다.

 

인터페이스를 구현한 클래스가 여러 종류라면 그중 원하는 인스턴스로 교체해주면 간단히 다형성을 사용할 수 있다.

인터페이스에서 구현할 메서드들을 추상 메서드로 미리 명시해줬기 때문에 함수의 반환 타입, 함수명, 매개변수는 같아진다.

이렇듯 인터페이스를 사용하면 다형성을 효과적으로 이용할 수 있기 때문에 사용부의 코드 변경이 굉장히 축소된다.

Property에 key value형태로 value만 바꿔주며 사용부의 코드 변경을 전혀 하지 않게 만들 수도 있다.

 

또한 자바에서 상속은 단일 상속으로 제한이 있기 때문에 직접적인 부모-자식 관계가 아닌

연관성이 적은 클래스들에서는 상속을 받기 어려울 수 있다.

하지만 인터페이스는 이러한 제한이 없기 때문에 연관이 없었던 클래스들의 공통 기능을 만들어 줄 수 있다.

 

 

 


자바의 유용한 클래스

 

Object

toString() : 객체의 참조변수를 참조값이 아닌 String을 반환하도록 재정의 할 수 있다.

equals() : 객체의 참조주소를 비교한다.

hashcode() : hash를 사용하는 Collection에서 문제가 없도록 equals와 같이 재정의 한다.

 

Class

 

 

로컬에 클래스가 없는 경우 해당 클래스의 멤버를 사용할 수 없다.

 

class 클래스는 컴파일된 class 파일 정보를 불러와 동적 로딩 시킨 후 사용할 수 있게끔 도와준다.

Reflection programming으로 활용할 수 있다.

 


자료구조

 

(Stack)

Stack = new Stack

(Queue)

Queue = new LinkedList

(Array)

ArrayList = new ArrayList

(Linked List)
LinkedList = new LinkedList

 

(Hash)
HashSet = new HashSet
HashMap = new HashMap

 

(Heap)

Queue = new PriorityQueue

(BinarySearch Tree)
TreeSet
TreeMap

 

 

 

 


 

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 4주차


 

Java & SpringBoot로 시작하는 웹 프로그래밍 강의는 전체 분량이 8주 분량이고 이번이 4주차로 절반이 지났다.

4주차에서는 3주차에 이어서 객체에 대해서 좀 더 깊게 다룬다.

 

 


상속

 

자바에서 모든 클래스는 Obejct class를 상속받는다.

상속은 extends 키워드로 단 하나의 클래스만 상속 가능하다.

 

클래스가 생성되는 순서는 부모 클래스 -> 자손 클래스이다.

그 이유는 super 키워드 때문인데, super 키워드는 생성자 제일 상단에 위치하여 부모 클래스의 생성자를 호출한다.

자손은 부모의 필드와 메서드를 상속받지만 생성자는 상속받지 않는다.

 

부모 클래스는 일반적인 개념이고

자손 클래스는 부모 클래스를 좀 더 구체화한 개념이다.

 

 

main에서 Child의 생성자를 이용해서 인스턴스를 생성하면

Child class 생성자에서 super()로 Parent class의 생성자를 호출하고

Parent class 생성자에서 super()로 Object class를 호출한다.

 

호출 순서: main -> Child -> Parent -> Object

생성 순서: Object -> Parent -> Child -> main

 

super() 키워드는 항상 생성자의 첫 줄에 위치하고 있어야 하며 이는 this()와 같다.

그러므로 한 생성자에서 super()와 this()를 같이 사용하는 것은 불가능하다.

 

 기본 생성자와 마찬가지로 명시하지 않았다면 super()를 컴파일러가 자동으로 추가한다.

상위 클래스에 기본 생성자가 없다면 super(변수)로 명시적으로 부모 생성자를 호출해줘야 한다.

 


 

부모 클래스에는 parentMethod가 있다.

자손 클래스에는 childMethod와 부모 메서드를 재정의한 parentMethod가 있다.

 

 

Child 인스턴스의 타입이 Child라면 부모 메서드와 자손 메서드를 전부 사용할 수 있다.

이때 부모 메서드를 자손 메서드가 오버 라이딩했다면 오버 라이딩된 자손 메서드를 사용한다.

 

형 변환하여 타입을 부모로 바꾸게 되면 자손 메서드를 사용할 수 없게 된다.

타입이 부모이므로 자손 필드와 메서드에 접근할 수 없게 된다.

 

단, 부모 메서드가 오버 라이딩되어있다면 오버 라이딩된 메서드를 사용한다.

오버라이딩된 메서드를 통해 자손의 필드와 메서드에 접근하여 사용할 수 있다.

 

 


추상 클래스

 

추상 클래스는 추상 메서드를 1개 이상 갖고 있는 클래스이다.

추상 메서드는 구현부가 없는 메서드이다.

 

추상 클래스는 인스턴스화 될 수 없고 자손 클래스가 상속하여 사용한다.

상속받은 자손 클래스는 추상 메서드를 모두 구현해야 한다.

 

 

 


 

 

 

 

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 3주차


Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강을 수강한 지 3주차가 되었다.

3주차에서 배운 내용은 객체의 기본적인 작성 내용을 배운다.

추가로 배열에 대해서 배우는데, 이러한 배열을 더 손쉽게 다룰 수 있도록 도와주는

JAVA API인 ArrayList에 대해 배웠다.

 


3주차

 

3주차에서 다루는 객체지향의 특징은 정보은닉과 캡슐화에 대한 내용이다.

정보은닉은 멤버 변수가 특정 범위나 특정 조건을 만족해야 할 때 외부에서 함부로 변수 값을 조정하지 못하도록 하는 것이다.

캡슐화는 클래스의 구현된 함수를 통해 객체간의 협력을 가능하도록 하여, 낮은 결합도를 유지할 수 있다.

 

객체를 정의할 때 정보은닉과 캡슐화에 유의하며 구현하게 되면

객체간의 협력을 할 때 오류를 최소한으로 낮추고 효율적으로 객체를 이용할 수 있다는 장점이 있다.

 

 

강의 내용을 토대로 하나의 객체를 작성했다.

 

클래스 멤버

해당 클래스는 글 번호, 글 제목, 글 내용의 정보를 갖는 클래스다.

인스턴스 변수는 외부에서 접근하지 못하도록 접근제어자를 private로 설정하였고,

생성자 오버 로딩을 통해 생성자는 2개로 구성했다.

 

생성자의 접근제어자는 default이므로 같은 패키지에서만 인스턴스를 생성할 수 있을 것이다.

글 번호마다 번호를 부여해야 하므로 클래스 변수를 하나 생성해두었고,

인스턴스가 만들어질 때마다 하나씩 증가하여 해당 인스턴스의 글 번호로 사용되게 하였다.

 

메서드

메서드의 종류는 총 4가지로 구성했다.

글 제목과 글 내용을 보여주는 showPost,

제목을 수정하는 modifyTile,

글 내용을 수정하는 modifyText,

생성된 글의 총개수를 보여주는 postCount를 만들어 두었다.

 

 

 

메인에서 만들어진 객체를 생성하여 각 기능을 사용하면 다음과 같다.

 

 


 

추가로 강의를 수강하기 이전에 강의 제목만 보고

학생들이 운송 수단을 타고 이동하는 객체 협력을 구현해봤는데,

매끄럽게 구현되지는 않았다.

 

객체 간의 협력은 Trans 클래스의 getMoney 함수를 통해 이루어진다.

학생이 Trans.getMoney()를 이용해서 각자가 내는 돈을 Trans 객체가 계속해서 모으며

학생은 Trans.paymoney 객체의 설정된 비용만큼 자신의 돈을 소모한다.

 

 

 

main함수에서 객체를 생성하고 출력 결과는 다음과 같다.

 

 

 


배열에 대한 사용 부분은 이전에 작성한 글이 있어서 따로 이곳에 작성하지 않았다.

https://komas.tistory.com/58

 

[JAVA] 자바 배열 array 사용법

[JAVA] 자바 배열 array 사용법 자바의 배열 기본적으로 배열이란 하나의 공통 타입을 갖는 여러 개의 변수들을 모아서 관리하기 위해 사용합니다. 여러 변수들을 라인마다 입력하는 것 보다는 사

komas.tistory.com

 


 

반응형
반응형

 


[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 2주차


 

내일 배움 카드를 통해 패스트캠퍼스에서 자바 스프링 강의를 수강 중에 있습니다.

이번 주차는 2주차로 자바에서의 조건문, 반복문인 제어문을 배웠고, 객체의 초반부 강의를 수강했습니다.

이를 정리, 기록하고자 글을 작성합니다.

 


  • 조건문
  • 반복문
  • 객체 기초

자바 조건문 - if else, switch

 

if else

 

조건문은 if문의 내부 조건이 참이라면 해당 부분만 동작하고 아래 else if, else 문은 동작하지 않습니다.

만약 if문이 거짓이고, else if가 참이라면 마찬가지로 else if가 동작하고, 아래 else 문은 동작하지 않습니다.

즉, else 문은 if, else if 가 모두 거짓이어야 그때서야 동작합니다.

 

if와 else if는 내부 조건을 확인하여 동작하는 같은 역할이지만 상호 배타적으로 한쪽이 동작하면 다른 쪽이 동작하지 않습니다.

제어가 위에서 아래로 내려오면서 condition을 확인하므로 우선권은 if문이 갖습니다.

else if는 여러 개 작성이 가능합니다.

 

 

 

switch

 

다른 조건문으로 switch 문이 있습니다.

switch의 내부 조건을 확인하고 일치하는 case로 제어를 넘겨줍니다.

조건은 정수, 문자열, 상수가 가능합니다. 변수, 실수는 불가능합니다.

break가 없다면 해당되는 case 아래 case들을 모두 실행하므로 break를 적절히 사용해주어야 합니다.

 


자바 반복문 - while, for

 

while

 

자바에서의 반복문으로 while이 있습니다. while은 condition이 true일 때 계속 동작을 하다가 false가 되면 종료를 합니다.

해당 코드는 5 미만일 때 종료가 될 것처럼 작성했지만 사실 4일 때 while문으로 들어가서 5를 만들기 때문에 최종적으로 sum은 5가 됩니다.

 

 

for

 

다른 반복문인 for문은 (초기식, 종료식, 증감식)으로 구성되어 있습니다.

초기식은 반복 횟수를 위해 사용할 변수를 초기화해줍니다.

종료식은 반복문이 언제 종료될 것인가를 결정합니다.

증감식은 반복 횟수를 위해 사용할 변수를 증감해주는 역할을 합니다.

쉼표를 기준으로 초기식에 여러 변수를 선언할 수 있고, 증감식에도 여러 변수 증감이 가능합니다.

코드는 while때와 마찬가지로 i가 0부터 4까지 총 5회 반복을 진행하기 때문에 sum은 5가 됩니다.

 

 


자바 객체 

 

객체지향 프로그래밍이란 현실 세계의 구체적, 추상적 단위를 객체로 설계하여 각 개체의 속성, 기능을 통해 협력하여 동작하도록 하는 것입니다.

 

객체를 클래스로 구현하는 방법

  • 속성은 멤버 변수로 선언
  • 기능은 메서드로 선언

member

객체의 속성은 클래스 내부에 작성합니다.

 

 

method

객체의 기능인 메서드는 반환 타입, 함수명, 매개변수, 몸체로 구현합니다.

 

 

객체의 생성

객체는 new 연산자를 통해 인스턴스로 생성되고 생성된 인스턴스는 힙 메모리에 동적 할당됩니다.

인스턴스가 사용되지 않으면 가비지 컬렉터가 사용하지 않는 인스턴스를 제거합니다.

 

생성자

생성자는 객체의 멤버 변수를 초기화해주는 역할을 합니다.

new 연산자를 통해 인스턴스를 생성할 때 초기화해줄 수 있습니다.

매개변수가 없는 기본 생성자는 컴파일러가 추가해주지만, 생성자를 작성하게 되면 기본 생성자를 추가하지 않습니다.

생성자는 오버 로딩이 가능합니다.

반응형
반응형

[학습일지] Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 1주차


 

국민 내일 배움 카드를 통해 JAVA와 SpringBoot의 강의를 들을 수 있는 정부 지원 사업을 알게 되어 카드를 먼저 신청한 이후에 패스트캠퍼스에서

강의를 수강하게 됐습니다. 카드의 발급은 5일 정도 걸렸고, 강의는 일주일마다 새로 수강생들의 신청을 받는 것 같습니다.

자세한 수강 방법은 HRD-Net 또는 패스트캠퍼스 홈페이지에 접속하면 상단 메뉴에서 쉽게 찾을 수 있을 겁니다.

 

수강 신청한 강의는 총 8주 과정으로 기본적으로 자바에 대해서 먼저 배우며, 이후에 SpringBoot를 배우는 과정입니다.

강의 기간인 8주 동안의 과정을 기록하고, 공부한 내용들을 정리하기 위해 글을 작성하기로 했습니다.

 

 


1주차

 

자바 프로그래밍 특징

  • 객체 지향 프로그래밍 언어입니다.
  • 오픈 소스 라이브러리가 풍부합니다.
  • 자바는 컴파일 이후에 운영체제에 따라 설치된 JVM이 바이트 코드를 실행하므로 운영체제에 영향을 받지 않습니다.

* 자바 소스코드를 컴파일하면 컴파일러가 바이트 코드로 변환을 합니다. 운영체제에 따라 설치된 JVM이 다르며

JVM은 컴파일러가 변환한 바이트 코드를 읽어 자바 프로그램을 실행합니다.

 


자바 프로그램 실행과 진법 표현

 

자바 프로그램 실행

 

자바 진수 표현

진수를 표현하기 위해 리터럴 앞에 각 진법마다 2진수(0B), 8진수(0), 16진수(OX) 입력하면 진수 표현이 가능합니다.

 


자바의 자료형 8가지

 

자바에는 기본 자료형으로 8가지 종류가 있으며, 각 자료형은 바이트 크기가 다릅니다.

변수를 자료형에 따라 선언하면 해당 변수는 메모리 공간을 자료형의 바이트 크기만큼 차지합니다.

 

정수형: byte(1), short(2), int(4), long(8)

실수형: float(4), double(8)

문자형: char(2)

논리형: boolean(1)

 

기본적으로 자바에서는 모든 리터럴 숫자의 자료형을 int를 사용합니다.

형 변환은 자신보다 바이트 크기가 큰 자료형으로 값을 참조할 때 자동 형 변환이 일어나지만,

자신보다 작은 바이트 크기의 자료형으로 변경할 땐 강제 형 변환이 필요합니다.

byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)

 

주의할 점은 long은 8바이트이고, float은 4바이트이지만 실수형의 숫자 표현 범위가 더 넓기 때문에

long이 바이트 크기가 크더라도 float으로 자동 형 변환이 가능합니다. 역순은 강제 형변환이 필요합니다.

 


자바의 연산자

 

산술 연산자: *, /, %, +, -

비교 연산자: <, >, <=, >=, ==, !=

논리 연산자: &&, ||, !

대입 연산자: =

* 대입연산자는 산술 연산자와 같이 복합 연산자로 사용할 수 있습니다.

 

자바에서의 연산자 우선순위는 산술 > 비교 > 논리 > 대입 연산자 순서로 이루어집니다.

 

 

반응형

+ Recent posts