목록Computer Engineering (30)
Inor
enum(열거형) 자바에서 상수를 표현할때 enum 키워드를 사용 합니다. enum이 자바에 추가되기 전에 사용하던 상수를 표현하는 몇 가지 방법이 있었습니다. 하지만, enum이 추가된 후에 대부분의 자바 개발자가 enum을 사용해서 상수를 표현할 정도로 중요한 기술 됐습니다. enum을 사용하면 상수라는 것을 명확히 표현할 수 있고 코드의 가독성이 증가 합니다. 자신만의 네임스페이스를 갖고 있으며 형 안정성을 보장 해줍니다. 또한, 원시 데이터 타입인 int와 char과 같이 switch 문에서 사용이 가능 합니다. 아래는 enum을 사용하는 방법들 입니다. enum Currency{ DOLLLAR, EURO, YEN, YUAN } public class EnumExam { public static ..
상수 상수란 변수의 반대로 변하지 않는 값을 의미 합니다. 프로그램에서는 상수를 통해서 객체의 상태를 나타내기도 합니다. 자바는 아니지만 인턴을 하면서 Unity로 개발할 때 객체의 상태를 표현 하기도 했습니다. 객체의 상태(이동, 정지, 사망, 공격)를 정의하고 해당 객체가 그에 맞는 행동을 하도록 했습니다. 또한, 안드로이드를 개발할 때는 서버와의 통신을 할때 페이지 url, 페이지 파라미터(쿼리스트링) 등을 상수로 정의하여 사용 했습니다. final static Unity에서는 C#에서 제공하는 enum(열거형)을 사용 했지만 안드로이드에서 상수를 사용 할때는 final static 키워드를 사용해서 상수를 정의 했습니다. 아래는 final static을 이용해서 상수를 정의하는 코드 입니다. cl..
Runnable 자바에서 스레드를 구현할 때 Thread Class와 Runnable Interface를 이용 합니다. 둘의 뚜렷한 차이점은 클래스와 인터페이스라는 구현된 방식에서 발생 합니다. 자바에서는 한개 이상의 클래스를 상속 받을 수 없습니다. 다중 상속을 언어 차원에서 막았기 때문 입니다. 그렇기 때문에 Thread 클래스를 상속(extends) 받아서 스레드를 구현한 자식 클래스는 다른 클래스를 상속(extends) 받을 수 없습니다. 그러나 Runnable 인터페이스를 상속(implements) 받은 자식 클래스는 다른 클래스를 상속(extends) 받을 수 있습니다. 즉, 엄밀히 따지면 다중 상속은 아니지만 효과를 낼 수 있습니다. Runnable 인터페이스를 상속 받은 클래스도 Threa..
Synchronized 자바의 Thread Class의 사용 방법에대해 학습 하면서 간단하게 synchronized 키워드를 알아봤습니다. 동기화가 필요한 경우에 사용하는 키워드로서 synchronized block에서 다른 스레드가 작업을 수행중일 경우에 다른 스레드가 이 영역의 작업을 수행하지 못하도록 하는 키워드 였습니다. 이 글에서는 synchronized을 사용할 경우 주의해야되는 상황에대해서 알아보도록 하겠습니다. 먼저 아래 코드의 코드를 확인 해보겠습니다. package threadTest; class TestObj{ public void methodA(int id){ for(int i=0;i
Thread(스레드) 프로세스란 메모리에 올라와 cpu를 할당 받으면서 운영체제에의해서 실행되고 있는 프로그램이라는 뜻 입니다. 이런 프로세스를 구성하고 있는 단위를 스레드라고 칭합니다. JAVA에서는 기본적으로 하나의 메인스레드를 제공하고 필요에 따라서 여러개의 스레드를 만들어서 사용할 수 있습니다. 그렇다면 여러개의 스레드를 만들어서 사용하는 이유가 궁금할 수 있습니다. 그 이유는 간단하게 말하면 멀티태스킹을 가능하게해서 프로세스의 효율을 높이기 위한 것 입니다. 하지만 프로세스의 성능을 높이기 위해서 너무 많은 스레드를 생성 하게되면 Context Switch 때문에 오히려 효율이 떨어지게 됩니다. 만약에 1인 쉐프로 운영이 되는 레스토랑이 있다고 생각해 봅시다. 쉐프는 주문, 요리, 설거지를 해야..
Static 메서드 오버라이딩 static 메서드는 클래스 메서드라고도 불리는 특정 클래스의 객체들이 공유하는 메서드 입니다. static 메서드는 런타임시에 생성 되는 것이 아니라 컴파일시에 생성 되고 메모리에 적재되는 형식 입니다. 그렇기 때문에 런타임시에 해당 메서드를 구현한 실제 객체를 찾아가서 호출을 합니다. 이것을 다형성이라고 합니다. 그러나 static 메서드는 컴파일시에 선언된 객체의 메서드를 찾아 호출 합니다. static 메서드에대해서는 다형성이 적용되지 않습니다. class Car{ public void accelate(){ System.out.println("일반 엔진 사용"); } public static void stop(){ System.out.println("일반 브레이크 사..