Java/문법 15

[Java] 우선순위 큐 (PriorityQueue) 기본 사용법부터 객체 다루는 방법까지

우선순위 큐 (PriorityQueue) 란? 우선순위 큐는 삽입 순서와 상관 없이, 우선순위가 높은 데이터가 먼저 빠져 나가는 자료구조이다. PriorityQueue 기본 사용법 선언하기 // 우선순위가 낮은 숫자(작은 숫자)가 먼저 추출됨 PriorityQueue pQ = new priorityQueue(); // 우선순위가 높은 숫자(큰 숫자)가 먼저 추출됨 PriorityQueue pQ = new priorityQueue(Collections.reverseOrder()); 메서드 삽입 - add(원소) : 원소를 추가한다. - offer(원소) : 원소를 추가한다. 삭제 - remove() : 우선순위의 첫번째 값을 제거하고, 해당 값을 반환한다. 비어있으면 에러가 반환한다. - poll() : ..

Java/문법 2024.04.22

[JAVA 중급 스터디 - 7~9회차] 상속

상속 상속이란? 기존 클래스의 속성을 물려 받아, 새로운 클래스를 생성하는 것 extends : java에서 상속을 위해 사용하는 키워드 하나의 대상만 선택 가능. (단일상속만 지원) java는 다중상속을 지원하지 않음! 해결 방안 : implements 키워드를 이용한 인터페이스의 다중구현 으로 해결 단일 상속 vs. 다중 상속 1) 단일 상속 2) 다중 상속 자바가 다중상속을 지원하지 않는 이유 - 다이아몬드 문제 발생 가능성 때문 1) GrandFather 클래스에 memberMethod() 라는 이름의 메소드가 있다고 가정하자. 2) FatherA와 FatherB가 각각 memberMethod() 오버라이딩하여 구현했다. 3) FatherA와 FatherB를 모두 상속받은 Son 클래스는 어떤 부..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 6회차] final

final final 키워드 처음 정의된 상태가 변하지 않도록 보장한다. class, method, 변수 등 여러 곳에 붙을 수 있다. final final + 지역변수 final을 지역 변수에 설정할 경우, 최초 한번만 할당 가능 이후에 변수의 값을 변경하면 컴파일 오류 발생 final 지역변수를 선언시 바로 초기화한 경우, 이미 값이 할당되없으므로 이후에 값 재할당 불가능 final + 매개변수 매개변수에 final이 붙으면 메서드 내부에서 매개변수 값의 변경이 불가능 메서드 호출시점에 사용된 값이 끝까지 사용됨 public class FinalLocalMain { public static void main(String[] args) { //final 지역 변수1 final int data1; dat..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 4~5회차] static

static 변수 static static 키워드는 주로 멤버 변수와 메서드에 사용된다. static의 필요성 static 변수는 쉽게 이야기해서 클래스인 붕어빵 틀이 특별히 관리하는 변수이다. 붕어빵 틀은 1개이므로 클래스 변수도 하나만 존재한다. 반면, 인스턴스 변수는 붕어빵인 인스턴스의 수 만큼 존재한다. static 변수 public class Data { public String name; public static int count; //static } 멤버변수는 static이 붙은 것 / 아닌 것으로 분류한다. 인스턴스 변수 static이 붙지 않은 멤버 변수 ex. name 인스턴스를 생성해야만 사용 가능 인스턴스에 소속됨 인스턴스를 만들 때마다 생성됨 클래스 변수 (정적 변수, static..

Java/문법 2024.03.20

[JAVA 중급 스터디 - 3회차] 자바의 메모리 구조

스택/힙/메서드 영역 붕어빵과 붕어빵틀에 비유 자바의 메모리 구조는 크게 스택 영역, 메서드 영역, 힙 영역 3개로 나눌 수 있다. 메서드 영역 클래스 정보를 보관하는 영역. 이때, 클래스 정보 == 붕어빵 틀 스택 영역 실제 프로그램이 실행되는 영역 메서드를 실행할 때마다 하나씩 쌓인다. 힙 영역 객체(인스턴스)가 생성되는 영역 new 명령어를 사용하면 이 영역이 이용됨 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간! 배열도 이 영역에 생성됨 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터를 관리 클래스 정보, static 영역, 상수 풀이 있음 프로그램의 모든 영역에서 메서드 영역이 공유된다.클래스 정보 모든 실행 코드가 존재 (클래스의 실행 코드(byte 코드), 필드, 메서드와 생성자 코드 ..

Java/문법 2024.03.09

[JAVA 중급 스터디 - 2회차] 접근 제한자와 캡슐화

접근 제한자 접근 제한자는 외부로부터 데이터를 보호하고, 외부에는 불필요한(내부적으로만 사용되는) 부분을 감추기 위해 사용한다. 접근제한자의 종류 접근 제한자에는 public, protected, default, private이 있다. 생성자, 메서드, 필드의 접근 제한자로는 public, protected, default, private 이 모두 가능하다. 클래스의 접근 제한자로는 private, public 만 가능하다. public > protected > default > private 순으로 많은 접근을 허용함 private 모든 외부 호출을 막음 클래스 안으로 속성과 기능을 숨길 때 사용 외부 클래스에서 private 클래스 내부의 기능을 호출할 수 없음 default (=package-pri..

Java/문법 2024.03.08

[JAVA 중급 스터디 - 1회차] 기본형/참조형, Wrapper Class생성자, 패키지

자바 중요 문법 빠르게 반복하는 스터디를 진행하게 됐다!! 👩‍💻 너무 감사하게도 팀장님이 자료 공유 + 강의까지 해주신다구 하셔서 이제 내가 해야할 건 열심히 공부하는 것 뿐 👽 기본 개념 다지기 기본형과 참조형 기본형 - Primitive Type boolean, char, byte, short, int, long, float, double 기본형 변수로, 실제로 직접 사용할 수 있는 값이다. (실제 값이 저장됨) null값이 존재하지 않는다. 기본값이 정해져 있기 때문! primitive type 기본값 boolean false char '\u0000' byte 0 short 0 int 0 long 0L float 0.0F double 0.0 ❓ primitive type에 null값, 아예 불가능..

Java/문법 2024.03.08

[Java] 배열의 공통 원소 집합 구하기

어떤 배열에서 존재하는 원소들의 집합을 구하고 싶다. 즉, 중복을 제거하고 싶다. 예를 들어, [1, 3, 2, 1, 4, 5, 1, 4] 라는 배열을 {1, 2, 3, 4, 5}로 만들고 싶은 것이다. 그렇다면 자바에서 배열을 집합으로 변경할 수 있는 함수가 있을까? 없다. 배열을 List 객체로 변환해주어 HashSet의 생성자 파라미터로 넣어주면 된다. 그렇게 되면 Set 객체는 중복을 허용하지 않기 때문에 배열의 중복이 제거된다. import java.util.*; public class Main { public static void main(String[] args) { String[] arr = { "a", "b", "c", "a", "c" }; Set set = new HashSet(Arra..

Java/문법 2024.03.02

[Java 문법] Scanner보다 빠른 BufferedReader, StringTokenizer

BufferedReader는 Java.io에 속하는 입력 클래스로, Scanner에 비해 처리 속도가 빠르다. 때에 따라 2배 이상 차이 나는 경우도 있다. 알고리즘 문제를 풀 때 유용할 것!! Scanner Scanner sc = new Scanner(System.in); String str = sc.next(); // 문자열 입력받기 int i = sc.nextInt(); // 정수 입력받기 long l = sc.nextLong(); // long타입 입력받기 BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(Syste.in)); String s = br.readLine();// 문자열 입력받기 int i = Int..

Java/문법 2024.01.29

[Java 문법 총정리] final

💡 대부분의 내용을 점프 투 자바 에서 참고하여 정리하였습니다. final 자료형에 값을 단 한번만 설정할 수 있게 강제하는 키워드이다. 값을 한 번 설정하면 해당 값을 변경할 수 없으므로, 값이 바뀌면 안 될 때 사용한다. final int n = 123; n = 456; // 컴파일 오류 발생!!! list와 final 리스트도 final로 선언하면 재할당이 불가능하다. 하지만, 리스트에 값을 더하거나 빼는 것은 가능하다. (재할당만 불가능할 뿐.) final ArrayList a = new ArrayList(Arrays.asList("a", "b")); a = new ArrayList(Arrays.asList("c", "d")); // 컴파일 에러 발생!!! a.add("c"); // 에러 발생하지..

Java/문법 2024.01.27