Java

    BufferedReader / BufferWriter

    BufferedReader와 BufferedWriter는 버퍼를 이용해서 읽고 쓰는 함수이다. 이 함수는 Scanner와 System.out.println()과 기능이 유사하지만 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이 올라간다. (속도 측면에서도 훨씬 빠르다.) 그럼 왜 버퍼를 이용하면 속도가 빠를까? 간단하게 생각했을 때 중간에 버퍼를 거치기 때문에 더 느리지 않을까란 생각을 할 수도 있다. 예를 들어 설명하겠다. 모래 사장에서 모래를 퍼서 다른 구역으로 옮긴다고 했을 때 조금씩 여러번 옮기는 것보다 한 곳에 가득 채워서 (버퍼) 한 번에 나르는 것이 더욱 효율적일 것이다. 즉 버퍼를 사용하면 모아두었다가 한 번에 전송하기 때문에 효율적이다. buffer >데이터를 일시적으로 보관하..

    [Java] 멀티 스레드

    [Java] 멀티 스레드

    📌프로세스와 스레드 프로세스(process)란 간단히 말해서 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 또한 하나의 프로그램(어플리케이션)은 다중 프로세스를 만들기도 하는데, 예를 들어 이클립스 프로그램을 두 개 실행한다거나, Chrome 브라우저를 두 개 실행했다면 두 개의 Chrome 프로세스 혹은 이클립스 프로세스가 생성된 것이다. 멀티 태스킹은 두 가지 이상의 작업을 동시에 처리해주는 것을 말하는데, OS는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 즉, 동시에 여러 프로세스를 실행시키는 것이다. 예를 들어 웹 서핑을 하면서 넷플릭스를 감상하는 경우가 바로 멀티 ..

    [Java] 날짜와 시간(Date, Calendar 클래스) & 형식(Format 클래스)

    [Java] 날짜와 시간(Date, Calendar 클래스) & 형식(Format 클래스)

    📌Date 클래스 Date는 날짜를 표현하는 클래스이다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다. 현재 날짜를 문자열로 얻고 싶다면 toString() 메소드를 사용하면 된다. toString() 메소드는 영문으로 날짜를 리턴하기 때문에 만약에 한글로 출력하고 싶다 던지 혹은 다른 문자열 포맷으로 얻고 싶다면 java.text.SimpleDateFormat 클래스를 이용하면 된다. Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy 년 MM월 dd일 hh시 mm분 ss초"); String strNow = sdf.format(now); System.out.println(strNow); //2022..

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    📌java.lang 패키지 클래스 용도 Object -자바 클래스의 최상위 클래스로 사용 System -표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 -표준 출력 장치(모니터)로 출력하기 위해 사용 -자바 가상 기계를 종료시킬 때 사용 -쓰레기 수집기를 실행 요청할 때 사용 Class -클래스를 메모리로 로딩할 때 사용 String -문자열을 저장하고 여러 가지 정보를 얻을 때 사용 StringBuffer, StringBuilder -문자열을 저장하고 내부 문자열을 조작할 때 사용 Math -수학 함수를 이용할 때 사용 Wrapper (Byte, Short, Character, Integer, Float, Double, Boolean -기본 타입의 데이터를 갖는 객체를 만들 때 사용 -문자열을..

    [Java] 제어자 ,  abstract ,  interface ,  다형성,  내부 클래스

    [Java] 제어자 , abstract , interface , 다형성, 내부 클래스

    📌제어자 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 다음과 같다. 접근 제어자 : public, protected, default, private 그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp 📌접근 제어자 접근 제어자는 클래스의 멤버(변수와 메소드)들의 접근 권한을 지정한다. public : 아무대서나 쓸때 private : 같은클래스 안에서만 쓸때 default : 같은 패키지에서 쓸때 (접근 제어 지시자를 명시하지 않았을 때 자동적으로 패키지 멤버가 된다. default) protected : 같은 패키지내에서, 그리고 다른 패키지의 자손..

    [Java] 상속, overriding, overloading, super, final

    📌상속 상속이란 말 그대로 물려준다는 뜻이다. 상속은 기존에 존재하는 유사한 클래스로부터 속성과 동작을 이어받고 자신이 필요한 기능을 추가하는 기법이다. 이것이 상속에 사용되는 키워드가 extends인 이유이다. 상속되는 클래스를 상위 클래스(super class) (=조상, 부모, 수퍼, 기반 클래스) 상속을 받는 클래스를 하위 클래스(sub class) (=자손, 자식, 서브, 파생된 클래스)라고 한다. 상속은 클래스 정의 다음에 extends를 써주고 수퍼 클래스 이름을 적어주면 된다. ( 하위 클래스 extends 상위 클래스 ) class Calculator { int left, right; public void setOprands(int left, int right) { this.left = ..

    [Java] 생성자

    📌초기화 일반적으로 객체가 생성된 후에 가장 먼저 하는 작업은 객체의 데이터를 초기값으로 설정하는 것이다. Java에서는 생성자라는 개념을 사용하여 객체가 생성될 때마다 초기화 작업을 자동으로 실행한다. 📌생성자 (Constructor) 생성자는 일반 메소드와 아주 흡사하다. 다만 생성자 이름이 클래스 이름과 같고, 반환(return) 값을 가지지 않는다는 점이 다르다. 기본 생성자 (Default 생성자) 만약 클래스 작성시에 생성자를 하나도 만들지 않는 경우에는 자동적으로 메소드의 몸체 부분이 비어 있는 생성자가 만들어진다. 이를 디폴트 생성자라고 한다. 만약 생성자가 하나라도 선언되어 있으면 디폴트 생성자는 자동으로 추가되지 않는다. 즉, 기본 생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정..

    [Java] 조건문 & 반복문

    📌조건문 (if) if(조건식1){ //조건식1의 연산결과가 참일 때 수행된다. } else if(조건식2){ //조건식2의 연산결과가 참일 때 수행된다. } else if(조건식3){ // 여러개의 else if를 사용할 수 있다. //조건식3의 연산결과가 참일 때 수행된다. } else{ 위에 어느 조건식도 만족하지 않을 때 수행된다. } 📌조건문 (switch) switch( 조건식 ) { case 값1: //조건식의 결과가 값1과 같을 경우 수행된다. then //break를 안해주면 case 2도 실행된다. case 값2: //조건식의 결과가 값2와 같을 경우 수행된다. then break; case 값3: //조건식의 결과가 값3와 같을 경우 수행된다. then break; default : ..