(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};
타입[][] 변수명 = new 타입[][];
타입 변수명[][] = new 타입[][];
타입[] 변수명[] = {{배열의 값},{배열의 값}}
int[][] array = new int[][];
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있음
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 객체지향나 예외처리 부분을 더 이해할 수 있도록 해야겠다.