728x90

JAVA 73

[JAVA] 자바 입출력과 스트림

프로그램은 데이터를 외부에서 입력받아 처리, 출력하는 구조로 이루어져있다. 자바에서는 입출력을 처리하기 위해 별도의 패키지를 제공한다. Stream : 자바가 외부와 접속하여 데이터를 주고받는 작업을 도와주는 통로 (InputStream, OutputStream) 입출력이 동시에 진행되는게 아니라 독립적으로 한가지 기능만 동작하기 때문에 데이터 교환을 위해서는 입출력스트림이 각각 따로 필요하다. 바이트 기반 스트림 바이트 단위로 파일을 읽고 출력할 때 사용, 모든 타입의 데이터 가능 InputStream - FileInputStream OutputStream - FileOutputStream 문자 기반 스트림 문자 단위로 파일을 읽고 출력할 때 사용, 문자 데이터만 가능 기본적으로 2byte를 지원하기 ..

JAVA 2023.09.07

[JAVA] 데몬스레드

데몬(Daemon)스레드 일반스레드의 작업을 돕는 보조 스레드(스레드의 스레드). 함께 구동중인 스레드가 종료되면 데몬스레드도 함께 종료됨 3초간격으로 자동저장하는 코드를 작성해보자 스레드 예제 1️⃣ 스캐너를 이용하여 키보드에서 숫자를 입력받고 입력받은 숫자가 1씩 감소하다가 0이 되었을 때 "종료"라는 메세지와 함께 스레드를 빠져나오자. 2️⃣ QuizThread클래스를 만들고 스레드를 상속받는다. startGame()메서드를 만들고 그 안에서 1~100사이의 난수 두 개를 더하는 문제를 출제한다. 키보드에서 답을 입력하여 5문제가 정답처리될 때까지 로직을 반복한다. 5문제가 정답처리된 후 문제를 맞추는데까지 몇초가 걸렸는지 화면에 출력하며 종료해보자. 작성중

JAVA 2023.09.06

[JAVA] 스레드

프로세스 : 현재 실행되고 있는 프로그램 스레드 : 프로그램 내부에 존재하면서 실행흐름을 나타내는 것 각각의 프로세스는 서로 간섭할 수 없다. 프로세스가 실행되는 방식 - 시간분할방식 : 모든 프로세스에게 동일한 시간을 할당하고 골고루 실행되는 방식 - 선점형방식 : 각각의 프로세스에게 우선 순위를 부여하고 우선순위가 높은순으로 실행되는 방식 스레드의 생성 JVM이 스레드 처리시 하는일? 스레드 스케쥴링! - 스레드가 몇 개 존재하는지 - 스레드가 실행되는 프로그램코드 위치가 어딘지 - 현재 스레드 상태는 무엇인지 - 스레드의 우선순위는 몇인지 개발자가 스레드 처리시 하는 일? 자바 스레드로 동작할 작업이 무엇인지 코드로 작성! 스레드의 사용 메인과 별개로 동시 실행한다. - Thread 클래스 상속 +..

JAVA 2023.09.04

[List,Set 컬렉션] 랜덤 숫자 빙고판을 만들자

⭐컬렉션을 이용하여 5*5 랜덤 빙고판을 만들자. (1~50 사이의 난수 중 25개) 힌트) Set객체를 ArrayList로 변환하면 셔플메서드 사용 가능 내가 작성한 코드 결과 숫자가 나오다가 뒤돌아가서 끝까지 안나온다... 고민 마지막 출력문에서 문제가 있다. (list.get(i+j)+" ") 이 아닌 것 같다. 정확히는 i+j 가 아니다. 이중for문 예제를 다시 복습할 필요가 있다... 그리고 1~9까지는 한자리로 나와서 통일성이 떨어진다.. 다같이 두자리로 만들어야겠다. 새로 작성한 코드와 결과 int n = 0; 외부변수를 만들고 출력문 안에서 ++로 늘려줘야한다. list.get(n++) 그리고 1의 자리 숫자는 한자리로 나와서 전체 모양이 울퉁불퉁 출력되는게 문제였는데 서식문자를 활용하면..

JAVA/오류고민 2023.09.02

[JAVA] 컬렉션 프레임워크 _ Map컬렉션(HashMap)

Map컬렉션 - key와 value가 하나의 데이터로 저장됨 - key는 value를 조회하기 위한 고유한 존재 - Map 인터페이스를 구현한 클래스는 HashMap, TreeMap 등 - index가 없지만 key가 index의 역할을 대신함 - 많은 양의 데이터를 조회하는데 성능이 매우 뛰어남 HashMap //HashMap 생성(선언) HashMap map = new HashMap(); //HashMap에 데이터(요소)추가하기 map.put(100,'A'); map.put(25,'B'); map.put(33,'C'); //map에는 중복되는 value를 추가할 수 있다. map.put(40,'A'); System.out.println(map); //map에 key값은 중복될 수 없다. 존재하는 ke..

JAVA 2023.09.02

[JAVA] 컬렉션 프레임워크 _ 반복자(Iterator), 정렬

반복자(Iterator) : 컬렉션의 요소를 순회하면서 하나씩 추출하는데 사용한다. 때문에 컬렉션을 위해 존재하는 인터페이스라고 할 수 있다. 반복자의 메서드 hasNext() : 다음 순회할 데이터의 유무 확인 next() : 다음위치의 데이터로 이동하여 값을 반환 **Iterator의 객체생성 Iterator는 인터페이스이기때문에 일반적인 객체생성방법으로는 불가능 순회하고자 하는 컬렉션요소의 자료형과 일치시킴 *정수형 : int->Integer List 컬렉션의 정렬 **Collection은 인터페이스지만 Collections는 일반적인 클래스 Collections의 sort 메서드 Collections.sort(ArrayList객체명); Collections의 shuffle 메서드 Collectio..

JAVA 2023.09.01

[JAVA] 컬렉션 프레임워크 _ Set컬렉션(HashSet, TreeSet)

HashSet List와 다르게 중복값을 허용하지 않고 index가 없어 개별 요소에 접근불가 //HashSet 생성 HashSet hs1 = new HashSet(); //HashSet에 데이터(요소)추가하기 hs1.add("b"); hs1.add("a"); hs1.add("f"); hs1.add("d"); System.out.println(hs1); //정렬기능없음 hs1.add("a"); hs1.add("b"); System.out.println(hs1); //중복되는 값의 추가 불가능 //Set에 들어있는 요소의 개수 확인하기 System.out.println("hs1의 요소의 개수 : "+hs1.size()); //Set에 해당요소가 들어있는지 검증하기 System.out.println("a의 ..

JAVA 2023.09.01

[메서드] 숫자맞추기 게임

⭐Start클래스를 생성하여 1~50까지 난수를 발생시킨다. StartMain클래스를 만들고 사용자가 키보드를 통해 정수를 입력받는다. Start클래스에서 사용자가 입력한 숫자를 판단하여 발생한 난수보다 크다면 "down", 작다면 "up"을 반환한다. 입력한 숫자와 난수가 같을 경우 프로그램을 종료시키며 몇회만에 정답을 맞췄는지 판단하기. 단 정답을 맞춘 경우 프로그램 종료는 메인클래스에서 이루어지도록 만들자 예시) 숫자입력 30 down 숫자입력 15 up 숫자입력 25 3회만에 정답! 내가 작성한 코드 결과 45보다 크고 46보다 작다는 이상한 결과가 나온다.. while 반복문 안에 문제가 있는 것 같다.... 고민 start 객체생성을 while문 안에서 작성한게 문제였다. 객체생성을 반복문 안..

JAVA/오류고민 2023.08.31

[JAVA] 컬렉션 프레임워크 _ List컬렉션(ArrayList)

컬렉션 프레임워크 배열은 한번 생성하면 크기를 바꾸기 어렵다는 불편함을 해결하기 위해 필요한 자료구조(데이터를 보관하는방법, 데이터를 활용하는 기능)를 미리 구현하여 컬렉션 프레임워크를 제공한다. 기존의 List(배열의 상위호환), Queue(대기열, 선입선출), Tree(구조도) 등의 자료구조를 인터페이스화 시켜서 묶어놓은 개념이다. 즉, 컬렉션 프레임워크란? 기존에 존재했던 자료구조에 인터페이스로 설계된 기능을 클래스를 통해 제공하여 관리에 용이한 자료구조를 구조화한 것! ArrayList List 인터페이스를 구현한 클래스 중 가장 많이 사용되는 클래스 내부적으로는 배열을 이용해 구현되어 배열과 호환성이 좋은 자료구조 데이터의 조회, 추가, 삭제, 수정이 가능하고 중복을 허용 index가 존재⭐중요..

JAVA 2023.08.31

[JAVA] 제네릭(Generic)

제네릭(Generic) :일반적인 코드를 작성하고 이 코드를 다양한 타입의 객체에 대해 재사용하는 객체지향 기법 객체의 타입을 컴파일할 때 지정하기 때문에 객체타입에 대한 안정성을 높이고 형변환의 번거로움을 줄일 수 있다. 제네릭선언 예시 public class 클래스명 { ... } public interface 인터페이스명 { ... } 제네릭의 객체생성 클래스명 객체명 = new 클래스명(); 자료형은 wrapper클래스명으로 적어야함 *정수형 : int->Integer 두개 이상의 제네릭(멀티타입 파라미터) : 타입에 두개이상 넣을 수 있고 각 타입은 콤마로 구분 제네릭 메서드 : 객체생성을 한번만 하면 되는 코드절약, 다양한 자료형을 매개변수로 유연한 활용가능 기존) 제네릭을 사용하는 경우 자료..

JAVA 2023.08.30
728x90