본문 바로가기

Java

java 디자인 패턴(singleton) 객체를 어떻게 생성 합니까 ? - new MyObject(); 다른 객체에서 MyObject를 만들고 싶어한다면 어떻게 해야 하죠? MyObject에 대해서 new 연산자를 다시 쓸 수 있나요? - 물론 가능하죠. 클래스만 있으면 언제든지 인스턴스를 만들 수 있는 거죠? - 예, public 으로 선언된 거라면 별 문제 없습니다. 만약 public 으로 선언되지 않았으면요? - 만약 public 클래스로 선언하지 않은 클래스라면 같은 패키지 안에 있는 클래스에서만 인스턴스를 만들 수 있습니다.하지만 같은 패키지에 속한 클래스에서는 여전히 인스턴스를 두 개 이상 만들 수 있죠. 흠.. 흥미롭군요.. 이렇게 할수있는건 혹시 아나요 ? public MyClass{ private MyClass() {} } - .. 더보기
System.arrayCopy 소켓통신을 하거나 byte 데이터 가지고 놀 때 아주 유용한 메소드이다. byte의 범위를 복사해서 그대로 붙여넣을 수 있기 때문이다. * 사용 방법 : System.arrayCopy(데이터 변수(byte[]) , 시작점, 복사할 데이터 변수(byte[]), 복사 시작점, 복사 도착점 ); 참 쉽다. 하지만 복사할 데이터의 크기를 항상 생각해서 작성해야한다. 안그러면 Exception 발생. 더보기
각 자료형<->byte 이거하느라 노가다좀 했음..... boolean은 왜 없냐고 물어본다면 자바 자료형부터 다시 공부하길.... boolean은 논리형이기 때문에 변경할수가 없다. byte를 자료형으로...... public int byteToInt(byte[] data) { int result = 0; result += ((data[0] & 0xff) 32) & 0xff); data[4] = (byte) ((da >> 24) & 0xff); data[5] = (byte) ((da >> 16) & 0xff); data[6] = (byte) ((da >> 8) & 0xff); data[7] = (byte) ((da) & 0xff); return data; } 더보기
Buffer 버퍼는 데이터를 효율적으로 전달하기 위한 '객체'이다. 기존 IO에 대한 성능 개선을 위한 것으로 언뜻보면 포인터의 개념과 비슷하다고 생각했다. 속성으로는 4가지가 있는데 position은 버퍼의 현재 읽고 쓰는 위치를 나타내는 것이고, limit는 버퍼의 한계 위치. capacity는 버퍼의 크기이고, mark는 현재 position의 위치를 저장해놓는 역할을 한다. 이 4가지의 속성들을 잘 이해해야 Exception을 방지할 수 있다. 버퍼에 데이터를 넣는 방법은 put을, 데이터를 추출하는 것은 get을 이용한다. 그리고 자료형에 맞게끔 putInt, putFloat등의 메소드를 지원하기 때문에 효과적으로 데이터 입출력이 가능하다. 간단한 예제를 보면서 테스트 해보자. allocate는 버퍼의 크기.. 더보기
접근자 접근자는 클래스, 메소드, 맴버변수에 한해 접근 레벨을 지정하는 것으로 내부에 쓰이는 멤버을 클래스 내부에 감춰서 캡슐화와 은닉성 강화라는 객체지향언어의 장점을 부각시켜주는 부분이다.객체지향언어에서 잘 짜여진 프로그램은 외부의 접근을 최대로 줄여서 데이터를 보호하는데에 있다.접근자의 종류로는 private , protected, default(얘는 예약어가 없다), public 네가지가 있다.클래스에서는 보통 public 와 default만을 사용한다. 먼저 private라는 녀석은 제일 접근 레벨이 높은 것으로 가장 많이 쓰이게 될 것이다. 보통 멤버 변수에 쓰이고 외부로의 접근을 죄다 차단한다.(단 같은 클래스 내에 있으면 내부 클래스가 private라도 허용을 한다.....) 생성자에 private.. 더보기
다형성 자바를 하면서 가장 중요한 개념중에 하나가 다형성이다.다형성이란 부모클래스의 변수로 여러개의 하위클래스의 객체를 가지는 것을 말한다. 다형성의 장점으로는 확장성과 재사용성이고 하나의 클래스로 여러개의 하위클래스를 관리할수 있어 유동적이고 유지보수가 좋다.이러한 다형성을 쓰기위해서는 몇가지 규칙이 있다. 1. 부모클래스의 변수에 하위클래스의 객체를 가지면 부모클래스의 메소드만 사용이 가능하다.이러한 이유는 부모클래스의 메소드 개수에 있다. 자식클래스의 메소드가 부모클레스에 없는 경우 이것을 사용한다고 생각해보자. 물론 부모클래스에는 없는 메소드이니 당연히 에러가 난다. 이것을 막기위해 자식클래스를 객체로 가지는 부모클래스의 변수는 자식의 메소드를 사용할 수 없게 되어있다. 2. 메소드를 오버라이딩하면 자식.. 더보기
추상클래스(abstract), 인터페이스(interface) 추상클래스는 말그대로 추상적인 클래스이다. 클래스의 객체를 생성하지 못하게 하면서 오버라이딩을 이용할때나 작업레벨을 분할할때 (대상의 범주를 잡아줄때 사용한다고 생각하면 된다.) abstract class 클래스명{}으로 표현되며 추상메소드와 일반맴버변수, 일반 메소드로 구성이 된다. 객체 생성이 불가능 하기 때문에 다른 클래스에 상속이 되어 사용되어 진다. 객체 생성이 불가능한 이유는 불완전한 추상메소드를 포함하기 때문이다. 객체 생성이 불가능하지만 생성자까지 생성하는것이 불가능하지는 않다.인터페이스는 interface 인터페이스명{}으로 선언되며 추상메소드와 public static final로 표현된 맴버변수밖에 올 수가 없다.인터페이스를 사용하는 이유는 공동작업에 대한 내용이 있을 때 사용되어 진.. 더보기
final Java에서 final이란 예약어가 있다. 이건 영어로 해석해보면 최종의, 최후의 란 뜻으로 말그대로 클래스에 쓰이면 상속을 불가능하게 하고 메소드에 쓰이면 메소드의 오버라이딩을 막고 변수에 쓰이면 변수의 값을 변경하지 못하는(상수) 녀석으로 만든다.final 클래스를 사용하는 이유는 최종적으로 클래스를 만들고 하위클래스를 만들지 않을 때 사용한다. 생각해보면 어떤 클래스를 만들고 나서 배포를 했는데 제 3자가 이것을 확장하여 사용할수도 있다. final클래스를 쓴다는 것은 보안과 은닉성을 높여주는 역할을 한다.(예를 들면 System클래스나 String클래스같은 중요 클래스들도 API를 확인해보면 final로 선언되어있다.). final 처리가 된 class는 안쪽의 메소드들도 전부 final처리가 된.. 더보기
랩퍼클래스 출처 : http://kyo820.tistory.com/category/Programming%20Language/JAVA 오늘은 간단하게 래퍼클래스 녀석..까발려보자.래퍼 클래스.. 상당히 유용하면서도 많이 사용될 것같은 느낌이 드는 녀석이다!!! 먼저 이녀석이 뭘 하는 녀석인지부터 알아보자.그 전에~래퍼..단어부터 볼까? 이름에서부터 느낌이 팍팍 오지 않는가????..(안온다면 어쩔 수 없고....) wrap〔〕 ( rap) v. (wrapped, wrapt[];wrap·ping) vt.1a (감)싸다, 입다 《up, in, with》 《wrap+목+부》 《wrap+목+전+명》 He wrapped himself (up) in his cloak. 그는 망토로 몸을 감쌌다. She wrapped the b.. 더보기
카멜표기법 출처 : http://croute.me/307 헝가리안 표기법 (Hungarian Notation) Data type, Control type, Dao type, Definition 등을 미리 정한 약어(줄인 표현)로 전위 표기(prifix)하는 것?1234double dScore;float ePoint;int nNumber;String sSentence; ?12Frame fraName;Combobox cboData; 카멜 표기법 (Camel Notation) 단어와 단어 사이를 대문자로 구분하는 방법. 낙타의 혹을 닮아서 붙여진 이름 ?123456789private void getInformation(){ } public void getStudentCafeteriaMenuInformation(){ } .. 더보기