static 키워드는 클래스의 멤버(필드, 메서드, 내부 클래스)에 붙일 수 있는 키워드이다. 키워드가 붙어있는 멤버를 정적 멤버(static member)라 부르며 다른 멤버와 구분한다. static멤버의 특징은 아래와 같다. static 키워드를 한 마디로 정의하면 '객체와의 분리'이다. 객체 생성 없이 접근할 수 있기 때문이다. 인스턴스 생성 없이도 사용이 가능하다. 즉, 공유가 가능하다. static method의 경우 인스턴스의 공통 기능을 담당한다. static method는 인스턴스 변수나 인스턴스 메서드를 사용할 수 없다. 메모리에 딱 한 번만 할당되어 메모리 사용에 이점이 있다. static class는 하위 클래스에서만 만들 수 있다. 이렇게 생성된 하위 클래스를 static neste..
문제 X 대학 M 교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그다음 출석번호를 출력한다. 풀이 스트림으로 어떻게 풀지.. 하다가 며칠 전에 자바 8과 11을 비교한 포스팅을 적은 걸 기억해냈다. 거기서 얻은 Predicate키워드를 이용해 일단 1부터..
면접 답변용으로 간결하게 정리. Java를 사용하는 이유 객체지향 진영의 대표적인 언어이다. 캡슐화(데이터를 클래스로 묶어 사용, 제한자를 통한 정보 은닉), 상속(재사용성 증가, 단일 상속만 가능- 죽음의 다이아몬드) 추상화(쉽게 말해 상속의 반대, 공통사항을 추출 - 중복 코드 제거), 다형성(오버라이딩@Override, 오버로딩) JVM을 이용해 운영체제에 독립적으로 구현 및 실행할 수 있다. 역시 운영체제에 독립적인, 자바API를 사용한 멀티스레드 구현 GC를 통한 자동 메모리 관리 -> 개발속도의 증가 -> 비용 감소 자바, 리눅스, MySQL등이 기본적으로 무료이기 때문에 비용이 적게 든다. 수많은 레퍼런스에서 보장받는 안전성 및 JVM의 직접적인 메모리 관리에 따른 높은 보안 Spring을 ..
목차 [면접 준비 - Java]JVM 구조(2), Runtime Data Area JVM(Java Virtual Machine) JVM(Java Virtual Machine)이란 이름 그대로 자바 바이트코드를 실행할 수 있는 가상 머신이다. 여기서 자바 바이트코드란 JVM이 실행할 수 있는 언어로 이루어진 명령어의 집합을 가리키며, 플랫폼에 독립적이기 때문에 하드웨어나 운영체제와 무관하게 동작 가능하다는 특징이 있다. 참고로 바이트코드라는 별칭은 컴파일러에 의해 변환된 명령어의 크기가 1바이트이기 때문에 붙었다고 한다. 계속해서 앞서 언급한 정의를 하나로 이어서 그림과 함께 다시 한번 정리하면 JVM이란 컴파일러가 소스코드를 번역해서 만들어낸 바이트코드를 해당 O/S 및 H/W에 맞게 기계어로 해석해주는..
메서드 오버로딩과 오버라이딩은 모두 자바의 다형성을 구현하는 방법이다. 게다가 이름과 구현과정까지 나름 비슷해서 가끔 헷갈릴 때가 있는데, 오늘도 헷갈린 김에 잊지 않으려 정리를 한다. Method Overloading 가장 먼저 짚고 넘어가야 할 오버로딩과 오버라이딩의 근본적인 차이는 두 행위가 구현되는 타이밍이다. 오버로딩의 경우 컴파일 과정에서 구현되며, 오버라이딩은 실행시, 혹은 런타임으로 구현된다. 계속해서 오버로딩은 같은 클래스 안에서 두 개 이상의 같은 이름을 가진 메서드를 정의하는 것을 가리키며, 여기엔 아래와 같은 몇 가지 규칙이 존재한다. 메서드 이름이 같아야 한다. 리턴 타입과 예외처리는 같아도 되고 달라도 된다. 파라미터의 개수가 다르거나, 같다면 타입이 달라야 한다. 즉, 시그니처..
생성자 글에서도 적었지만, 부모 클래스가 기본 생성자를 가지고 있지 않으면 자녀 클래스의 생성자는 반드시 부모의 매개변수가 있는 생성자를 첫 줄에 호출해야 하며, 그렇지 않을 경우 컴파일 오류가 발생한다. 사실 부모가 기본 생성자를 가지고 있는 경우에도 자녀 클래스 생성자에서 호출해주어야 하는 건 같지만 이 경우에는 컴파일러가 알아서 추가해주기 때문에 명시적으로 할 필요가 없을 뿐이다. 왜 이런 귀찮은 작업을 수행해야 하는 걸까? 정답부터 말하자면 상속을 위해선 부모 클래스가 자녀 클래스보다 먼저 존재해야 하기 때문이다. 상속받은 클래스 멤버는 기본적으롤 부모 클래스에 속한 것이므로 부모가 먼저 존재하지 않으면 자녀 클래스에서 호출해 사용하는 것이 불가능하다. 따라서 반드시 자녀 클래스보다 부모 클래스가..
문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 풀이 굉장히 쉬운 문제지만 summarizingInt()를 사용해보고 싶어서 굳이 풀어보았다. summarizingInt()는 스트림에서 개수, 합계, 평균, 최대, 최소를 한 번에 구해주는 연산이다. 2022.10.13 - [Development/Java] - [Java]스트림에서 개수, 합계, 평균, 최대, 최..
자바에서 생성자는 클래스의 네 가지 구성요소(필드, 메서드, 생성자, 내부 클래스)중 하나이며 메서드와 비슷한 코드 블럭, 혹은 특별한 메서드이다. 위 문장은 메서드를 어떻게 정의하느냐에 따라 달라지는 미묘한 의미를 가졌지만, 어쨌거나 중요한 것은 생성자 역시 메서드, 혹은 그에 준하는 코드 블럭이라는 것이다. 생성자는 매개변수의 유무에 따라 기본 생성자(Default or no-arg Constructor) - 매개변수가 없는 생성자 매개변수가 있는 생성자(Parameterized Constructor) 로 나뉘며 일반적인 메서드와는 다른 생성자만의 특징은 아래와 같은 것들이 있다. 클래스의 멤버(Member)가 아니므로 상속 및 오버 라이딩의 대상이 되지 않는다. 생성자의 이름은 반드시 클래스의 이름..
문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 1부터 n까지 합을 출력한다. 풀이 반복문을 스트림으로 풀이하는 기본 중의 기본 문제이다. 간단하게 풀 수 있다. import java.util.Scanner; import java.util.stream.IntStream; public class Prob8393Stream { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int result = IntStream.rangeClosed(1, n) .sum(); System.out.pri..
Class 클래스는 객체 자체가 아닌 객체를 생성하기 위한 틀이자 설계도이다. 기본적으로 class 키워드를 이용해 아래와 같이 정의하며, public class Car{ int doors = 4; // (1)필드 void stop {...} // (2)메서드 Car {...} // (3)생성자 class Car2 {...} // (4)내부 클래스 } 필드, 메서드, 생성자, 내부 클래스의 구성요소 중 생성자를 제외한 세 가지를 클래스(혹은 생성된 객체)의 멤버라 부른다. 각 구성요소의 특징은 아래와 같다. 필드 - 클래스(객체)의 속성을 나타내는 변수. 차의 모델명, 색깔, 문의 개수 등이 있다. 메서드 - 클래스(객체)의 기능을 나타내는 함수. 가속하기, 멈추기 등이 있다. 생성자 - 클래스의 객체를..
- Total
- Today
- Yesterday
- 파이썬
- java
- 자바
- 유럽여행
- Python
- Algorithm
- 리스트
- RX100M5
- 알고리즘
- 유럽
- 기술면접
- 여행
- 맛집
- 칼이사
- 스트림
- 스프링
- 세계일주
- Backjoon
- 지지
- 백준
- 세모
- 남미
- 중남미
- 면접 준비
- 동적계획법
- 야경
- spring
- a6000
- BOJ
- 세계여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |