일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Two Points
- Stored Procedure
- union find
- Hash
- binary search
- 그래프
- 스토어드 프로시저
- 이진탐색
- SQL
- 다익스트라
- String
- MYSQL
- DP
- Brute Force
- Dijkstra
- two pointer
- Trie
- Today
- Total
목록Programming Language/JAVA (16)
codingfarm
Exception 클래스로부터 상속 받는 클래스를 만들어서, 프로그래머가 새로운 예외 클래스를 정의하여 사용할 수 있다. 1 2 3 4 5 class MyException extends Exception { MyException(String msg) { super(msg); } } Colored by Color Scripter cs
하나의 메서드에서 여러개의 예외가 발생할 경우 분담이 필요할 수 있다. 예외 되던지기 : 예외의 일부는 해당 메서드에서 처리 한 후 예외를 인위적으로 다시 발생시키는 것 예외가 발생한 지역에서 try-catch 블럭을 이용하여 예외를 처리한다. 다시 예외를 발생시켜 예외가 발생한 메서드를 호출한 메서드에서 처리하도록 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package project_1; public class Hello { public static void main(String[] args) throws Exception { try { method1(); } catch(Exception e) { System.out.println("main 메서..
1. 프로그램 오류 에러는 프로그램의 오작동, 비정상적인 종료를 야기한다. 컴파일 에러 : 컴파일 시 발생하는 에러, 자바 컴파일러가 감지한다. 런타임 에러 : 프로그램의 실행도중 발생하는 에러, JVM이 감지한다. JAVA에서는 런타임 에러를 에러(error)와 예외(exception) 두 가지로 구분하였다. 에러 메모리 부족(OtOfMemoryError)나 스택오버플로우(StackOverflowError) 처럼 발생하면 복구할 수 없는 심각한 오류 비정상적인 종료를 막을 수 없다. 예외 발생하더라도 수습가능한 비교적 덜 심각한 오류 이를 대비할 수 있는 코드를 미리 작성하여 비정상적인 오류를 막을 수 있다. ※ 컴파일 에러도 예외처리가 가능하다. 2. 예외처리의 정의와 목적 정의 : 프로그램 실행 시..
인터페이스란? 추상클래스보다 추상화의 정도가 높은 클래스이다. 일반 메서드나 필드를 구성원으로 가질 수 없다. 오직 추상 메서드와 상수만을 멤버로 가진다. 추상 클래스 인터페이스 부분적으로만 완성된 '미완성 설계도' 구현된것이 아무것도 없는 '기본 설계도' 작성법 키워드로 class 대신 interface를 사용한다. 나머지는 일반 클래스와 작성법이 같다. 접근제어자로 public 또는 default를 쓸 수 있다. 1 2 3 4 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 반환타입 메서드이름(매개변수목록); } Colored by Color Scripter cs 인스턴스의 멤버들은 다음과 같은 제약사항을 가진다. 모든 멤버변..
추상클래스란? 추상메서드를 포함한 클래스 추상메서드 : 선언부만 있고, 구현부는 없는 메서드 구현부 작성은 추상클래스를 상속받는 자식클래스에서 수행한다. 일반 클래스처럼 필드, 일반 메서드를 가질수 있고, 인스턴스화도 가능하다. 문법 : 키워드 abstract를 붙이면 된다. 1 2 3 abstract class 클래스이름 { // ... } cs 추상 메서드는 키워드 'abstract'를 함수 선언부 앞에 붙이면된다. 아무 내용도 없는 메서드로 작성해도 추상메서드가 되지만, abstract를 붙여야 자손 클래스에서 구현을 강요할 수 있다. 1 2 abstract 리턴타입 메서드이름1(); 리턴타입 메서드이름2() {}; cs 추상 클래스로부터 상속받는 자손클래스는 오버라이딩을 통해 추상메서드를 모두 구..
1. 다형성이란? 정의 : 여러가지 형태를 가질 수 있는 능력 OOP의 4대 특징 중 하나 추상화 캡슐화 상속성 다형성 JAVA에서는 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하여 다형성을 구현한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 class Tv{ boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv{ String text; // 캡션을 보여주기 위한 문자열 void caption() {/*...*/} } Colored by Co..
1. 제어자란? 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 하나의 대상에 대해 여러 제어자를 조합하여 쓰는것이 가능하다. 한번에 네 가지 중 하나만 선택해서 사용할 수 있다. ex) public과 private를 함께 쓸 수 없다. 접근제어자와 그 외의 제어자로 나뉜다. 접근 제어자 - public, protected, default, private 그 외 - static, final, abstract, native, transient, synchronized, volatile, strictfp 2. static 의미 : '클래스의', '공통적인' 사용될 수 있는 곳 - 멤버변수, 메섣, 초기화 블럭 제어자 대상 의미 static 멤버변수 - 모든 인스턴스에 공통적으로..
super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다. 멤버변수와 지역변수의 이름이 같을때 this로 구별하듯이, 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 사용해서 구별할 수 있다. 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 package project_1; class Parent{ int x = 10; void Method() { System.out.println(x); } } class Child extends Parent{ int x = 20; void Method() { System.out.println(x); Syst..
오버라이딩이란 조상클래스로부터 상속받은 메서드의 내용을 변경하는것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Point{ int x; int y; String getLocation() { return "x : " + x + ", y :" + y; } } class Point3D extends Point{ int z; String GetLocation(){ return "x : " + x + ", y :" + y + ", z : " + z; } } Colored by Color Scripter cs 가령 아래 코드를 확인해보면 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 pa..
상속(inheritance) 상속 : 기존의클래스를 재사용하여 새로운 클래스를 작성하는것 class Parent { int age; } class Child extends Parent { void play(){ System.out.println("hello"); } } Child 클래스는 자동적으로 age라는 멤버변수가 추가된 것과 같은 효과를 얻는다. Play 함수는 Child 클래스 내에서만 독자적으로 사용할 수 있다. Parent와 Child 클래스를 상속관계도와 다이어그램으로 표현하면 아래와 같다. 생성자와 초기화 블럭은 상속되지 않는다. 멤버(필드, 메서드)만 상속된다. 접근제어자가 private또는 default인 멤버들은 상속되지 않는다기보다는 상속은 받지만 자손 클래스로부터의 접근이 제한된..
itmining.tistory.com/20 클래스 변수와 인스턴스 변수 public class test { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv; // 지역 변수 } } 인스턴스 변수 인스턴스 변수는 인스턴스가 생성될 때 생성됩니다. 그렇기 때문에 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야합니다. 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언합니다. 클래스 변수 클래스 변수는 인스턴스 변수에 static만 붙여주면 됩니다. 인스턴스 변수는 각각 고유한 값을 가지지만 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 됩니다. 한 클래..
클래스란 객체를 정의해놓은 것으로 객체를 생성하는데 사용된다. 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 객체와 인스턴스 인스턴스화(instantiate) : 클래스로부터 객체를 만드는 과정 인스턴스(instance) : 클래스로부터 만들어진 객체 가령 '책상은 객체'라고 할때 '책상은 책상 클래스의 인스턴스' 라고 할 수 있다. 인스턴스와 객체는 같은 의미이므로 엄격히 구분할 필요는 없지만 문맥에 따라 구분할것 객체는 속성(property)과 기능(function)의 두 구성요소로 이루어 지며 각각 주로 멤버변수(memer variable)와 메서드(method)를 지칭한다. TV를 예로들면 TV의 속성과 기능은 아래와 같다. 속성 : 크기, 길이, 높이, 색상, 볼륨, 채널... ..
배열 생성 Java에서 정수형 배열을 만드는 방법은 아래와 같다. type[] varname; int[] score; string[] name; type varname[]; int score[]; String name[]; 크게 2가지 방법이 지원되며 가능하면 전자의 방법을 사용하기를 추천한다. int[] score = new int[5]; 배열 초기화 기본형 배열의 초기화 int[] score = new int[5]; score[0] = 100; score[1] = 90; score[2] = 80; score[3] = 70; score[4] = 60; 참조형 배열의 초기화 String[] name = new String[3]; name[0] = new String("Kim"); name[1] = new..
응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 그 중 3가지 주요영역(method area, 호출스택, heap)에 대해서 알아보자. 1. 메서드영역(method area) $\bullet$ 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스파일(*.class)을 읽어서 분석하여 크래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. $\bullet$ 그 클래스의 클래스변수(class variable)도 이 영역에 함께 생성된다. 2. 힙(heap) $\bullet$ 인스턴스가 생성되는공간. $\bullet$ 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. ..
$\bullet$ 자바로 프로그래밍하기 위해 필요하다. JDK를 설치하면 JVM과 Java API외에 자바를 개발하는데 필요한 프로그램들이 설치된다. JDK의 주요 실행파일들 javac.exe $\bullet$ 자바 컴파일러 $\bullet$ 자바소스코드를 바이트코드로 컴파일한다. javac Hello.java java.exe $\bullet$ 자바 인터프리터 $\bullet$ 컴파일러가 생성한 바이트코드를 해석하고 실행한다. java Hello javap.exe $\bullet$ 역어셈블러 $\bullet$ 컴파일된 클래스파일을 원래의 소스로 변환한다. $\bullet$ 원래의 소스전체가 아닌 선언부만 저장된다. '-c'옵션을 통해 바이트코ㅡ로 컴파일된 내용도 볼 수 있다. javap Hello > H..
자바란? $\bullet$ 자바는 OS에 독립적이다. $\bullet$ 자바로 작성된 프로그램은 OS에 관계없이 실행이 가능하다. 그러므로 다양한 기종의 컴퓨터와 OS가 공존하는 인터넷 환경에 적합한 언어이다.(하지만 이는 Python, Ruby, PHP, JavaScript같은 고급언어 관점에서는 장점이라 보기 힘들다.) $\bullet$ C++의 장점을 채택하면서 잘 사용되지 않는 부분은 과감히 제외시킴으로써 비교적 배우기 쉽고 이해하기 쉬운 간결한 표현이 가능토록했다. $\bullet$ 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공하므로 자바 프로그래머는 단순히 이 클래스 라이브러리만을 잘 활용해도 강력한 기능의 자바 프로그램을 작성할 수 있다. $\..