프로그래밍/JAVA 131

04.27(GUI)

AWT(Abstract Window Toolkit) GUI프로그래밍(윈도우 프로그래밍)을 위한 도구로 다양한 컴포넌트를 제공함 Java로 구현하지 않고 OS의 컴포넌트를 그대로 사용하는 것이 특징임 Swing AWT를 확장한 GUI 프로그래밍 도구임 AWT보다 더 많은 종류의 컴포넌트를 제공하며, OS의 컴포넌트를 사용하지 않고 순수 Java로 구현한 것이 특징임 클래스명 앞에 J를 붙여서 AWT와 구분 컨테이너란? 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트임 다른 컨테이너에 포함 가능 다른 컨테이너에 속하지 않고 독립적으로 존재 가능 스스로 화면에 자기 자신을 출력하는 컨테이너로는 JFrame, JDialog, JApplet이 있음 컴포넌트란? 컨테이너에 포함되어야 화면에 출력될 수 있는 GUI ..

04.24(서버와 클라이언트 / TCP 소켓 프로그래밍 순서)

서버와 클라이언트 서버는 서비스를 제공하는 프로그램 클라이언트는 서비스를 받는 프로그램으로 네트워크 데이터를 필요로 하는 모든 어플리케이션이 해당됨 소켓프로그래밍 소켓을 이용한 통신 프로그래밍을 뜻함 소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단 TCP 연결이 더 확실(안정성높음) 한쪽에서 통신을 할때 보내는 쪽과 응답하는 곳의 연결을 확인하고 연결이 잘 되었을 때만 데이터 전달 UDP 속도는 빠르나 일방적으로 보내기에 보내는 쪽에서는 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없음 TCP 소켓 프로그래밍 순서(서버용) 1. 서버의 포트번호를 정함 2. 서버용 소켓 객체를 생성 3. 클라이언트쪽에서 접속요청이 오기를 기다림 4. 접속 요청이 오면 요청을 수락하고 해당 클라이언트에 대한 소켓 ..

04.23(스레드)

자바프로세스란? 실행중인 하나의 프로그램 스레드란? 프로세스 내에서 실제 작업을 수행하는 작업 단위 모든 프로세스는 하나 이상의 스레드를 가짐 프로세스 종료 싱글 스레드의 경우 메인 스레드가 종료하면 프로세스도 종료 멀티 스레드의 경우 실행중인 스레드가 하나라도 있다면 프로세스가 종료되지 않음 멀티 스레드의 장점 1. 자원을 보다 효율적으로 사용할 수 있음 2. 사용자에 대한 응답성이 향상 3. 작업이 분리되어 코드가 간결 멀티 스레드의 단점 1. 동기화에 주의해야 함 2. 교착상태가 발생하지 않도록 주의해야 함 3. 프로그래밍시 고려사항이 많음 스레드의 생성 1. Thread클래스를 상속받아 직접 생성 [표현식] class 클래스명 extends Thread { @Override public void ..

04.22(예외 처리/ IO/ Collection/ Generics)

오류(Error)의 종류 1. 컴파일 에러 : 소스상의 문법 에러 2. 런타임 에러 : 입력값이 틀렸거나 배열 인덱스의 범위가 벗어난 경우 발생하는 오류들 3. 논리 에러 : 개발자의 의도대로 작동X 4. 시스템 에러 : 컴퓨터의 오작동 오류와 예외 Error(오류) : 해결 불가능 Exception(예외) : 예외처리를 통해 해결 가능한 오류 - Checked Exception → IOException : 개발자가 반드시 처리해야하는 오류 - Unchecked Exception → RuntimeException 예외처리 1. throws 메소드를 최초 호출한 곳으로 예외던지기 2. try~catch try{ //예외처리할 구문 }catch(처리할예외클래스명 참조형변수명){ //예외클래스 처리 구문 }f..

04.21(IO 예제로 정리하기)

InputStreamReader으로 사용자 입력값 받기 public class IOTest { public static void main(String[] args) { //사용자 입력값 (1byte) new IOTest().InputStreamReader_1(); new IOTest().InputStreamReader_2(); } //사용자 입력값 받기(문자) public void InputStreamReader_1() { String input = ""; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //보조스트림 끼움 System.out.print("입력 : "); try { while((input=br.readLi..

04.20(URL예제 - 웹 상의 이미지 파일 다운로드)

URL예제 웹 상의 이미지 파일 다운로드 public class UrlTest { public static void main(String[] args) { UrlTest u = new UrlTest(); u.test(); } public void test() { String imgUrl = "https://cdn.pixabay.com/photo/2014/04/13/20/49/cat-323262_960_720.jpg"; URL url = null; URLConnection conn = null; try { url = new URL(imgUrl); conn = url.openConnection(); } catch (MalformedURLException e) { e.printStackTrace(); } ca..

04.19(SimpleDateFormat 패턴)

SimpleDateFormat 패턴 패턴 의미 출력 G 연대(BC, AD) AD yyyy 년도 2020 MM 월 04 w 해당 년도의 몇 번째 주(1~53) 17 W 해당 월의 몇 번째 주(1~5) 4 DD 해당 년도의 몇 번째 일(1~366) 110 dd 해당 월의 몇 번째 일(1~31) 19 F 해당 월의 몇 번째 요일(1~5) 3 E 요일(월~일) 일 a 오전/오후(AM, PM) 오후 HH 시간(0~23) 20 hh 시간(1~12) 01 KK 시간(0~11) 01 kk 시간(1~24) 13 mm 분(0~59) 25 ss 초(0~59) 38 SS 1/1000초(0~999) 297 Z 타임존 +0900 z 타임존(RFC 822) KST 사용 예제 Date today = new Date(); Simple..

04.17(API - Calendar 예제)

예제 사용자로부터 생일(년, 월, 일)을 입력받고, 오늘이 태어난지 몇일 되었는지 출력 public class CalcYourDays { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("생일을 입력하세요.\n년도(yyyy) : "); int yyyy = sc.nextInt(); System.out.print("월 : "); int mm = sc.nextInt(); System.out.print("일 : "); int dd = sc.nextInt(); //today위치에 주의 //시분초단위입력을 안하고, today를 사용자 입력이전에 위치시키면, 시간차가 줄어들어서 하루가 줄어듦 //..

04.16(자바 IO 예제)

파일 입력과 출력 예제 파일명과 파일내용을 입력하고, 키보드로 읽을 대상 파일명을 입력받아 파일 내용 출력 public static void fileSave() { String fileName = null; FileWriter fw = null; //BufferedReader는 문자기반 보조스트림. readLine() 메소드로 줄단위로 읽어올 수 있음 //InputStreamReader는 바이트기반스트림을 문자기반으로 연결하는 브릿지역할을 해줌 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("파일명을 입력하세요 : "); fileName = br.readLine(); //test..