본문 바로가기

분류 전체보기

(43)
[JAVA] 5주차 | 멀티스레드 개념, 동기화 문제 스레드 (Thread) - 하나의 프로세스 내부에서 동작 - 사용자가 작성한 코드 - JVM에 의해 스케줄링 되는 실행 단위 멀티 스레딩 - 하나의 응용프로그램을 동시 처리가 가능한 여러 작업(코드)으로 분할 - 작업 개수만큼 스레드 생성 (각 스레드가 하나의 작업을 처리하는 방식) - 모든 스레드는 프로세스(응용 프로그램) 내부의 자원과 메모리 공유 - 한 스레드가 대기하는 동안 다른 스레드가 동작. 프로그램 동작 시간 지연을 줄임 --> 스레드는 무언가의 일을 동시에 하고싶을 때 병렬처럼 쓰입니다. main함수에서는 main 스레드가 작동하고, 새로운 스레드를 만들어서 .start()로 호출하면 새로운 스레드와 메인 스레드가 동시에 작동합니다. 스레드 생성 방법 Thread 클래스를 상속 1) 스레드..
[JAVA] 4주차 | 테트리스 게임 만들기 https://zetcode.com/javagames/tetris/ 출처입니다. https://github.com/janbodnar/Java-Tetris-Game 전체 코드는 여기서 볼 수 있습니다. 1. 우선 테트리스에는 tetrominoes라 불리는 7개의 테트리스 블록이 있습니다. 2. Swing painting API와 java.util.Timer를 사용합니다. 3. 모양은 square by square로 움직입니다. (직각으로) 4. 게임은 바로 시작되며, p키를 누르면 게임을 멈출 수 있습니다. 5. d키를 누르면, 모양이 바로 바닥으로 떨어집니다. (speed-up) 6. 일정한 속도로 게임이 진행되며, 가속은 구현하지 않습니다. 7. 지워진 라인만큼 점수를 얻습니다. 1) Shape 클래스..
[자료구조] 불완전한 형식은 사용할 수 없습니다 오류 해결 | typedef 구조체 크기 만큼 동적할당을 하다가 분명 맞게 썼는데 자꾸 오류가 뜨는 현상이 있었습니다. 그래서 구조체 형식을 봤을 때 typedef 구조체를 선언하는 부분에서 생긴 오류인 것 같았습니다. typedef struct { ... } tree; 여기서 typedef struct tree { ... } tree; 로 바꾸니까 오류가 없어졌습니다. typedef 구조체 선언 사용법 typedef struct 구조체 이름 { . . . } 구조체 별칭 구조체 이름과 구조체 별칭의 차이인 것 같습니다. 항상 별칭만 사용해왔는데 별칭만 사용한 구조체를 익명 구조체라고 합니다. struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름)); - 구조체 포인터를 선언할 때는 포인터 변수이기..
[JAVA] 3주차(2) | 제네릭(Generic), Collection, ArrayList 1. 제네릭(generic) 제네릭(generic)이란 class, interface, method 등을 특정 타입(class)에 종속되지 않고 여러 다른 타입에 적용될 수 있도록 일반화된 타입 매개 변수를 말한다. 예를 들어 문자열인 멤버 id와 정수인 멤버 value가 있다. 만약 value가 정수가 아닌 문자열인 객체를 생성하고 싶다면 새로운 class를 만들어야 할 것이다. 혹은 id를 정수로 하고 싶은 경우나 id와 value를 모두 정수로 하고 싶은 경우에도 각각 새로운 class를 생성해야 할 것이다. 이러한 상황에서 같은 변수의 타입을 필요에 따라 변경 가능하도록 해주는 것이 generic 이다. ③ class 이름 뒤에 가 있음을 유의해 보라. Sample class 내에서 사용되는 두 ..
[JAVA] 3주차(1) | Java.base모듈, Wrapper Java.base 모듈 java.base 모듈 패키지 용도 java.lang 자바 언어의 기본 클래스 제공 (해당 패키지의 클래스는 import 없이 사용) 예) String, System, Integer, Double, Exception, RuntimeException 등 java.util 자료 구조와 관련된 컬렉션 클래스 제공 예) Scanner java.text 날짜 및 숫자를 원하는 형태의 문자열로 만들어주는 포맷 클래스 제공 java.time 날짜 및 시간을 조작하거나 연산하는 클래스 제공 java.io 입출력 스트림 클래스 제공 java.net 네트워크 통신과 관련된 클래스 제공 java.nio 데이터 저장을 위한 Buffer 및 새로운 입출력 클래스 제공 java.lang 패키지 import..
맞는 일을 고른다는 건 보호되어 있는 글입니다.
[JAVA] 2주차 | 패키지(package), getter와 setter 패키지 서로 관련된 클래스와 컴파일된 클래스 파일(.class)들을 하나의 디렉토리에 묶어 놓은 것 클래스를 식별하는 용도로 사용(import java.util.Scanner) 상위패키지와 하위패키지를 dot(.)로 구분 패키지 선언 소스 파일 최상단에 위치 package 상위패키지.하위패키지; ex ) com.회사명.프로젝트 import문 다른 패키지에 있는 클래스를 사용할 경우 import문을 이용해서 패키지 이름을 명시 접근 제한자 접근제한자를 외우려고 하지말고 일단 알기만 하면 된다. Getter와 Setter 객체 지향 프로그래밍의 특징 중 하나가 캡슐화이다.
[JAVA] 메소드 재정의 | toString, compareTo toString 메소드 return getClass().getName()+"@"+Integer.toHexString(hashCode()); toString 메소드의 원형이다. 이 메소드를 재정의하여 사용하는 경우가 많다고 한다. 다음은 과제 문제 중 일부이다. 이렇게 재정의 해서 사용 해주었다. 레퍼런스 형인 배열 요소를 출력하기 위해서 Integer.toString(arr[]) 이렇게 처리 했다. compareTo(Object obj) 메소드 여기서 다운캐스팅으로 객체를 처리해주고 두 점수를 뺀 값을 리턴해준다. 그러고 메인함수에서 음수면 other의 승, 0이면 무승부, 양수면 this객체의 승으로 처리해준다.