그동안 import문 없이 String클래스나 System클래스를 사용할 수 있었던 것은 바로 java.lang에 속한 클래스들 였기 때문이다. 이 패키지에서 자주 사용되는 몇 가지만 골라서 자세히 보자 1. Object클래스 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object클래스는 멤버변수는 없고 오직 11개의 메서드로만 구성되어 있다. 우선 이 중에서 중요한 것만 보도록 하자 1-1 equals(Object obj) 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려주는 역할을 한다. public static void main(String[] args){ Value v1 = new Value(10); Valu..
프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이를 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있다. 그리고 실행은 잘 되지만 창고의 재고가 음수가 된다던가, 게임에서 비행기가 총알을 맞아도 죽지 않는 경우가 있다. 컴파일 에러 - 컴파일 시에 발생하는 에러 런타임 에러 - 실행 시에 발생하는 에러 논리적 에러 - 실행은 되지만, 의도와 다르게 동작하는 것 런타임 에러에서 발생 되는 오류를 크게 2가지로 생각 할 수 있다. 메모리 부족이나 스택오버플로우와 같은 일단 발생하면 복수할 수 없는 심각한 것을 에러라고 하며 발생하더라도 수습될 수 있는 비교적 덜 심각한 것은 예외라고 표현한다. ..
추상클래스 클래스를 설계도에 비유하자면 추상 클래스는 미완성 설계도에 비유할 수 있다. 미완성 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스를 생성할 수 없다. 그래서 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 새로운 클래스를 정의 할 때 아무것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느정도 틀을 갖춘 상태에서 시작하는 것이 나을 것이다. 추상클래스는 키워드 abstract를 붙이기만 하면 된다. ex) abstract class 클래스 이름{ ... } ..
다형성이란 여러 가지 형태를 가질 수 있는 능력을 의미하는 다형성은 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 지금까지 우리는 인스턴스를 생성하고 다루기 위해서 해당하는 타입의 참조변수만 사용했다. 예를들어 CaptionTv인스턴스를 사용하기 위해 CaptionTv타입의 참조변수를 사용한다. 이처럼 일치 시키는게 일반적이지만 Tv와 CaptionTv클래스가 서로 상속관계에 있을 경우, Tv t = new CaptionTv(); 처럼 사용하는 것도 가능하다. 그러면 이제 인스턴스를 같은 타입의 참조변수로 참조하는 것..
상속의 정의와 장점 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 용이 조상클래스 - 부모클래스, 상위클래스, 기반클래스 자손클래스 - 자식클래스, 하위클래스, 파생된클래스 상속 시 주의할점 1.자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. 2.생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. 위 그림처럼 Point3D는 x,y,z를 각각 만들어서 사용이 가능하지만 Point라는 x,y가 있는 클래스를 상속받아서 z만 추가한 형태로 사용이 가능하다. 그리고 자손 클래스의 인스턴스를 만들면 조상 클래스의 인스..
클래스와 객체 클래스란 '객체를 정의해 놓은 것' 또는 '객체의 설계도'라고 정의 할 수 있다. 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다. 클래스의 정의 - 객체를 정의해 놓은 것 클래스의 용도 - 객체를 생성하는데 사용 객체의 정의 - 실제로 존재하는 것. 사물 또는 개념 객체의 용도 - 객체가 가지고 있는 기능과 속성에 따라 다름 유형의 객체 - 책상, 의자, 자동차 등 사물 무형의 객체 - 수학공식, 프로그램 에러와 같은 논리나 개념 실생활 예를 들어보면 TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다. 또한 클래스는 객체를 생성하는데 사용될 뿐 객체 그 자체는 아니다. 클래스를 정의하고 클래스를 통해 객체를 생성하는 이..
자바의 동작과정 Hello.java -> javac.exe(자바 컴파일러) -> Hello.class 생성 -> java.exe(자바 인터프리터) -> “Hello world” 출력 컴파일러란? 원시 언어에서 목적 언어로 바꾸는 작업으로 A라는 언어에서 B라는 언어로 통역해주는 작업이다. 프로그래밍에서는 주로 고급언어를 기계어로 바꿔주는 것을 말한다. 근데 C나 C++의 경우 컴파일러는 CPU나 운영체제마다 가지고 있는 기계어가 조금씩 다르기 때문에 CPU나 운영체제마다 별도의 컴파일러가 필요하다. 같은 고급언어로 작성한 코드라도 다른 기계어 코드를 생성해야하는 것이다. 하지만 자바에선 컴파일러가 기계어로 바꾸는 것이 아니라 '바이트 코드로'라는 것으로 변환 시킨다. 자바의 가장 큰 장점은 JVM이다. ..
이 포스팅을 보러왔다면 잡 스케쥴러에 대한 기본 지식은 있고 설정하는 방법을 찾으러 왔다는 가정하에 간단하게 셋팅 내용만 포스팅할 예정이다. 1.servlet-context.xml 에서 task 추가하기간단하게 Namespaces에서 체크해 추가해주자, 메이븐으로 라이브러리를 추가할 필요도 없이 스프링에 내장되어 있다. 2.어노테이션으로 설정123 csservlet-context.xml에서위와 같이 어느 패키지까지 스캔할지 범위를 지정하고 task스케쥴러를 정의한 다음 id값으로 어노테이션과 맞춰준다. 3.스케쥴러 사용하기1234567891011@Controllerpublic class CommunityController { @Autowired CommunityService service; private..