Java 47

[JAVA] 실전 자바 - 객체 지향 프로그래밍

객체 지향 프로그래밍 💡 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고객체들 간의 상호작용을 중심으로 하는 프로그래밍  객체 지향 언어는 클래스 내부에 속성(데이터, 멤버 변수)와 기능(메서드)을 함께 포함할 수 있다.객체는 자신의 메서드를 통해 자신의 멤버 변수에 접근할 수 있다.  캡슐화 속성과 기능을 하나로 묶어 필요한 기능을 메서드를 통해 외부로 제공하는 것  💡 객체지향 프로그램은 속성과 기능이 하나의 클래스에 묶여 캡슐화가 되어 있는 것  객체가 온전히 살아있는 느낌!  절차 지향 프로그래밍 vs 객체 지향 프로그래밍  -객체 지향: 객체의 설계와 관계를 중시한다. 객체들 간의 상호작용을 중심으로 프로그래밍한다.   -절차 지향: 데이터와 기능이 분리되어 있고, 프로그램이..

BACK/JAVA 2024.01.30

[JAVA] 실전 자바 - 기본형과 참조형

기본형과 참조형 기본형 실제 사용하는 값을 변수로 담을 수 있다. 메서드로 기본형 데이터를 전달 하면 값이 복사되어 전달된다. 참조형 실제 객체의 위치를 저장한다. ex)객체, 배열, 클래스, String(클래스) 메서드로 참조형 데이터를 전달하면 참조값이 복사되어 전달된다. 💡 기본형은 소문자로 시작한다. 💡 기본형을 제외한 나머지는 모두 참조형이다. 💡 클래스는 대문자로 시작한다. 클래스는 모두 참조형이다. 대원칙 - 자바는 항상 변수의 값을 복사해서 대입한다. 변수 대입 기본형이면 변수에 들어 있는 실제 사용하는 값을 복사해서 대입하고, 참조형이면 변수에 들어 있는 참조값을 복사해서 대입한다. 메서드 호출 메서드 호출 시 사용하는 매개변수(파라미터)도 결국 변수다. 기본형: 메서드 내부에서 매개변수..

BACK/JAVA 2024.01.30

[JAVA] 실전 자바 - 클래스와 데이터

클래스와 객체 public class Student { String name; int age; int garde; } 클래스는 사용자 정의 타입을 만들기 위한 설계도이다. 클래스에 정의한 변수들을 멤버 변수, 또는 필드라 한다. 클래스를 사용해 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고 한다. ⇒ 클래스는 설계도이고, 이 설계도를 기반으로 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고 한다. -클래스: 객체를 생성하기 위한 설계도. 객체가 가져야할 속성(변수)와 기능(메서드)를 정의 -객체: 클래스에서 정의한 속성과 기능을 가진 실체 -인스턴스: 특정 클래스로부터 생성된 객체 (객체가 어떤 클래스에 속해있는지 강조할 때 사용) 객체 생성 Student student1 = new Stud..

BACK/JAVA 2024.01.30

[JAVA] 자바 프로그램의 구조와 실행 과정

자바의 플랫폼 독립성 자바의 가장 큰 특징은 플랫폼 독립성이다. 플랫폼 독립성이란 하나의 프로그램이 모든 플랫폼(윈도우, 맥 리눅스..)에서 실행 가능한 것을 말한다. 자바의 가상머신 JVM이 이를 가능하게 해준다. 자바의 실행 파일(.class)은 이 가상머신이 사용하는 기계어의 집합으로 구성되어 있어, 가상머신을 이용하면 어떤 플랫폼에서도 .class파일을 실행할 수 있다. JVM 이란? JVM은 JavaVirtual Machine의 줄임말로 wirte once, run erveywhere. 즉 OS마다 따로 코드를 작성해야 하는 번거로움 없이 Java가 플랫폼에 독립적일 수 있게 만들어준다. 그리고 가비지 컬렉션을 통해 자동적인 메모리 관리를 해준다. (가비지 컬렉션: JVM의 메모리 관리 기법 중..

BACK/JAVA 2022.11.11

[JAVA] 백준 15652번- N과 M(4)

https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ public static int n, m; public static int[] arr; // 값을 담을 배열 // public stati..

ALGORITHM 2022.08.27

[JAVA] 쓰레드의 6가지 상태

NEW 처음 객체 생성된 후 상태 RUNNABLE start() 메서드로 실행한 후 상태 실행과 실행 대기를 반복하면서 CPU를 다른 쓰레드들과 나눠 가짐 일시정지 상태로 전환 가능 (TIMED_WAITING, BLOCKED, WAITING) TERMINATED run() 메서드 종료 후 상태 TIMED_WAITING Thread.sleep(long millis) 또는 join(long millis) 호출: RUNNABLE -> TIME_WAITING 일시정지 시간 종료 또는 interrupt() 호출 : TIMED_WAITING -> RUNNABLE BLOCKED 동기화 메서드 또는 동기화 블록을 실행하기 위해 먼저 실행 중인 쓰레드의 실행 완료를 기다리는 상태 앞의 쓰레드의 동기화 영역 수행이 완료되..

BACK/JAVA 2022.08.26

[JAVA] 백준 2839번- 설탕 배달

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRea..

ALGORITHM 2022.08.24

[JAVA] 백준 2886번- 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 시간 제한이 0.15초로 짧다. 그리고 정답 비율도 매우 낮다. 그리고 역시나 그냥 생각나는대로 이렇게 반복문으로 풀었더니 시간초과가 났다. int total = 0; int day = 0; while(total

ALGORITHM 2022.08.24