JAVA/Java
-
자바 데이터 타입, 변수, 배열JAVA/Java 2020. 12. 26. 20:50
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익히기 프리미티브 타입 종류와 값의 범위 그리고 기본 값 Primitive Type? 기본자료형 혹은 원시자료형이라고 불리는 프리미티브 타입은 값을 할당할 때 변수의 주소 값에 값이 그 자체로 저장되는 데이터 타입이다. 해당 데이터 타입은 값이 할당되면 앞서 살표 보았던 JVM Runtime Data Area 영역 중 Stack 영역에 값이 저장된다. 종류 Java에서 프리미티브 타입의 종류는 총 8 가지이다. byte, short, int, long, float, double, char, boolean 타입이 그것이다. 타입의 종류와 값의 범위 기본값을 다음과 같은 표로 정리해 보았다. 2. 프리미티브 타입과 레퍼런스 타입 Referen..
-
JAVA 연산자JAVA/Java 2020. 11. 29. 00:18
산술 연산자 수학에서의 산술 연산자에는 사칙연산이 있다. 더하기, 빼기, 곱하기, 나누기를 의미한다. 그렇다면 컴퓨터는 어떨까? Java는 다섯 가지 연산이 있다. 더하기, 빼기, 곱하기, 몫, 나머지이다. 이때 곱하기, 나누기 부분에 차이가 있고 이에 대해 알아보자. 핵심은 곱하기와 나누기의 연산 방식이 비트를 Shift하며 계산을 한다는 특징이 있다. 몫과 나머지를 구하는데 최적화되어있기 때문이다. 물론 소수 출력의 경우는 변수의 Data Type을 실수형으로 사용하면 부동소수점의 활용으로 가능하다. 더하기는 "+", 빼기는 "-", 곱하기는 "*"로 사용 가능하다. 앞서 말해 나누기가 수학에서의 사칙 연산과는 다른데 나누기에는 두 가지 연산 몫과 나머지 연산이 있고 "/"와 "%"로 보기와 같은 사..
-
Maven에 대해서 알아보자JAVA/Java 2020. 8. 30. 20:29
메이븐 이란? 자바용 프로젝트 빌드, 관리에 사용되는 도구이다. 아파치 앤트(Ant)의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 메이븐의 특징은? 1. 빌드 절차를 간소화하는 빌드 도구이다. 빌드란? 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정, 결과물 ex) 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(. xml,. jpg,. jar,. properties)을 JVM이나 톰캣 같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다. 빌드 도구란? 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램. 빠른 기간 동안 계속해서 늘어나는 라이브러리..
-
서블릿 Life Cycle 알아보기JAVA/Java 2020. 6. 2. 21:45
Servlet 이란? 자바로 웹 애플리케이션을 개발할 수 있는 스펙과 API를 제공한다. 가장 핵심적인 클래스는 HttpServlet이다. 이전 CGI방식에 비해 한 요청을 처리할 때마다 프로세스를 만드는 게 아닌 스레드를 만들어서 처리하고 공유한다. Servlet 컨테이너는 Servlet 스펙에 기반하여 Servlet의 라이프 사이클을 다루게 된다. Servlet Code Servlet에 Lice Cycle을 확인하기 위한 코드를 작성해보자. 1. Init() 메서드는 최초 요청을 서블릿 컨테이너가 받고 그 요청을 처리할 서블릿을 찾았다면 서블릿을 인스턴스로 만들고 나서 최초로 한번 호출한다 2. 해당 요청을 처리하기 위해서 http 메서드에 따라서 doget doPost 등의 메서드들이 호출이 된다...
-
왜 Wrapper 클래스는 쓰이는 걸까?JAVA/Java 2020. 5. 21. 22:46
자바는 기본 타입 ( byte, char, short, int, long , float, double, boolean )의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장 ( Wrapper ) 객체 라고 하는데, 기본 타입의 값을 내부에 두고 포장하기 때문에 포장 객체이다. 포장 클래스는 java.lang 패키지에 포함되고 다음과 같이 기본 타입에 대응되는 클래스들이 있게 된다. 이러한 Wrapper 클래스를 사용하는 이유는 뭘까? 다음과 같이 4가지로 정리해 볼 수 있을 것 같다. 1. 래퍼 클래스는 기본 데이터 타입을 Object로 변환할 수 있다. 메소드에 전달된 인수를 수정하려는 경우 오브젝트가 필요하다. ( 기본 유형은 값에 의한 변경 Object는 참조에 의한 변경이기 때문이다. ) 2...
-
객체의 해시코드(hashCode())란JAVA/Java 2020. 5. 19. 23:05
객체 해시 코드란 객체를 식별할 하나의 정수 값을 말한다. Object는 클래스의 최상위 타입이고 Object의 hashCode() 메서드는 객체의 메모리 번지를 이용해서 해시 코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지게 된다. 논리적 동등 비교 시 이 hashCode()를 오버 라이딩할 필요가 있는데, HashSet, HashMap, Hashtable은 다음과 같은 방법으로 두 객체가 동등한 지 비교한다. ( 논리적으로 동등하다는 것은 같은 객체이건 다른 객체이건 상관없이 객체가 저장하고 있는 데이터가 동일함을 뜻한다. ) 위에 예제를 보면 Key 클래스는 equals() 메서드를 재정의해서 number 필드 값이 같으면 true를 리턴하도록 하였다. 이 경우 HashMap의 식별키로 Ke..
-
JAVA의 Comparable, Comparator를 알아보자JAVA/Java 2020. 4. 13. 23:44
가령 "BbAaCc"와 같은 문자열을 "aAbBcC"와 같이 정렬하는 코드를 작성하는 상황이라면 아마도 정렬을 실시하는 코드를 작성하지만 비교 연산을 새로 정의하는 형태로 작성해야 할 것이다. 위 문제의 핵심은 비교 연산의 구현이다. 단순히 문자열을 char배열로 바꾸고 char형을 정렬하는데 비교하자면 ASCII값으로 비교해 버리기에 ABCabc와 같은 형태가 되기 떄문이다. 이렇게 일반적인 정렬 순서가 아닌 새로운 정렬 순서를 정의하고 싶거나 오브젝트를 정렬 시, 오브젝트 정렬에 사용될 값을 지정하는 역할을 하는 인터페이스가 Comparable과 Comparator이다. 위 코드에서 사용된 Arrays의 sort메서드는 배열의 타입이 참 조형일 경우 Comparable, Comparator 인터페이스..
-
자바의 다형성 이란?JAVA/Java 2020. 3. 30. 23:49
다형성에 대해서 알아보자. 다형성이란 하나의 메서드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다. 키보드를 예로 비유를 해보자면 'ESC' 키도 'ENTER'키도 누른다는 push는 같지만 'ESC'는 취소를 'ENTER'키는 실행의 목적을 가지고 있는 것처럼 말이다. 자바를 예로 다형성을 설명하기 가장 쉬운 예는 오버로딩이 아닌가 싶다. 1. 오버로딩 오버 로딩은 같은 이름이지만 어떤 파라미터를 가지고 어떤 리턴 타입을 가지냐에 따라서 다른 메서드가 호출되는 방식이다. 역시 앞의 예와 같이 같은 이름 다른 동작이기에 다형성의 측면에서 볼 수 있는 것이다. 2. 오버 라이딩 클래스 B로 객체를 만드는데 데이터 타입이 A인 경우를 보자. ( 클래스 B를 인스턴스화 시킨 인스턴스를 ob..