일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- simulation
- implement
- Binary Tree
- 코테
- Tree
- Math
- hash table
- Binary Search
- bit manipulation
- sorting
- Number Theory
- 자바
- Class
- 코딩테스트
- Matrix
- array
- 파이썬
- Method
- 구현
- Data Structure
- geometry
- greedy
- dynamic programming
- Stack
- string
- SQL
- database
- java
- Counting
- two pointers
- Today
- Total
목록Java (109)
코린이의 소소한 공부노트

일반적으로 쓰이는 상속은 부모의 것을 자식이 물려받는 것을 말하고, 포함은 어떤 범주에 들어가 있거나, 물리적으로 어떤 것 안에 존재하는 것 등을 말한다. 이 말이 클래스 간에도 쓰인다. [상속] 1. 상속의 뜻 - 기존의 클래스로 새로운 클래스를 작성하는 것 -> 코드 재사용성 상승 - 두 클래스를 부모와 자식으로 관계를 맺어주는 것 -> (자식 -> 부모) 형태로 그리게 됨 - 부모 클래스를 확장해 자식 클래스를 만드는 개념 -> 키워드로 extends를 사용 class 부모클래스 { // 변수1, 메서드1 정의 } class 자식클래스 extends 부모클래스{ // 변수2, 메서드2 정의 } // 자식클래스는 부모클래스의 변수1, 메서드1을 물려 받는다 2. 상속의 특징 1) 자손은 조상의 모든 ..

변수는 선언 위치/방법에 따라 클래스 변수(class variable, cv), 인스턴스 변수(instance variable, iv), 지역 변수(local variable, lv)로 나뉜다. 변수의 종류만큼 변수 초기화 방법도 다양하다. [지역 변수 초기화] 수동 초기화: 변수 선언 후 대입 연산자를 이용해 직접 값을 넣어주는 것 class Test{ // iv int x; int y = x; // im void method1(){ // lv int i; int j = i; // error: The local variable i may not have been initialized } } 메서드 호출 스택은 무한 제공되는 것이 아니라 한정적으로 할당된 메모리에 메서드가 쌓였다 지워졌다 한다. 그리고 ..

자바에서 객체를 많이 다루다 보면 this를 심심치 않게 만날 수 있다. 생성자 this()와 참조변수 this가 있는데, 이름만 같을 뿐 완전 별개의 일을 하니 이번 기회에 확실히 짚고 넘어가자. 생성자 this()는 - 같은 클래스 내의 매개변수의 개수가 같은 생성자를 호출한다. - 이때 클래스 이름 대신 this를 쓴다. - 다른 생성자 호출시 첫 줄에서만 사용 가능하다. // Time 클래스 내부의 생성자 Time(int h){ // 매개변수 1개 hour = h; } Time(int h, int m){ // 매개변수 2개 hour = h; minute = m; } Time(int h, int m, int s){ // 매개변수 3개 hour = h; minute = m; second = s; } ..

코딩을 하다 보면 기본형 변수만 가지고는 도저히 모든 내용들을 표현할 수 없다. 그래서 객체라는 것을 만들어 내가 원하는 형태로 자료를 구성하고 저장해 관리하는데, 이때 필요한 것이 객체 설계도인 클래스이다. 하지만 설계도만 있다고 해서 물건이 뾰롱 튀어나오는 것이 아니다. 이번에 공부할 것은 객체를 채워주는 역할을 하는 생성자다. 생성자는 - 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드로 - 인스턴스 생성시 수행할 작업에 사용된다. - 인스턴스 생성시 iv는 해당 타입의 기본값으로 자동 초기화되지만, - 우리가 유용하게 쓰려면 iv가 내가 원하는 값으로 초기화되어야 하는데, 이때 생성자를 이용한다. - 변수 초기화에 쓰이기 때문에 메서드이긴 하지만 대입문에 더 가깝다. hour, minut..

일반적으로 메서드는 1가지 기능만 하게 만드는 것이 보통이고, 이 기능을 잘 표현하는 메서드 이름을 붙이기 때문에 메서드와 메서드 이름이 1:1 매칭이 되게 만든다. int add(int x, int y) { return x+y; } 위의 예시는 int끼리 더하는 메서드이다. 그런데 더하는 건 short이나 double도 할 수 있다. short은 계산 시 int로 자동 형변환이 되니까 add를 사용할 수 있다고 쳐도, double은 int보다 큰 타입이기 때문에 매개변수가 int로 선언된 add를 사용할 수 없다. double을 위한 메서드도 만들어줘야 한다. double addDouble(double x, double y) { return x+y; } 그런데 가만 생각해보면, double이든 int든..

변수는 선언 위치에 따라 클래스 변수(cv), 인스턴스 변수(iv), 지역 변수(lv)로 나눠졌다. 메서드도 어떤 것을 기준으로 2가지로 나눠지는데, 기준이 무엇일지 읽어보면서 유추해보자. 메서드는 스태틱 메서드와 인스턴스 메서드로 나눠진다. 아래 예시 코드를 본 후 설명을 읽어보자. class Mathfunc { int a, b; // iv int add() { // im return a+b; // iv } static int add(int a, int b) { // cm return a+b; // lv } } public class Test{ public static void main(String args[]) { // 1) 스태틱 메서드 사용 System.out.println(Mathfunc.add..

메서드의 매개변수는 메서드 선언 시 입력값으로 작성하는 변수로, 메서드가 호출되면 콜러(caller)에서 넘겨준 값을 매개변수에 복사(대입)한 후 메서드 구현부를 실행하게 된다. 일반 변수도 그렇듯 매개변수도 기본형과 참조형으로 구분된다. 1. 기본형 매개변수 - 정수형(byte, short, int, long), 실수형(double, float), 논리형(boolean), 문자형(char) - 콜러에서 넘겨준 변수의 값을 읽기만 할 수 있고 변경할 수 없다.(=read only) 2. 참조형 매개변수 - 문자열형(String), 배열, 기타 사용자 정의 객체 - 콜러에서 넘겨준 변수의 값을 읽고 변경할 수 있다.(=read & write) 매개변수로 넘기는 것이 기본형일 때와 참조형일 때 어떤 차이가 ..

메서드 호출이 일어날 때 메모리 상황이 어떤지를 알려면, 스택이라는 것을 먼저 이해해야 한다. [스택 vs 큐] 1. 스택(stack): Last In First Out, 줄여서 리포 LIFO. 마지막에 들어간 것이 먼저 나온다는 뜻 = 후입 선출 - 컵과 같이 한쪽이 막혀 있고 다른 한쪽에 쌓아 올리는 것 - 주로 막힌 곳을 아래, 열린 곳을 위로 표현 - 스택에 추가를 할 경우 위로 쌓게 됨 - 스택에서 제거를 할 경우 위에서부터 제거가 됨 2. 큐(queue): First In First Out, 줄여서 피포 FIFO. 먼저 들어간 것이 먼저 나온다는 뜻 = 선입 선출 - 파이프처럼 양쪽이 뚫려 있는 형태 - 주로 들어가는 쪽을 뒤, 나오는 쪽을 앞으로 표현 - 큐에 추가를 할 경우 맨 뒤에 추가됨..

메서드는 객체지향 언어에서 쓰는 말로, 작업 단위로 문장들을 묶어서 이름 붙인 것이다. 함수는 클래스에서 독립적으로 있을 수 있는 반면 메서드는 클래스 안에 존재해야 한다. 이런 차이가 있긴 하나, 결과적으로 함수와 메서드는 같은 말이다. 메서드를 왜 사용하는지 배열의 모든 요소를 2번 출력하는 상황을 보자. - 왼쪽 코드: 출력할 때마다 for문 사용 - 오른쪽 코드: 배열 요소를 출력하는 메서드를 만들어 놓고 메인 메서드에서 메서드 호출(사용) 수정이 필요할 때 모든 중복 코드를 다 찾아서 일일이 수정 -> 관리가 어려움 2. 코드 관리가 쉽다. - 메서드를 한 곳에 써놓고 사용하기 때문에, 메서드 수정이 필요한 경우 여러 군데에서 메서드 호출을 해도 1군데만 수정하면 됨(=코드의 유지보수성이 좋음)..

변수는 타입으로도 종류가 나눠지지만, 선언된 위치에 따라서도 종류가 나뉜다. 아래 나온 코드가 이 글의 요약본이다. class Variables{ // 클래스 영역 시작 int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { // 메서드 영역 시작 int lv1; // 지역변수 }// 메서드 영역 끝 }// 클래스 영역 끝 코드에는 2가지 영역이 존재한다. 1. 클래스 영역 - 클래스의 이름으로 시작해 중괄호{ }로 감싸고 있는 영역 - 변수 생성 가능(클래스 변수, 인스턴스 변수) -> 필드/멤버 변수/전역 변수로도 불림 - 메서드 선언(메서드의 이름만 적는 것) 가능 - 메서드 정의(메서드 내부까지 구현한 것) 가능 - 변수/메서드 선언 시 선언문의..