언어
-
참조타입,메모리,배열복사언어/JAVA 2023. 7. 6. 14:06
1. 데이터 타입의 분류 데이터는 기본타입과 참조타입이 있다. - 변수와 연결된 메모리셀에 무엇이 저장되느냐의 차이 - 변수의 복사는 메모리셀의 값을 기준으로 발생한다. ( 값이 복사되거나, 주소가 복사됨) 2. 자바 메모리 사용영역 jvm이 구동되면, jvm은 운영체제에서 할당받은 메모리 영역을 다음과 같이 구분해서 사용한다. - 자바 컴파일러 javac가 자바 소스코드(.java)를 바이트코드(.class)로 컴파일 - Class Loader를 통해 JVM Runtime Data Area(메모리)에 로딩된다. - Runtim Data Area에 로딩된 .class 들은 Executuion Engine이 해석 (바이트 코드 해석 (인터프리터, jit) - 해석된 바이트 코드는 Runtime Data A..
-
인터페이스언어/JAVA 2023. 7. 6. 00:01
1. 인터페이스 역할 - 인터페이스는 코드의 분리와 관련이 있다. -인터페이스는 다형성의 주된 기술임 - 두 객체를 연결하는 역할을 한다. *인터페이스는 접점으로 타 클래스,서비스와 연결 * 인터페이스는 제공자와 구현자 따로 있다고 생각하면 편해진다. >제공자는 인터페이스형으로 부품을 채워넣고 -> 구현은 따로 2. 인터페이스 선언 interface사용 - default (같은 패키지) public(모든 패키지) 접근제어자 사용가능 3. 상수필드 public static final 타입 상수명 = 값 가질 수 있다. 인터페이스 소속멤버 public abstract method 추상메서드 구현 클래스가 완성해야하는 추상메서드 인터페이스의 핵심 (부품화,다형성) 인스턴스 소속 멤버 default 메서드 완전..
-
람다식언어/JAVA 2023. 7. 5. 17:07
1. 람다식이란? - 메서드를 하나의 식으로 표현 - 함수를 간략,명확한 식으로 표현 할 수 있게 해준다. - 람다식으로 메서드를 표현하면, 이름과 반환값이 사라지므로, 익명함수라고도 한다. int method() { return (int)(Math.random()*5) +1;} () -> {(int)(Math.random()*5)+1}; *모든 메서드는 기본적으로 클래스에 포함되어 있어야하므로, 필요한 메서드를 만드는 작업이 복잡하다. *람다식은 이를 간결하게 처리할 수 있도록 해준다. *람다식을 통해 매개변수를 전달하여 값을 return받을 수 도 있지만, 람다식 자체를 매개변수로 사용할 수 있다. 1.2 람다식 작성 - 메서드의 이름과 반환타입을 제거하고 선언부와 몸통부 사이에 ->를 추가한다. -..
-
객체지향 - 캡슐화언어/JAVA 2023. 6. 12. 21:14
캡슐화: 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것 캡슐화의 기능 데이터 보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호 데이터 은닉 - 내부의 동작을 감추고 외부에는 필요한 부분만 노출 1. 캡슐화는 왜 하는걸까? 구조체,함수들을 이용한 구조적인 프로그래밍을하면, 기존의 절차지향적인 프로그래밍보다 좀 더 구조화된 프로그램을 만들 수 있었다. 하지만, 구조적 프로그래밍은 함수의 개체수가 많아지게 되고 이때 함수를 어떤 기준으로 수납할 것인가?하는 문제가 발생하게 된다. 함수는 크게 1. 기능 2. 데이터 두개의 기준으로 나눌 수 있을 것이다. 이때 데이터에 따라 함수를 분리하면 구조화된 데이터를 사용하는 함수 모듈의 독립성을 침해하는 문제..
-
자바 - 입출력(I/O) (1) 바이트기반 스트림/ 문자기반 스트림언어/JAVA 2023. 5. 14. 23:15
1. 입출력과 스트림 입출력이란? 컴퓨터 내부 또는 외부의 장치와 프로그램 간 데이터를 주고 받는 것을 말한다. 키보드로 데이터를 입력받는 것 혹은 System.out.println()로 화면에 출력하는 것 등을 의미 스트림이란? 데이터를 운반하는데 사용되는 연결통로이다. 스트림은 단방향 통신만 가능하다 따라서 하나의 스트림은 입력과 출력을 동시에 처리할 수 없다. 입출력을 위해선 입력/출력 스트림이 필요하다. 스트림은 queue와 같은 FIFO구조이다. 1.2 바이트 기반 스트림/ 문자 기반 스트림 바이트 기반 스트림: 데이터를 바이트 단위로 처리하며, 있는 그대로 송수신 사진, 동영상,음악파일등의 송수신에 적합하다.(문자 데이터 송수신도 가능) InputStream/OutputStream 모든 바이트..
-
자바 - 열거형(enums)언어/JAVA 2023. 3. 26. 16:51
1. 열거형이란? - 열거형은 서로 관련된 상수를 묶어놓은 것이다. java의 열거형은 타입도 관리하여 타입에 안전한 열거형이다. - 마치 인스턴스가 미리 정의된 클래스로 생각해 볼 수 있다. 1.2 열거형의 정의와 사용 - enum 열거체명 {상수명1,상수명2..} 등으로 정의할 수 있다. - 선언 위치는 클래스와 동일하다. 클래스 내부, 외부, 혹은 하나의 클래스파일에 정의할 수 있다. - 사용법은 열거체 참조변수에 열거체.상수명 혹은 열거형체.valueOf(상수명) - 모든 열거형의 조상 Enum에 Enum에 기본적으로 사용가능한 메서드들이 정의되어 있다. enum Direction {EAST,SOUTH,WEST,NORTH} Direction dir = Direction.EAST; Direction..
-
자바 - Arrays 클래스와 Comparator언어/JAVA 2023. 3. 23. 13:30
-Objects,Colletions 등 배열과 관련된 static메서드 제공 배열의 복사 - copyOf(), copyOfRange(): 배열 전체 혹은 배열의 일부 복사 배열 채우기 - fill(),setAll() : fill()은 배열의 모든 요소를 지정된 값으로 채우고 setAll()은 배열을 채우는데 함수형 인테페이스를 매개변수로 받는다 배열의 정렬과 검색 - sort(), binarySearch(): sort()는 정렬, binarySearch() 배열에 지정된 값이 저장된 index리턴 (단,배열은반드시 정렬되어 있어야함) 배열의 비교와 출력 equals(),toString() - 다차원 배열은 deepEquals() deeptoString()사용 배열을 List로 변환 asList(Objec..
-
자바 - Thread(4) 동기화언어/JAVA 2023. 3. 21. 19:43
1.쓰레드의 동기화란 - 멀티쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로 작업에 영향을 주게됨 - 따라서, 한 쓰레드가 특정 작업을 마무리하기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는 것이 필요. - 이러한 작업을 위해 도입된 개념이 임계영역(critical section)과 잠금(lock)이다. - 공유 데이터를 사용하는 코드 영역을 임계 영역으로 지정 -> 쓰레드가 데이터를 사용할 때 lock을 걸고 사용 후 unlock - lock이 걸려있는 상태에서는 다른 쓰레드는 해당 데이터에 접근할 수 없게 함 정리하자면, 동기화란 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하기 못하도록 막는 것. 그리고 이를 위해 임계영역 지정과 잠금이 필요 -..