12.07~12.29까지 한 것들 정리

김선우·2024년 1월 1일

Academy

목록 보기
1/2

12.07


자바

단축키정리

class Main { //메인 클래스
public static void main(String[] args) { //메인 메서드

  • .대, 소문자 구별해야 된다.

  • 들여쓰기 잘보기 (중괄호 당 탭 1번)

  • 앞에 //를 쓰면 주석처리 되어 읽혀지지 않음

  • .마지막코드 앞에 ; 꼭 붙이기

  • println 에서 ln은 라인을 뜻한다. 라인을 바꾸겠다는 뜻

  • = 기준으로 왼쪽에 있으면 왼쪽에 있지 않으면 값이다.


  • 출력
    System.out.print()
    소괄호 안의 내용을 단순 출력하는 것으로 줄 바꿈을 하지 않는다.
    System.out.println()

    소괄호 안의 내용을 콘솔에 출력하고 줄 바꿈(개행: \n)을 한다.
    System.out.printf()

    지시자(Specifier)와 플래그를 이용해 변수의 값을 여러 형식으로 출력할 수 있는 메서드이다. 즉, 어떠한 형식이 정해져 있고, 이에 맞추어 출력을 할 수 있다.

    자세한 내용


  • 식별자
    클래스 이름, 변수 이름, 메서드(함수) 이름 등을 지정할 때 개발자가 직접 입력시킨 이름을 식별자라고 합니다.

    첫 문자는 영문자여야 합니다. _, $ 와 같은 기호는 첫 문자로 가능하지만 권장하지 않습니다.

    자바는 대소문자를 엄격히 구별합니다.
    공백 문자는 사용할 수 없습니다.

    자바언어에서 특별한 의미를 가지는 식별자인 예약어는 이름으로 지정할 수 없습니다.

  • 데이터 형 (Date Type)

    • 기본 데이터 형 (PDT: Primitive Data Type)

      논리형 - boolean

      문자형 - char

      정수형 - byte, short, int, long

      실수형 - float, double

    • 참조 데이터 형 (RDT: Reference Data Type)
      8개의 기본형에 속하지 않는 모든 데이터 형

(1) 논리형 - boolean

boolean은 반드시 소문자 true, false 값만 가질 수 있습니다.

(2) 문자형 - char

char는 하나의 문자를 가지며, 내부적으로 데이터를 정수형으로 저장합니다. 따라서 문자를 이용한 연산이 가능합니다. 자바에서는 하나의 문자를 작은따옴표로 묶어야 합니다.

문자열은 기본형이 아닌 참조형입니다. 문자열은 연산 불가능합니다. String이라고 하며 큰따옴표로 묶어야 합니다.
ex) String str="JAVA";

(3) 정수형 - byte, short, int, long

기재된 순서대로 저장할 수 있는 데이터의 범위가 커집니다. int가 기본형이며, long형을 표현할 때는 L 또는 l을 정수값 뒤에 붙여 기본형과 구분해 주어야 합니다.

(4) 실수형 - float, double

실수형은 소수점을 가진 숫자를 의미합니다. double이 기본형이므로 float의 경우 F 또는 f를 실수값 뒤에 붙여 구분해 주어야 합니다.

자세한 내용


#자바 연산자


12.08


주로쓰는 단축키

  • Ctrl + D : 한 줄 삭제

  • Ctrl + Alt + Up(Down) : 한 줄(블럭) 복사

  • Ctrl + Shift + F : 코드 자동 정리

  • Ctrl + S : 저장

  • Alt + Up(Down) : 위(아래)줄과 바꾸기

  • syso 입력한 후 Ctrl + Space : System.out.println(); 자동 입력됨

  • main 입력한 후 Ctrl + Space : main 문이 자동 완성

조건문

개발자가 작성한 코드를 조건에 따라 코드의 실행 흐름을 다르게 동작하도록 제어하는 것

if

if, else

if, else if, else

12.11


반복문

while 반복문

for 반복문


12.12


반복문 연습

부동소수점(참고)

배열

객체

  • 객체 => 폴더 => 여러개의 파일

  • 관련있는 데이터

  • 주체 : 내(실체)가 나(실체)를 가리킬 때

  • 객체 : 내(실체)가 다른거(실체) 가리킬 때

  • 객체랑 변수는 연결되어있고 변수안에 객체를 꺼낼수 있는 리모컨이 있다고 생각하면 추상하기 쉬움.

객체가 필요한 이유

  • 변수에는 오직 값 1개만 넣을 수 있다.

  • 프로그래밍을 하다보면 변수에 값을 여러개 넣을 필요가 있을 때가 있다.
    그래서 고안된 것이 객체이다.

  • 변수에는 오직 1차원적인 값만 저장 할 수 있다.

1차원 적인 값(데이터)

  • 5

  • 3.14

  • 'a'

  • true

복잡한 값

객체


  • 런타임에러(runtime) : 동작과정

  • 컴파일타임(Compile Error) : 문법과정


클래스 설정

(참조 타입)


12.13


메소드

클래스의 구성요소

  • 속성(상태,단순 데이터) - field (변수) 명사

  • 기능(행동,실행 데이터) - method (함수) 동사


class 안에다가
ex) void() {

}
하면 메소드 생성.


자세한 내용

  • 지역변수 : 지역공간, 메서드 내부

  • 전역변수 : 전역공간, 메서드 외부

  • 매개변수 : 매개체


12,14


변수의 생명주기(라이프사이클, 스코프)

매개변수, 인자의 차이

코드 예시

  • void 자리에 int, double, boolean 같은 타입이 올 수 있음. void(return type) : return 하지 않겠다.

  • void가 아닐시 반드시 return 해야된다.

  • return이랑 타입이랑 맞아야한다.

  • { } : method body

  • 함수의 종료시점은 return statement 부분. return이 없으면 } 부분

  • is로 시작하는 함수명은 관례적으로 타입이 boolean **

  • 같은 package 있으면 서로 다른 클래스가 공유된다 **

  • package를 새로 만들고 옮겨주면된다.

12.15


상속 - inheritance

  • oop 특징중 하나이다.

  • 다중 상속은 불가능하다. **

  • 그러나 부모 클래스가 interface 클래스면 다중 상속이 가능해진다. => 다중 구현

  • 순도 100% 추상 메서드만 가지는 추상 클래스 : interface 클래스를 만들면 그 안에 있는 메소드가 전부 abstract 인 추상 메소드라 메소드에 abstract를 안써도 된다. 하지만 필수는 아니다.

  • 대신 물려받은 클래스의 메소드는 무조건 구성을 해야된다.

  • 부모클래스가 interface면 물려받는 클래스에 extends 대신 implements를 써줘야하고 메소드마다 public을 무조건 붙여줘야한다.

  • abstract 추상 메서드, 추상 클래스를 만드는 키워드 -> 메서드 바디가 없어지기 때문에 구현을 못함 -> 의도 : 건드리지마(버튼용)


이때까지 배운걸 복합적으로 사용한 것



12.18


생성자(constructor)

  • 자바에서 생성자(constructor)의 이름은 해당 클래스의 이름과 같아야한다.
  1. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않습니다.

  2. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있습니다.

  3. 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있습니다.

  • 즉, 생성자도 하나의 메소드이므로, 메소드 오버로딩이 가능하다는 의미입니다.

  • 부모클래스와 자녀클래스 둘다 생성자가 있으면 부모클래스부터 생성자가 실행된다. (순서대로 생성자 실행)

  • 한 클래스에 생성자가 여러개면 지정한 한 개의 생성자만 실행된다.

  • static 변수는 객체마다 존재하지 않는다. (클래스 내부에만 존재)

ctrl + shift + O -> java liberey 불러오기 (import~)*

ArrayList

자세한 내용

제네릭

자세한 내용

예시

  • 번호가 자동적으로 1씩 증가하는 코드

12.07~.12.18까지 해오면서 부족한 부분

  • 객체에 대한 완벽한 이해(그림으로 그리며 어떻게 연결되는지 100% 파악하기)

  • 자바 기본 타입 모두 외우기 (조금씩 헷갈림)

  • 기본 타입말고 많이 쓰는 참조형 그리고 scanner 외우기

  • 코드 만드는 실력부족(코드잇 기타 코딩문제 많이 풀기)

  • 참조타입들은 4~8 bytes 크기

자바 접근 제한자

class 사람{
private int id;

public void setId(int id) {
this.id = id;
}
}

  • private의 변수(field)명이 id 일 때, 메서드가 set변수명이 되어야한다. (setter)

  • private 값을 가져오려면 굳이 메서드를 만들어서 가져와야한다. (다이렉트로 안됨) (getter)

  • 마우스 우클릭 Source + Generates Getters and Setters

자바 예외 처리

  • 예시

12.19


  • 객체 끼리의 비교는 (==)를 쓸 수 없다.

  • 객체끼리에서의 비교는 equals 메서드(기능)를 쓰면된다. *동등성

String s1 = "하하";
String s2 = "하하";

  • 일 때 자바에서는 s2를 재활용하는 방식으로 생각해서 s1==s2 할 때, true 이지만

String s1 = new String("하하");
String s2 = new String("하하");

  • 를 하면 재활용하는 방식이아니라 생성방식이라 s1==s2는 false가 나온다.

  • 이러는 이유는 자바에서는 메모리 절약을 위하기 때문에 재활용 방식을 사용한다.

  • String 불변성


객체 정보 저장 편의성


  • instanceof : 타입 검사

Scanner

상세한 내용

int n1 = Integer.parseInt(Input[0]);

  • Integer.parseInt(null) 은 인트형으로 바꿔주는 코드

예시


12.20


일반 vs 제너릭 비교정리

자바 배열, ArrayList, HashMap 비교정리


명언 앱 만들기 (~~~ 프로그램 만들기)

  1. 명언 앱 실행(콘솔)

git

오탈자 주의
git config user.name -> 확인용
git config user.email
git config --global user.name "userName" -> 덮어쓰기
git config --global user.email "userEmail"

연동 -> 폴더에 최초 한 번만
git init
git remote add origin 원격 리포지터리 주소
vim .gitignore
i(키보드) 입력 ->
.classpath
.project
.settings
bin
build -> esc -> :wq! enter

업로드 -> 매 업로드시 반복
git add .
git status
git commit -m "commit msg"
git push origin master


"??".trim(); -> 좌우 공백을 없애줌

String content = sc.nextLine().trim();


참고할만한 책들

  • 비전공자를 위한 이해할수 있는 IT지식

  • Clean Code 클린 코드


ctrl + shift + s 전체 저장


과제 : 명언집 만들기 - github

1~5


12.21


  • 명령의 흐름은 수직적일수록 좋다

  • 통신 채널은 적을 수록 좋다

  • 리팩토링, 구현 **매우 중요


parsing

cmd에 삭제?id=4&author=김철수를 입력했을 때,

분석

삭제?id=4&author=김철수 --> cmd
[삭제?id=4&author=김철수] --> cmdBits
cmdBits[0] -> 삭제 -> actionCode
cmdBits[1] -> id=4&author=김철수

params -> Map
paramBits -> [id=4, author=김철수]
for each문
첫번째 : paramStr -> id = 4
paramStrBits -> [id,4]
key -> paramStrBits[0] -> id
value -> paramStrBits[1] -> 4

param -> [{"id":"4"}]

두번째 : paramStr -> author=김철수
paramStrBits -> [author,김철수]
key -> paramStrBits[0] -> author
value -> paramStrBits[1] -> 김철수

param -> [{"id":"4"}], [{"author":"4"}]


과제 : 명언집 만들기 - github - 2일차

6~14

  • Rq::getIntParam : Rq : 클래스 getIntParam : 메서드

**로직 기억하기


12.22


과제 : 명언집 만들기 - github - 3일차

  • 목표 달성

15~18

이 프로젝트에서의 각 클래스에 대한 역할 요약

package com.ws 로 묶여서 다른 클래스여도 임포트할필요가 없다

App : 라우팅, 고객이 올바른 컨트롤러를 만나도록 교통정리

Controller : 본인이 맡은 주제와 관련된 고객의 요구사항을 듣고, 처리 후 응답처리를 할 때, 본인이 판단하지 못하는 것은 서비스에 물어보는게 원칙식당에서 점원의 역할이라고 보면 된다. 고객을 만나서, 그들의 요청을 받고 처리해준다.

Service : 핵심로직을 담당한다. 서비스는 오직 컨트롤러의 요청에 의해서만 일을 한다. 식당에서 메인 요리사의 역할이라고 보면 된다.

Repository : 데이터의 저장/조회를 담당한다.리포지터리는 오직 서비스의 요청에 의해서만 일을 한다.식당에서 재료담당 요리사의 역할이라고 보면 된다.

DB : 데이터의 영속저장/조회를 담당한다. 보통 외부 프로그램으로 작동한다. 즉 개발자가 DB 프로그램을 구현하는 일은 없다. 이미 구현되어 있다. 주로 MySQL, Oracle 과 같은 제품이 많이 사용된다. 식당에서 재료창고 관리자의 역할이라고 보면 된다. DB는 오직 리포지터리의 요청에 의해서만 일을 한다.


  • 기존에 비슷한 코드가 있는 것 같으면 활용할 수 있는 능력 키우기

  • 프로그램에서 모듈들의 응집도는 높을수록 좋고 결합도는 낮을수록 좋다.

  • CRUD

  • Create(생성), Read(읽기), Update(갱신), Delete(삭제)


12.26


TDD

소프트웨어 방법론

IntelliJ

세팅

D2Coding 폰트

다운로드



12.27


사칙연산



12.28


사칙연산 2일차

  • Intellij 브레이킹 한 뒤 디버그하고 F6하면 순서대로 내려가기



12.29


사칙연산 3일차

  • 3 1 + (1 - (4 1 - (1 - 1))) == 0 목표 달성

새 프로젝트 시작


GitHub 연동

인증 -> 하루에 한 번만(학원), 한 번만(집)
git config user.name -> 확인용
git config user.email
git config --global user.name "userName" -> 덮어쓰기
git config --global user.email "userEmail"

연동 -> 폴더에 최초 한 번만
git init
git remote add origin 원격 리포지터리 주소
vim .gitignore
i 입력 ->
.classpath
.project
.settings
bin
build -> esc -> :wq! enter

업로드 -> 매 업로드시 반복
git add .
git status
git commit -m "commit msg"
git push origin master

.gitignore 에 담을 내용


자바 이클립스 주석 남기기

LocalDateTime


0개의 댓글