Language

    20. Java Socket 네트워킹

    소켓이란? 네트워크 상에서 데이터를 주고받기 위한 장치 입니다. 마치 핸드폰과 같은 역활을 하며 , 입출력 데이터를 Stream 형태로 주고 받습니다. Server의 Socket 통신을 주고 받기 위해선 Socket 객체 생성 후 , 클라이언트 접속을 허용 해야 합니다. package lesson21_Socket; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Main_..

    19. Java 입력과출력

    입출력이란? 다른곳에서 데이터가져오는 행위 ( 입력 ) 다른곳에서 데이터내보내는 행위 ( 출력 ) 자바에서 한글은 글자당 2Bytes를 차지합니다. 내용을 가져올때 사용하는 클래스입니다. (파일 읽기 - 입력 ) InputStream : 1Byte InputStreamReader : 2Bytes BufferedReader : 1String(줄 단위) 내용을 내보낼때 사용하는 (파일 쓰기 - 출력) OutputStream : 1Byte OutputStreamWriter : 2bytes BufferedWriter : 1String(줄 단위) 특수목적용으로 개조형 FileReader(InputStreamReader개조) -> 파일내용 불러오기 편하게 FileWriter(OutputStreamWriter개조) ..

    16. Java 예외처리

    예외처리를 해야하는 이유 프로그램을 구동 시, 문제가 발생하지 않도록 사전에 예방하기 위해 코드를 작성해야 합니다. Error 자바 문법게 맞지 않는것 => 컴파일(기계어로 번역)을 못하는 상황 개발자가 잘못 했거나 프로그램이 완성되지 않아 발생 됩니다. Warning 코드가 지저분한 상태 개발자가 불필요한 소스 코드를 남기거나, 외부 리소스를 사용했을 후 처리 누락으로 인해 발생합니다. ( scanner.close(); ) 하지만, 프로그램은 문제없이 수행 됩니다. Exception 프로그램은 완성되었으나, 의외의 상황이 발생하여 제대로 작동하지 않을때 발생합니다. 예외 처리를 위한 두가지 방법 Try - Catch - finally Try 구문 속에 있는 소스를 읽던 중, 문제가 발생하면 Catch ..

    18. Java Collections

    Collections 이란? 기존의 배열 [ ] 는 처음 생성 시, 크기를 알아야 하며, 조절을 할 수 없다는 큰 단점을 가지고 있습니다. 반면 Collection은 여러개의 데이터를 크기와 상관없이 담을 수 있으며 좀 더 유연하게 사용하기 위해 나오게 되었습니다. Collection 계열 클래스 명 특징 List ArrayList, Vector .. 인덱스를 통해 관리되며, 데이터 중복이 가능 합니다. Set HashSet .. 순서에 상관없이 저장되며, 데이터 중복이 불가 합니다. Map HashMap, HashTable .. 순서에 상관없이 저장되며, 키 와 값 으로 구성 되어있습니다. Collection 의 구현 List 계열 인덱스를 통해 관리되며, 데이터 중복이 가능 합니다. package l..

    17. Java 문자열 및 유용한클래스

    String 객체와 메모리 문자열 다루는 String 객체는 데이터 변화가 많으면 메모리에도 영향을 미쳐 성능 저하가 발생 됩니다. 예를 들면, String 안에 Hello 라는 값이 기존에 저장이 되어있는 상태에서, World 라는 글자를 추가하게 되면 Hello와의 연결을 끊고, HelloWorld라는 값을 새로 메모리에 생성됩니다. ( 기존 Hello는 GarbageCollector가 회수 전까지 메모리를 차지하고 있습니다. ) 이와 같은 단점을 보완하고자 StringBuffer 와 StringBuilder가 생성 되었습니다. 아래 예시와 같이 메모리를 재 활용하고 원하는 글자를 추가 할 수 있는 기능입니다. package lesson18_UsefulClass; import java.util.Str..

    15. Java 추상클래스

    추상클래스란? 인터페이스(작업명세서)와 비슷한 역활을 하지만, 공통적인 멤버 변수와 기능을 가집니다. 클래스의 공통된 부분을 뽑아서 별도의 추상클래스로 만들고 이것을 상속해서 씀 추상클래스(Abstract)의 특징 멤버변수를 가집니다. 만들어진 추상클래스를 사용하기위해선 Extends를 통해 사용 합니다. 1개 이상의 추상 메서드를 가지게 됩니다. 상속시 반드시 구현해주어야 합니다. 일반 메서드와 생성자를 가질 수 있습니다. abstract클래스를 상속하기 위해서는 extends를 이용한다. abstract 메서드를 가지며, 상속한 클래스에서 반드시 구현해야한다. 추상클래스의 구현 package lesson16_OOP_Avengers; /** * 추상 클래스 : 미완성된 메소드가 있기 떄문에 객체를 만들..

    14. Java 인터페이스와 다형성

    인터페이스란? 클래스와 달리 객체를 생성할수없으며, 클래스에서 구현해야하는 기능들을 지시하는 작업명세서 무슨 작업을 할지만 적혀있고, 정의는 되어있지 않기 떄문에 Override를 사용해서 사용합니다. 인터페이스를 사용하는 가장 큰 이유는 객체가 다양한 자료형을 가질 수 있기 때문입니다. 다형성이란? 하나의 객체 안에 여러가지 기능들을 만들어 여러 가지 타입으로 선언할 수 있습니다. 인터페이스를 implements함으로써 Extends 보다 유연하게 사용할 수 있습니다.

    13. Java 상속

    상속이란? 기존에 만들어진 클래스의 기능 중 부모클래스의 속성과 기능을 이용할 수 있습니다. 예시 ) 할아버지 운영 -> (비법계승) -> 아빠 음식점 -> (비법계승) -> 아들 음식점 상속의필요성 기존에 검증된 소스 를 이용해서 빠르고 쉽게 새로운 소스를 추가 할 수 있습니다. 상속구현 클래스 생성 시 , extends 부모 클래스로 생성합니다. @Override 를 사용하지 않더라도 부모 클래스에 있는 메소드를 불러서 사용할 수 있습니다. package lession14_OOP_Extends; public class SonShop extends FatherShop { } } 상속의 특징 매서드 오버라이드(Override) 부모클래스의 존재하는 기능을 자식클래스에서 재정의해서 사용합니다. 만약 부모클..

    12. Java 데이터 은닉과 접근 제어자

    데이터 은닉이 필요한 이유? 외부로부터 데이터 변질이 되는 것을 막기위해 , 속성값들은 private 클래스를 이용해 내부에서만 사용 가능하며 , 외부에서 접근 가능한 메서드를 제공해 실제 데이터를 변경시켜줍니다. 멤버변수를 Private 설정을 해줌으로써 , 외부로부터의 데이터 변질을 방지합니다. private : 자기 클래스 내부의 메서드에서만 접근 허용합니다. protected : 자기 클래스 내부 또는 상속받은 자식 클래스에서 접근 허용합니다. public : 모든 접근을 허용합니다.. package lession13_OOP_Encapsulation; // 캡슐화(encapsulation) //데이터의 안전한 처리를 위해 public class Dog { private String name; pr..

    11. Java Static 과 패키지

    Static 멤버변수 객체들의 공통된 속성을 표현할때 사용 객체를 만들때마다 메모리 공간(Heap)을 차지하지 않고, Stack 영역에 하나만 차지함으로 메모리를 절약할 수 있습니다. Static 메소드 객체를 생성하지 않아도 어디서나 사용할 수 있는 상태가 됩니다. Package 란? 자바프로그램은 많은 클래스로 구성되고 이러한 클래스를 폴더형식으로 관리하는것 패키지에 속해있는 클래스가 최대한 다른 클래스와 중복되지않도록합니다. 일반적으로 도메인을 거꾸로이용합니다. 패키지이름만보고도 클래스가 어떤속성과 기능을 예상할수있도록 합니다. Import 란? 서로 다른 패키지에 있는 클래스를 호출하게 될경우, 상단에 "import 경로"가 생성됩니다. 만약 해당 경로에 다른 클래스도 사용하고 싶다면, "*" 를..