래퍼 클래스 ( Wrapper Class ) 기본타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼클래스 ( Wrapper Class ) 라고 합니다. 래퍼클래스는 인스턴스에 저장된 값을 변경할 수 없으며, 값을 참조하기 위해 새로운인스턴스를 생성하고 생성된 인스턴스의 값을 참조만 할 수 있습니다. 래퍼 클래스는 java.lang 패키지에 포함되어 제공됩니다. java.lang 패키지는 자바 프로그래밍에 필요한 가장 기본 클래스를 모아놓은 패키지 이므로 Wrapper 를 사용하기 위해 추가로 해야하는 작업은 없습니다. 기본타입 & 래퍼 클래스 (객체) 기본 타입 래퍼 클래스 (객체) byte Byte short Short int Integer long Long float Float double D..
Computer Language/JAVA
재귀호출 재귀호출이란 함수 내부에서 해당 함수가 다시 호출되는 것을 의미합니다. 이러한 호출은 자기자신을 계속호출하기 때문에 끝없이 반복될 수 있으며 반드시 재귀호출을 중단하도록 조건 명령문을 반드시 포함해야 합니다. 사실 재귀호출은 자바만의 개념이라기 보다는 알고리즘에서 중요한 개념입니다. 즉, C 언어 JAVA 언어 가릴거 없이 모두 구현이 가능합니다. 재귀호출 팩토리얼 예제 1부터 10까지 곱하는 프로그램을 만든다고 가정해 봅니다. 먼저 1부터 10까지의 곱은 1에서 9까지의 곱의 곱하기 10 입니다. 다음 1부터 9까지의 곱은 1부터 8까지의 곱의 곱하기 9 입니다. 다음 1부터 8까지의 곱은 1부터 7까지의 곱의 곱하기 8 입니다. .... 다음 1부터 2까지의 곱은 1부터 1까지의 곱의 곱하기..
자바 타입변환이란 하나의 타입이 다른 타입으로 변경되는 것을 타입변환 이라고 합니다. 형변환 혹은 타입변환으로 불립니다. 암시적 형변환 혹은 암시적 타입변환 = 묵시적 형변환 혹은 묵시적 타입변환 명시적 형변환 혹은 명시적 타입변환 타입변환 방법 자바에서 다른 타입끼리의 연산은 모두 같은 타입으로 만든 후에 수행하게 됩니다. 또한 작은 타입에서 큰 타입으로의 변환은 가능하나, 큰 타입에서 작은 타입으로 변환은 불가능 합니다. 이유는 double 형을 int 형에 표현하려고 하면서 데이터의 손실이 발생하기 때문에 컴파일러에서 오류를 발생하게 되는 것입니다. 1 2 3 4 5 6 7 8 9 10 11 public class Test { public static void main(String[] args) {..
자바와 PostgreSQL 연결하는 방법 (with 이클립스) 자바에서는 JDBC 를 이용하여 Database 와 통신을 할 수 있습니다. 이 JDBC 는 벤더사 별로 지원하고 있고, PostgreSQL 또한 JDBC 를 이용하여 자바와 통신할 수 있도록 제공합니다. 이클립스에서 이 PostgreSQL 전용 JDBC jar 파일을 등록하여 PostgreSQL 과 연동해보도록 하겠습니다. 1. JDBC Driver for PostgreSQL 다운로드 jdbc.postgresql.org/download.html PostgreSQL JDBC Download Download About Binary JAR file downloads of the JDBC driver are available here and the..
자바와 SQL Server 연결하는 방법 (with 이클립스) 자바에서는 JDBC 를 이용하여 Database 와 통신을 할 수 있습니다. 이 JDBC 는 벤더사 별로 지원하고 있고, SQL Server 또한 JDBC 를 이용하여 자바와 통신할수 있도록 제공합니다. 이클립스에서 이 SQL Server 전용 JDBC jar 파일을 등록하여 SQL Server 와 연동해보도록 하겠습니다. 1. JDBC Driver for SQL Server 다운로드 docs.microsoft.com/ko-kr/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 사용하는 자바버전에 맞는 jar 파일을 다운로드 해야 합니다. 다..
인터페이스와 추상클래스 개념 모두 추상이라는 개념을 사용하여 자식클래스의 기능을 구현해줍니다. 추상클래스 뒤에 클래스라고 붙은 것처럼, 추상클래스는 클래스의 한 종입니다. 클래스의 일종이기 때문에 자식클래스에서 추상클래스를 상속받아 사용할 수 있고, 추상클래스에서 추상클래스를 상속받아서도 사용할 수 있습니다. ( 자식클래스는 일반 혹은 추상클래스 중 한개만 상속가능 ) 추상클래스는 추상메소드를 사용할 수 있고, 자식클래스에서 추상메소드의 구현을 강제하도록 합니다. 추상클래스를 상속받은 자식클래스에서 추상메소드 구현을 안하면 오류가 발생합니다. 인터페이스 클래스의 유형이 아니기 때문에 자식클래스는 여러개의 인터페이스를 상속받을 수 있습니다. 인터페이스도 마찬가지로 추상메소드를 구현할 수 있습니다. 다만, ..
일반클래스와 추상클래스 차이 일반클래스는 클래스 앞에 abstract 명령어가 붙지 않는 반면 추상클래스는 클래스 앞에 abstract 명령어가 붙는 클래스를 의미합니다. 일반클래스 내에서 함수에 abstract 를 붙일 수 없는 반면 추상클래스 내에서는 함수에 abstract 를 붙일 수도 붙이지 않을 수도 있습니다. 일반클래스는 부모클래스라고 하더라도 객체 생성이 가능한 반면 추상클래스는 객체생성이 불가능 합니다. 자식클래스는 일반클래스 혹은 추상클래스를 상속을 통해 부모클래스로 둘 수 있습니다. ( 한 개만 가능 ) 일반 클래스 1 2 3 4 5 6 7 8 class A { public A () { } // 생성자 메소드 abstract public void f_a() { } // 이렇게 추상메소드..
오류 발생 이클립스에서 자바 프로그램을 작성 후, 실행을 했는데 아래와 같은 오류가 발생했습니다. The selection cannot be launched, and there are no recent launches. 이 오류는 실행모드가 저장이 안되어 있어서 발생하는 오류이며, 저같은 경우에는 이클립스 실행 시 metadata 충돌로 metadata 폴더를 삭제 후 발생했습니다. 오류 해결 방법 1. 이클립스에서 Window - Preferences 로 들어갑니다. 2. Launching 에서 Launch the associated project 를 선택합니다. 설정을 보니 Launch the previously launched application 으로 되어있던데, 이는 프로그램 실행 이전에 실행했..
자바 코드의 기초 자바의 모든 프로그램은 public static void main (String[] args) 함수로 시작합니다. 왜 모든 코드는 위의 구문으로 실행이 되어야 할까요? 이 의미를 파헤쳐 보도록 하겠습니다. ( 자바의 기초를 아시는 분들은 이해하기가 좀 더 쉬울 수 있습니다. ) 코드 파헤치기 public 제한자 부분으로, 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있습니다. 제한자는 public, private, protected 종류를 지정할 수 있지만 main 함수만은 public 을 지정해야 합니다. private 나 protected 를 사용하게 되면 아래와 같은 에러가 발생합니다. 왜그럴까요? main 함수는 모든 실행프로그램의 기본이 되는 함수..
자바 스레드의 모순 자바 스레드는 프로그램을 병렬처리 흐름으로 할 수 있기 때문에 꼭 필요한 기능입니다. 그러나 스레드를 여러 개 사용할 때에는 주의해야 합니다. 그 이유는 여러개의 스레드에서 단일 필드에 동시에 접근하는 경우에 발생할 수 있습니다. 스레드 모순 예제 프로그램 아래와 같은 프로그램이 있습니다. 클래스 2개가 쓰레드로 돌면서 add 함수를 호출하여 tmp 값을 더하고 있습니다. tmp 라는 변수는 이 2개의 스레드에서 들어오는 값을 누적하는 용도로 사용됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public class ..