Java
Java - 중위 - 후위 표기법 변환 & 후위 표기법 계산
간단하게 계산기를 만들던 중 식을 후위로 변환하고 계산할 필요가 생겨 이를 정리해보고자 한다. 간단하게 만들어본 계산기인데 연산자 우선순위에 맞게 계산하려고 하니 막히는 부분이 많았다. 그래서 검색을 한 결과 식을 후위 표기법으로 바꾼 후 계산하는 것이 일반적이라는 것을 알았다. 중위 - 후위 변환 먼저 중위 표기법인 위 식을 후위 표기법으로 변환해 보자. 위 식 "22 + 4 * 36 - 7"을 이진트리 형태로 보면 아래와 같다. 중위 표기법은 22 + 4 * 36 - 7 후위 표기법은 22 4 36 * + 7 - 이다. 이제 변환하는 코드를 짜보자. 변환을 위해 HashMap, Stack, ArrayList를 활용했다. HashMap은 굳이 써야 할까 고민했지만 함수를 공부한다는 느낌으로 사용했다. ..
Java - Java 클래스, 객체, 인스턴스
Java는 객체 지향 프로그래밍(OOP) 언어로 실제 세계는 객체로 이루어져 있으며 발생하는 모든 사건은 객체 간의 상호작용이라는 생각을 기반으로 한다. 이 생각을 구현할 수 있도록 하는 Java의 클래스, 객체, 인스턴스에 대해 알아보자. Java 클래스, 객체, 인스턴스 정의 클래스는 객체를 정의해 놓은 것이다. 객체를 만드는 일종의 틀로 객체를 의미하는 것이 아니다. 객체는 실제로 존재하는 것이다. 책, 모니터, 자동차부터 눈에 보이지 않는 숫자 계산 등도 객체로 바라본다. 즉, 위 둘은 설계도와 제품의 관계를 가진다. 클래스를 구현해 객체를 만드는 이유는 틀만 만들어 놓으면 언제든지 동일한 객체를 만들 수 있기 때문이다. 클래스로부터 객체를 만드는 과정을 인스턴스화라고 하며 인스턴스는 실제 클래스..
Java - Java 배열
Java 배열에 대해 알아보자 배열 배열은 같은 타입의 변수 묶음이다. 아래와 같이 변수를 하나하나 생성하기엔 너무 비효율적이기에 이처럼 묶어서 한 번에 만든다. 배열의 크기는 한번 생성되면 변경할 수 없다. 배열 선언 배열 선언은 아래 2가지 방법으로 할 수 있다. 대괄호의 위치가 다르다. 자료형 배열이름[ ]; 자료형[ ] 배열이름; 보통 두 번째 방법을 많이 사용한다. 이때, 배열 선언은 데이터를 저장하는 공간이 생긴 것이 아닌 주소값을 저장하는 공간이 생긴 것이다. 배열 생성 배열을 선언한 후엔 생성을 해야 한다. 선언해 놓은 배열 이름에 맞게 생성하며 new 연산자를 이용한다. 아래 코드는 선언과 동시에 생성한 것으로, 좌항이 선언, 우항이 생성이다. 위 코드를 메모리 상에서 보면 아래와 같다...
Java - Java 조건문과 반복문
Java 조건문과 반복문에 대해 알아보자 if문 if if문은 조건문 중 하나로 아래의 형태로 사용한다. if(조건식) { ... } 만약 중괄호 내에 들어갈 코드가 한 문장이라면 중괄호를 생략할 수 있다. if(조건식) ... 이때, 조건식은 결과가 true 혹은 false이어야 하며, false면 중괄호 안의 코드가 실행되지 않는다. if-else true일 때와 false일 때를 구분해 동작시키고자 한다면 if-else문을 사용한다. if(조건식) { ... } else { ... } 만약 조건식이 true이면 위, false이면 아래 중괄호의 코드를 실행한다. else if 조건식을 여러 개 사용하고자 한다면 else if를 사용한다. if(조건식) { ... } else if(조건식) { .....
Java - Java 연산자
Java 연산자에 대해 알아보자. Java 연산자 우선순위 모든 언어가 그렇듯 연산자엔 우선순위가 있다. 아래 사진은 Wiwkipedia에 올라와 있는 Java의 연산자 우선순위이다. 정리하면 Java 연산자는 - 산술 > 비교 > 논리 > 대입 순으로 수행된다. - 단항 > 이항 > 삼항 연산자 순으로 우선순위가 높다. - 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다. 예를 들어 y = - x + 2라는 수식에 대해 단항연산자인 -가 먼저, 이항연산자인 +가 두 번째로, 대입 연산자인 =가 마지막으로 수행된다. 글로 표현하면 어렵게 느껴지지만 실제 우리가 연산하는 순서와 비슷하다. 또, 헷갈릴만한 부분은 괄호로 묶음으로써 해결할 수 있다. 각 연산자에 대해 알아보자. ..
Java - Java 변수
변수: 값을 저장할 수 있는 메모리 공간 - 지역변수: 사용 전에 초기화 필수 - 클래스, 인스턴스 변수: 초기화 생략 가능 Java 변수 명명 규칙은 다음과 같다. 1. 숫자로 시작하면 안된다. 2. 특수문자는 _와 $만 사용 가능하다. 3. 예약어를 사용하면 안된다. Java 변수는 기본형과 참조형으로 구분된다. 기본형 - boolean, char, byte, short, int long, float, double 참조형 - 8개의 기본형을 제외한 나머지 타입 기본형 변수에 대해 알아보자. 기본형 변수 8개의 자료형을 정리해 보면 다음과 같다. 각각에 대해 알아보자. 1. boolean 논리 자료형 boolean은 true 혹은 false를 값으로 가질 수 있으며, default값은 false이다. ..
Java - Java 특징
Java 특징 1. OS에 독립적이다. Java 언어는 JVM(Java Virtual Machine)을 이용하여 OS와 Java Application을 연결하기 때문에 Java application은 Windows, Linux, Mac 등 OS의 종류에 구애받지 않는다. 단, JVM은 OS에 맞게 필요하다. 그림으로 보면 다음과 같다. Java application은 JVM에서 실행되기 때문에 반드시 필요하다. JDK(Java Development Kit) 설치 시 JVM, Java 클래스 라이브러리 등을 받을 수 있다. (javac.exe: Java 컴파일러, java.exe: Java 인터프리터, Javap.exe: 역어셈블러, jar.exe: 압축프로그램) JDK = JRE + 개발에 필요한 실행파..