WIL - 1주차 정리

김지현·2023년 4월 9일
0

항해99

목록 보기
6/16

2023-04-09


JVM

(Java Virtual Machine)
자바 프로그램 실행환경을 만들어 주는 소프트웨어
JVM을 사용함으로서 Java는 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작할 수 있음

자바 실행 환경 JRE(Java Runtim Environment)에 포함되어있음


변수

(저장공간)

선언 및 저장

타입 이름 = 값;

int num = 10;

종류

< 기본형 >

1) 논리형 : boolean
2) 문자형 : char
3) 정수형 : byte, short, int, long
4) 실수형 : float, double

< 참조형 >

1) 문자열 : String
2) 그 외 : Object, Array, List ...


형변환

주로 기본형 변수인 정수 <-> 실수 <-> 문자 사이에서 일어나며 어떤 변수형을 다른 형으로 변환함

< 자동 형변환 >

값의 손실이 없음

< 강제 형변환 >

( = 캐스팅 )
값의 손실이 있음


연산자


1) 산술 연산자 : + , - , * , / , % , << , >>
2) 비교 연산자 : > , < , >= , <= , == , !=
3) 논리 연산자 : &&(그리고), ||(또는), !(반대 boolean값)
4) 대입 연산자 : =(기본 대입 연산자), +=(복합 대입 연산자), -=(복합 대입 연산자) ...
5) 기타 연산자 : 형변환 연산자, 삼항 연산자, instance of 연산자


조건문

1) if문 : if (조건) {연산} else if (조건) {연산} else {연산}
2) switch문 : switch (피연산자) { case (조건) : (연산) }


반복문

1) for문 : for (초기값; 조건문; 증가연산) {연산} , for (변수타입 변수명 : 목록변수) {연산}
2) while문 : while (조건문) {연산}
3) do-while문 : do {연산} while (조건문)


배열

선언 및 생성

타입[] 변수명 = new 타입[배열의 길이];
타입 변수명[] = {배열의 값들};

int[] intArray = new int[3];
int[] intArray = {1, 2, 3, 4, 5};

2차원 배열

선언 및 생성

타입[][] 변수명 = new 타입[][];
타입 변수명[][] = new 타입[][];
타입[] 변수명[] = {{배열의 값},{배열의 값}}

int[][] array = new int[][];
int[][] array = {
	{1, 2, 3},
    {4, 5, 6}
};


collection

배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있음

1) List(ArrayList)
: 순서가 있는 데이터의 집합 (데이터 중복 허용). 동적배열

2) LinkedList
: 메모리 남는 공간 여기저기에 실제 값을 담아놓음. 값 추가, 삭제 속도↑ 조회 속도↓

3) Stack
: FILO(먼저 들어간 것이 나중에 조회)
[ push(값 추가), pop(나중에 넣은 순서대로 모두 출력), peek(제일 나중에 추가한 값 출력), size(크기) ]

4) Queue
: FIFO(먼저 들어간 순서대로 값을 조회)
[ add(값 추가), poll(넣은 순서대로 모두 출력), peek(가장 먼저 추가한 값 출력), size(크기) ]

5) Set
: 순서가 없는 데이터의 집합 (데이터 중복 허용 안함)

6) Map
: 순서가 없는 Key-Value 데이터의 집합 (Key값은 중복 허용 안함)


객체지향 프로그래밍

(Object-Oriented Programming, OOP)
프로그래밍에서 필요한 데이터를 추상화 시켜 속성(필드)와 행위(메서드)를 가진 객체 로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

■ 캡슐화

속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것 (정보은닉)

■ 상속

클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것
1) 코드의 중복이 줄어들며 코드의 재사용성이 증가됨
2) 객체 간의 구조 파악이 쉬움
3) 일관성 유지하기 좋음

■ 다형성

객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것
(어떠한 요소에 여러 개념을 넣어 놓는 것)

■ 추상화

객체에서 공통된 부분들을 모아 상위개념으로 새롭게 선언하는 것
(공통의 속성과 행위를 찾아 타입을 정의하는 과정)

a, b, c 라는 '자동차'가 있을 때, '자동차'라는 <추상화> 집합을 만들어두고 자동차들이 가진 공통의 부분들을 넣어두면, 새로운 d 라는 '자동차'가 추가될 때, 다른 곳의 코드를 수정할 필요 없이 추가로 만들 부분만 새로 생성해주면 됨


정리 및 다음주 목표

이번주는 정말 정신없이 지나갔다.
새로 배운 것들이 너무 많아서 정리하기도 힘들었고 배운 건 많지만 문제는 풀리지 않았다.
그래도 하루하루 발전하고 있다는 생각이 많이 드는 한 주였다.

다음주는 조금 더 어려운 알고리즘 문제가 기다리고 있다.
잘 풀리지 않겠지만 포기하지 않고 계속 구글링해보고 질문도 해보면 언젠가는 그 정도쯤이야!하는 실력이 되어있지 않을까싶다.
이번주에 프로그래머스 1레벨 알고리즘 문제를 많이 풀어봤더니 기초가 많이 부족하다는 느낌을 많이 받아서 기초를 다지기 위해 0레벨 문제도 계속 풀어보고 Java 객체지향나 예외처리 부분을 더 이해할 수 있도록 해야겠다.

0개의 댓글

관련 채용 정보