JAVA 16

[ JAVA ] 소켓 통신

소켓( Socket ) 프로토콜, ip주소, 포트넘버로 정의된다. 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스 역할을 한다. 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 소켓의 역할에 따라 클라이언트 소켓, 서버소켓으로 구분된다. 클라이언트(client)와 서버(server) 서버는 서비스를 제공하고, 클라이언트는 서비스를 사용한다. IP 주소 컴퓨터(host)를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP 주소를 갖는다. [ CASE : 소켓을 활용한 간단한 예제 ] import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class..

JAVA/정리한 것 2022.05.21

[ JAVA ] 예외(Exception) 처리

예외(Exception) 에러의 종류는 우리가 컴파일할때 발생할 수 있는 컴파일 오류( 대체로 문법상의 에러 ) 와 실행 중 발생되는 런타임 오류( 대체로 코드 설계상 논리적으로 발생하는 에러 ) 두 종류가 있다. 자바에서는 런타임 오류를 에러(Error)와 예외(Exception) 두 종류로 나눈다. 에러는 프로그램이 코드로 복구될 수 없는 오류를 의미한다. 예를 들어 메모리가 부족한 경우 프로그래머가 직접 제어할 수 없으므로 이런 경우는 메모리 부족(OutOfMemoryError) 에러가 발생하고 함수 호출이 많아 스택이 쌓일 경우에는 StackOverFlowError가 발생할 수 있다. 예외는 프로그래머가 직접 예측하여 막을 수 있는 처리가능한 오류라고 보면 된다. 예외는 Compile시에 발견할 ..

JAVA/정리한 것 2022.05.20

[ JAVA ] 어노테이션( Annotation )

어노테이션( Annotation : 주석 ) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다. 실행시(런타임시) 특정 기능을 실행하도록 정보를 제공한다. package east; import java.lang.annotation.Annotation; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Method; @Retention( RetentionPolicy.RUNTIME ) @interface Annot{}// Annotation 선언 방법. @Annot class Temp{ @Annot public void print() {} } publi..

JAVA/정리한 것 2022.05.19

[ JAVA ] 정적( Static )

정적(Static) >> 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 그러므로 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있다. class Temp{ static int add( int i , int j ){ return 100; } } public class Main{ public static void main( String[] args ){ int r = Temp.add(10 , 20 ); System.out.println( r ); } } static이 붙은 멤버함수는? '인스턴스 없이' 클래스명, 함수명으로 호출이 가능하다. (참조형 변수도 불필요) 클래스 안에서 선언하면..

JAVA/정리한 것 2022.05.16

[ JAVA ] 익명 클래스 ( Anonymous Class )

익명 클래스 ( Anonymous Class ) >> 익명 클래스는 이름이 없는 클래스를 말한다. 클래스 정의와 동시에 객체를 생성할 수 있다. class A{ } interface ITemp { public X getData(); } public class Main{ public static void main( String[] args ){ A t = new A(){}; System.out.println( t.toString() ); ITemp it = new ITemp(){ public Integer getData(){ return 100; } }; int j = it.getData(); System.out.println( j ); } } 위 코드에서 아래 부분을 보면, A t = new A(){};..

JAVA/정리한 것 2022.05.16

[ JAVA ] 제너릭( Generic )

제너릭( Generic ) class Bank{ Object t = null; } class Bank2 { String t = null; } public class Main{ public static void main(String[] args){ Bank b = new Bank(); b.t = "HelloWorld"; // String b2 = b.t ; > 이를 제너릭( Generic ) 이라고 부른다. 자바에서 제네릭(generic)이란 데이터의 타입을 일반화한다는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 제너릭을 사용했을 때의 장점은 다음과 같다. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 반환값에 대한..

JAVA/정리한 것 2022.05.16

[ JAVA ] Abstract 와 Interface

abstract( 추상 ) : 인스턴스를 만들 수 없는 클래스 추상 클래스는 상속을 강제하기 위한 것이다. 즉 부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다. abstract class Temp { abstract public void print(); //abstract method } //class Temp2 extends Temp{} 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스. 즉 인터페이스는 클래스간의 호환성을 만드는 용도. 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 ..

JAVA/정리한 것 2022.05.15

[ JAVA ] 객체지향언어의 특징 - 캡슐화

캡슐화 (Encapsulation) 연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것이다. 캡슐화는 중요한 데이터를 쉽게 바꾸지 못하도록 할 때 사용한다. 캡슐화를 하는 가장 큰 이유는 정보 은닉에 있다. 캡슐화를 통해 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다. 이렇게 접근을 제한함으로써 유지보수나 확장 시 오류의 범위를 최소화할 수 있고 객체 내의 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않아 독립성이 좋다. 캡슐화는 접근제어자를 통해 이루어진다. 접근제어자는 멤버변수 앞에 붙으며 로컬변수 앞에는 붙을 수 없다. private ( 공..

JAVA/정리한 것 2022.05.15

[ JAVA ] 객체지향언어의 특징 - 다형성

다형성 런타임 타입 다형성 - 오버라이딩 컴파일 타입 다형성 - 오버로딩 오버라이딩에 대한 설명은 이전 포스팅에서 다뤘다. https://ddsiq.tistory.com/57 [ JAVA ] 객체지향언어의 특징 - 상속성 객체지향언어의 3대 특징 1. 상속성 2. 캡슐화 3. 다형성 상속성 - 클래스를 상속받아 클래스를 만든다. class A { int data = 0; void print(){ System.out.println( "print" + this.data ); } } class B exte.. ddsiq.tistory.com 오버로딩 class Temp{ int add( int i , int j ){ return 100; } int add( int i ){ return 200; } // voi..

JAVA/정리한 것 2022.05.14