프로세서->하드디스크write stream ,read stream이라는 다리를 놓아야 한다.둘 다 동시에 하고싶으면 두개의 다리를 놓아야 한다.그래서 우리는 입출력을 하기 위해서 스트림을 만들어달라고 요청해야한다.다리 중간에는 버퍼라는 저장소(메모리)가 있고, 그것은
바이너리 데이터 : 메모리상태 그대로 저장하는 데 목적이 있다 (있는 그대로 저장, 바꾸면 안됨) - 바이트 스트림문자 데이터 : 사람이 알아볼 수 있도록 저장하는 데 목적이 있다 - 문자형 스트림(사용하는 클래스가 다르다)해당되는 os에서 잘 작동돼야하기 때문에 변환
객체를 저장했다 복원이 가능하다.serializable 인터페이스 : object를 파일에 저장하는 기능객체를 바이트 stream으로 만든 후 파일에 차례대로 집어넣는다. = 직렬화문자와 더블형의 데이터를 바이트스트림으로 저장
스택은 공간이 힙보다 상대적으로 작다.스택의 용도 : 그때 그때 필요한 것을 올려놓고 사용, 지역변수들 - 중괄호가 끝나는 지점에서 소멸.힙 : new 라는 연산자(배열,객체)가 할당되는 공간 (덩어리가 큰 것들), jvm이 판단 -> 가비지 컬렉터(GC)가 처리.배열
kor은 결국 5개의 참조변수를 가리킨다.
/\*static : 정적 => 메모리에 바로 올린다모든 메서드는 반드시 Class에 소속되어야 한다.\*메서드의 2가지 종류 1) static 메서드 a) 실행시 main 메서드가 호출되기 전에 메모리에 올라간다. b) class 소속 2) non-static
return이란
매개변수에 다른 객체를 넘겨줌으로써 상호작용을 할 수 있다. buyer의 관점seller 관점
:객체, 클래스비교하면 값이 아닌 주소와 비교하게 된다.equals로 비교해야 값 비교가 가능하다.전화번호부(?)전화번호부 업그레이드 버전
이렇게 종속관계가 명확할 때 상속을 사용해야 한다.//java의 모든 클래스는 컴파일되는 순간//자동으로 java.lang.object 클래스의 상속을 받는다public class GrandFather {}package ex03.inheritance.extends02;
재사용의 방법 - 상속, 포함관계1)포함 : 필통이라는 클래스에 볼펜 연필 등의 객체를 필요하면 많이 넣고 필요없으면 뺄 수 있는 것= 내 클래스에 다른 클래스를 포함시켜서 쓰겠다장점 : 관계가 light => 끊어버리기 쉽다 / 필요한 리소스에 집중그래서 포함관계가
객체 지향의 3대 속성1) 하나의 부모로 파생된 여러 자식을 어떻게 묶을 것이냐 (하나로 모아주기 위해)2) 자식들은 고유의 개성을 가진다3) 화목하게 = 관리능력발휘 = 개성을 드러내줘야 한다최소한의 코드로 사용가능!자식 하나를 확장해도 쉽게 추가하여 메서드를 사용할
추상 클래스는 자체적으로 객체를 만들어서 호출하는데 목적이 있는 것이 아니다.자식 클래스의 변수(객체)를 담아서 관리하거나, 메서드에 부모의 자료형을 줄 수 있다.
전화번호부를 일반, 대학, 회사 전화번호부로 나눈 프로그램
구현 클래스는 포함관계에 더 많이 쓰이고 (독립적인 객체를 생성 )추상, 인터페이스는 반드시 상속을 했을 때 의미가 있는 클래스이다.다만, 인터페이스는 구현돼있는게 하나도 없다. 객체를 만들지 못한다. 어떠한 기능들을 클래스들에게 구현하도록 강요하고 싶을 때 사용한다
2개의 2차원 배열을 생성합니다a배열은 아래처럼 초기화 합니다.int a = {{1,2,3,4},{5,6,7,8}};b배열은 int b = new int4;로 선언합니다반드시 a값을 추출해서 b에 대입을 해서b를 출력하면1 23 45 67 8이렇게 나오도록 담아주세요.
객체지향 다형성: 자식들을 부모타입의 배열로 묶어 관리하거나, 부모타입의 매개변수로 자식 객체를 받을 수 있다.그리고 실행은 각 자식객체의 메서드가 실행된다 !
tostring()은 보통 해쉬코드 값을 리턴함 - > 필요에 따라 오버라이딩하여 값을 리턴하도록 변형.자바의 모든 클래스는 object클래스를 상속하고, object클래스는 toString 메소드를 가지고 있음.tostring()은 print 메소드를 실행하면 자동으
들어가는 데이터 자료형을 우리가 정해주고 싶어서 Generic을 만들었다.제네릭에는 object를 상속받은 대상만 들어갈 수 있음 --> int 대신 integer를 만듦.List : 저장된 순서 유지Hash : 저장은 list보다 느리지만 검색은 가장 빠름 .T 라는
import java.util.ArrayList;public class ArrayListEx { public static void main(String\[] args) { ArrayList arrList = new ArrayList(); arrList.add("홍길
: 순서 x 중복데이터 x
: iterator로 접근 --> 나중에 자료구조를 바꾸기 쉽도록 표준화된 방법인 iterator를 사용.내부적 구조가 다름에도 불구하고 데이터 전체를 가져와야 할 일이 있는데, 그 때 접근방식을 동일하게 함으로써 자료구조의 교체를 용이하게 한다.
key , value를 가짐\-작곡가 예제객체를 다시 리턴하니까 연속적으로 메서드 부르기 가능
import java.util.Iterator;import java.util.TreeSet;/TreeSet : Data -> Tree 자료구조를 사용 -> 내부적으로 정렬 : Data로 Data를 검색 Data의 중복을 허용하지 않는다TreeMap :
thread는 한번에 하나만 처리동시에 하고싶다면 하나를 더 만들어서 실행시킨다.2) 멀티스레드3) 프로세스 여러개가 하나의 목적을 위해 실행 (네트워크 통신 필요)멀티 스레드방식으로 네트워크 통신 -> Apache server접속자 한명당 스레드가 배정됨.온라인 게임
process : 집 Thread : 일을 하는 주체, 사람모든 스레드는 스택에 공간을 가지게 된다.1) thread클래스 상속 -> run 메소드 오버라이드객체를 만들어 start메소드를 실행시키면 run메소드를 시작한다.각각의 스레드가 독립적으로 실행된다.2)Run
TCP : 컨베이어벨트 시스템, 정확성이 높다. why? 상대방이 받을때까지 가니까 but 속도 느림 UDP : 속도 중시 , 정확도 떨어짐 ex ) 멀티미디어 방송 TCP가 훨씬 더 많이 쓰인다!ip는 해당되는 호스트에게 찾아감 어떤것을 만날 지는 port로 결정
서버는 소켓 2개 -> serverSocket : accept를 받아주는 담당 (여러사용자 접속시 )conSocket : accept 후에 새로운 객체 리턴 (실제 담당) -->클라이언트와 연결된 소켓접속자 하나가 늘어날때마다 conSocket은 계속 늘어난다.단일스레
index.html 파일을 만들어서 코드를 실행시키고 주소를 적으면 실행된다!cmd예시로 사칙연산