JAVA/JAVA 국비지원 수업 정리 14

JAVA 21일차 수업내용

내용의 이해를 위해 20일차 수업을 21일차까지 이어서 수강 후 정리합니다. 입출력 스트림 자바의 데이터는 스트림을 통해 입출력되고, 단방향으로 연속적으로 진행된다. 스트림의 종류는 프로그램이 출발지인지, 도착지인지 에 따라 결정된다. 프로그램이 도착지면 입력(Input) 프로그램이 출발지면 출력(Output) ※입출력 스트림은 크게 두가지 종류로 구분한다. 바이트(byte) 기반 스트림 : 그림, 멀티미디어등 여러가지의 주소로서 연결되는 데이터들을 읽고 출력할때 사용 문자(character) 기반 스트림 : 문자 그 자체만 읽고 출력할때 사용 그 안에서도 종류가 갈리는데 ~~Stream이라는 방식으로 사용 된다면 바이트기반 ~~Reader, ~~writer 이라는 방식으로 사용된다면 문자기반으로 생각하..

JAVA 19일차 수업

스레드의 생성과 실행 18일차에 다뤘듯이 자바는 main 스레드가 main() 메소드를 실행하며 시작하게 된다. 이때 main메소드의 첫코드부터 실행을 하되 작업 스레드가 생긴다면 병렬구조로 각자 스레드를 부여하여 멀티 스레드로 작업을 진행하게된다. 이때 우리는 메인스레드외의 다른 스레드를 생성 시키는 것은 좋지만 몇개의 작업을 병렬로 만들어 실행 해야 효율적일지, 몇개의 작업이 필요할지 미리 정하고 들어갈 필요가 있다. 작업 스레드 생성 방법 1. Runnable을 implements 한다 > Runnable을 parameter로 갖는 생성자를 호출해온다. 2. Thread 하위 클래스로부터 생성한다. Thread 클래스를 상속하여 run메소드를 override하여 thread가 실행할 코드를 작성한다..

JAVA 18일차 수업

프로세스와 스레드 프로세스(process) 실행중인 하나의 애플리케이션(프로그램)을 프로세스 라고 부르겠다. 우리가 애플리케이션을 실행 하면 컴퓨터는 운영체제로부터 실행에 필요한 메모리를 할당 받아서 애플리케이션에 들어있는 코드들을 실행시킨다. 컴퓨터를 켜고 메모장을 켤때마다 세로운 프로세스가 생성이 되는것으로 쉽게 확인 해 볼 수 있다. 우리는 하나를 초과한 작업을 동시에 진행 하는것을 멀티프로세스 라고한다. 쉬운예시로는 카카오톡과 메모장을 동시에 켜면 멀티프로세스를 진행하고 있는 것이다. 스레드(thread) 스레드란 코드의 실행 흐름을 말한다. 이때 프로그램들끼리는 자신의 메모리를 따로 가져 독립적으로 실행된다. 멀티프로세스에서 다른 프로그램하나가 오류가 발생하여도 영향을 받지 않는다. 그러나 멀티..

JAVA 17일차 수업

List, Set 인터페이스 List인터페이스의 ArrayList List 인터페이스는 ArrayList, likedList등의 지원하는 클래스들이 존재한다. 앞서 말했듯이 순서를 가지며 중복을 허용한다는 특징을 가지고 있는데, 그렇다면 이러한 성질은 Array(배열) 또한 가지고 있다. 이에 대한 차이점부터 짚고 시작하자. ※List 와 Array의 차이점 List는 1. 가변적인 길이를 가진다. 2. 데이터들이 연속적으로 나열되며 빈공간을 허용하지 않는다. 포인터를 이용해 주소를 순서대로 연결해두었기 때문.(C참고) > 물리적 주소가 연속적이라는 뜻이 아니니 구분해주자. 이를 동적 할당(dynamic allocation)이라고 한다. 이렇게 됨으로 인해 메모리 관리가 더 유연해지고, 포인터의 사용성으..

JAVA 15일차 수업

InterFace(인터페이스) > 인터페이스의 정의 (14일차에 이어서 진행) 개발 코드와 객체가 서로 통신하는 접접이다. 개발코드가 1개의 객체와 값을 주고 받는것이 아닌 다양한 객체와 소통의 창구가 되어주는 것이 인터페이스이다. 그래서 우리는 개발에서 다형성(polymorphism)을 구현해낼수 있다! 인터페이스 멤버 선언 인터페이스또한 필드를 가지며, 인터페이스의 멤버들은 Abstract이다. 그리고 Abstract성질로 인하여 생성자는 멤버로 가질 수 없다. public interface InterfaceExample{ int a; // 오류 발생! int A = 0; } class선언과 동일한 부분에서 interface만 변경하여 선언을 하여 시작한 후 선언부문법은 동일하다. 그러나 가질수있는 ..

JAVA 14일차 수업

부모/자식 클래스간의 타입변환 1.자식클래스 > 부모클래스 (자동 타입변환) Class GrandFather{ String name = "김할아버지"; void dance(){System.out.println("할아버지의 춤 메소드");} } Class Father extends GrandFather{ int age = 55; void excercise(){System.out.println("아빠의 운동 메소드");} } Class Son extends Father{ char grade = 'B'; void study(){System.out.println("아들의 공부 메소드");} } 이와같이 선언된 부모, 자식클래스들이 있다고 해보자. 여기에 생성자는 선언되어있지 않지만 default 생성자는 이미 ..

JAVA 12일차 수업

생성자(Constructor) 기본생성자(Default Constructor)부터 생성자를 선언하여 만들어질 객체를 준비해보자. public class code{ // 필드 선언 int count; String name; //생성자 선언 public code(){ //매개변수로 받은 것는 default constructor 없기때문에 count와 name필드의 초기값을 정해보자. count = 5; name = "코코코"; } //생성자 선언2 public code(int count, String name){ // 매개변수로 아까 선언한 2개의 필드값을 받았다. this.count = count; //받은값을들 대입하여 필드값으로 사용 this.name = name;//우변은 파라미터로 받은값이고 그것들..

JAVA 11일차 수업

싱글톤패턴 주로 질문이 되는 파트이다. ※싱글톤의 목적은 private 접근제어자를 이용하여 클래스의 객체를 단 하나만 만들 수 있게 하는 방식이다. public class Ex1{ private static Ex1 singleton = new Ex1(); private Ex01(){} static Ex11 getInstance(){ return singleton; } } 이와 같이 Ex1 이라는 클래스에 대하여 접근제어자가 private라는 singleton 이라는 필드를 선언한다. 이로인해 외부에서 만약 new를 이용해서 새로운 객체의 생성시도를 하면 Ex1 newEx = new Ex1(); 이와같은 선언에서는 컴파일 오류가 발생한다. 이유는 아까 말했듯이 Class의 선언에서 우리는 이 객체의 접근..

JAVA 10일차 수업

Annotation(어노테이션) ※Annotation 이란 프로그램에게 추가적인 정보를 제공해주는 metadata 역할로는 1) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다. 2) 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동 생성하게 정보 제공 3) 실행(Runtime)할때 특정 기능 실행하도록 정보를 제공한다. > 아직 무슨말인지는 잘 모르겠다. 예시를 쓰면서 이해하도록 해보자. AnnoTest.java 라는 파일을 생성했다고 생각해보자. public @interface AnnoTest{ } 이와 같은 내용으로 소스파일이 작성되어있을때 @AnnoTest 라는 ... ... 강사님의 커리큘럼상 간단하게 보고만 넘어가기로 하여 스스로 복습하여 다시 올리도록 하겠다. method 의 ..

JAVA 9일차 수업

※클래스 내의 선언 클래스에는 고유의 데이터를 갖는 정보들을 넣을수 있다. 집에 대한 성질들을 생각해보자. 브랜드 = "자이", "힐스테이트", "아크로비스타" > String 타입 집의 평수 = 27, 35, 42 > int 타입 스마트 Tv 의 존재 여부 = true , flase > boolean 타입 이러한 것들은 명사형태의 data로 추상화 된 정보를 field 라고한다. [접근제어자] [제어자] 타입 필드명 [=초기값]; 꼴의 문법을 갖춘다. [접근제어자] [제어자]는 생략 가능 Public class House{ String brand; int size; boolean smartTv; } 필드의 선언은 우리가 알고있는 타입에 따라 선언 할 수 있고 그 값을 정해주지 않을때 초기값을 갖는다. ..