일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코린이
- 개발자
- 새벽공부
- MPA
- exception
- 예외 처리
- 자바
- 인스턴스
- 다형성
- 변수
- 백엔드
- throws
- 문자 단위 스트림
- 파이팅
- 졸리다
- 자료형
- FileInputStream
- node.js
- 상속
- ArrayList
- 바이트 단위 스트림
- try-catch
- 코딩
- SSR
- 배열
- 메서드
- 보조 스트림
- 초보개발자
- 인터페이스
- Java
- Today
- Total
목록코린이 (51)
SHUSTORY
기존 배열의 단점과 ArrayList 기존 배열은 항상 배열 길이를 정하고 시작했다. 그런데 배열을 사용하는 도중에 배열 길이 변경이 불가하며 배열은 중간에 있는 요소를 비워 둘 수 없으므로 배열을 수정하기 복잡하다는 불편함이 있다. 자바는 객체 배열을 더욱 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공한다. ArrayList는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공한다. ArrayList 클래스의 주요 메서드 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미한다. int size( ) 배열에 추가된 요소 전체 개수를 반환한다. E get(int index) 배열의 index 위치에 있는 요소를 반환한다. E remov..
다차원 배열 07-1 배열에서 설명한 배열은 '일차원 배열'이다. 이차원 이상으로 구현한 배열을 '다차원 배열'이라고 하며, 평면이나 공간 개념을 구현하는 데 사용한다. 예를 들어 바둑이나 체스 게임, 네비게이션 지도 등을 구현할 때 이차원 배열을 사용한다. 삼차원 배열은 주로 공간을 나타내는 프로그램에서 활용한다. 이차원 배열 arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] 위와 같이 2행 3열의 이차원 배열을 선언할 수 있으며 위 표는 선언한 배열의 논리 구조이다. 1 2 3 4 5 6 배열의 모든 요소를 참조하려면 각 행을 기준으로 열 값을 순회하면 된다. 이차원 배열을 초기화하려면 행과 열 개수에 맞추어서 { } 내부에 콤마로 값을 구분해..
자료를 순차적으로 관리하는 구조, 배열 배열을 사용하면 자료형이 같은 자료 여러 개를 한 번에 관리할 수 있다. 배열 선언 배열을 사용하려면 이전에 배웠던 변수와 마찬가지로 먼저 선언해야 한다. 배열을 이루는 각각의 자료를 배열 요소라고 한다. 배열 요소는 자료형이 모두 같다. 먼저 저장하려는 자료의 성격에 맞게 자료형을 정하고 선언하려는 배열 요소 개수만큼 [ ] 안에 적는다. 위 예제를 통해 살펴보자면 int형 요소가 10개인 배열을 선언한 것으로 배열 길이는 10개, 배열 전체 바이트는 40바이트이다. 배열 초기화 자바에서 배열을 선언하면 그와 동시에 각 요소의 값이 초기화된다. 배열의 자료형에 따라 정수는 0, 실수는 0.0, 객체 배열은 null로 초기화되며, 배열 선언과 동시에 특정 값으로 초..
변수 유효 범위 지역 변수(로컬 변수)_함수나 메서드 안에서만 사용 가능하다. 다른 함수에서 사용 불가능하며, 지역 변수가 생성되는 메모리를 스택이라고 한다. 스택에 생성되는 지역 변수는 함수가 호출될 때 생성되었다가 함수가 반환되면 할당되었던 메모리 공간이 해제되면서 함께 없어진다. 멤버 변수(인스턴스 변수)_클래스 안에서 사용한다. 클래스가 생성될 때 힙 메모리에 생성된다. 클래스 내부의 어느 메서드에서나 사용 가능하다. 힙에 생성된 인스턴스가 가비지 컬렉터에 의해 수거되면 메모리에서 사라진다. static 변수(클래스 변수)_여러 인스턴스에서 공통으로 사용한다. 사용자가 프로그램을 실행하면 메모리에 프로그램이 상주하고, 이때 프로그램 영역 중 데이터 영역이 있다. 이 영역에는 상수, 문자열, sta..
변수를 여러 클래스에서 공통으로 사용하려면? 예를 들어 생각해보자. 학생 클래스가 있고, 이를 이용하여 여러 학생 인스턴스를 만들 수 있다. 각 학생은 고유한 학번을 가지는데, 이 학번을 학생이 입학할 때 자동으로 생성되도록 만들고 싶다. 이 경우에는 각 인스턴스마다 따로 생성되는 변수가 아닌, 클래스 전반에서 공통으로 사용 가능한 변수가 필요하다. 그리고 학생이 한 명 생성될 때마다 기준 변수 값을 1씩 증가시켜 학생 인스턴스의 학번 변수에 대입하면 된다. 이 때 클래스에서 공통으로 사용하는 변수를 'static 변수'로 선언한다. static 변수의 정의와 사용 방법 static 변수( 정적 변수, 클래스 변수 )는 자바뿐만 아니라 다른 언어에서도 비슷한 개념으로 사용되는 변수이다. 자바에서는 다른 ..
예제 객체 지향 프로그램의 객체 간 협력이 이루어지는 과정을 학생, 버스, 지하철 세 객체 사이의 협력에 관한 예제를 통해 살펴보겠다. 학생 클래스 구현하기 멤버 변수(속성) : 이름 / 학년 / 가진 돈 메서드(멤버 함수) : 지하철을 탄다. / 학생의 현재 정보를 보여 준다. ▶ 8행의 생성자는 학생 이름과 해당 학생이 가진 돈을 매개 변수로 받는다. 학생 클래스 하나를 생성하면 학생 이름과 학생이 가진 돈을 초기화한다. 디폴트 생성자를 제공하지 않으므로 8행의 생성자를 호출해야 한다. ▶ takeBus( )와 takeSubway( ) 메서드는 학생이 가진 돈을 해당 교통수단 이용료만큼 차감시킨다. ▶ showInfo( ) 메서드는 학생 정보를 출력해준다. 버스 클래스 / 지하철 클래스 구현하기 멤버..
자신의 메모리를 가리키는 this this는 생성된 인스턴스 스스로를 가리키는 예약어이다. 이 외에도 다른 역할로 this를 사용할 수 있다. * 참조 변수는 인스턴스를 가리키며, 참조 변수를 출력하면 '클래스 이름@메모리 주소' 문자열 값이 출력된다. 클래스 코드에서 사용하는 this는 생성된 인스턴스 자신을 가리키는 역할을 한다. * 한 파일에 클래스 두 개 이상이 존재할 수 있다. 이 때 public 클래스는 하나뿐이며 public 클래스와 자바 파일 이름은 같아야 한다. 생성자에서 다른 생성자를 호출하는 this 클래스에 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 종종 있다. 이때 this를 사용해 클래스의 생성자에서 다른 생성자를 호출할 수 있다. Person 클래..
교수님께 상담을 받고 왔다. 정말.. 뼈 아픈 말씀들을 마구마구... 해주셨다..ㅎ ㅎ 앞으로 열심히 열심히 할테야! 교수님께 언어공부를 어떻게 하는 게 좋을지에 대해서도 조언을 구해봤다. 교수님께서 내게 문법공부를 한 뒤에 딸려 있는 예제를 푸는 방식으로 공부하냐고 여쭤보셨다. (정답이었음) 그런데 그렇게 공부하는 것 보다는, 집을 지을 때 무엇으로 집을 짓는지보다도 설계도가 더욱 중요하듯, 코딩도 마찬가지라고 하셨다. 먼저 하나의 예제에 대해 직접 어떤 변수를 가지고 어떤 흐름으로 코드를 작성할지 flow-chart를 여러 개 작성해본 뒤, 해당 flow-chart에 대한 코드를 짜보라고 하셨다. 그렇지만 나는 기초를 탄탄하게 쌓는 게 너무 좋아서 문법 공부를 마친 뒤 시작하고 싶어서..ㅋㅋ....최..
접근 제어자 객체 지향 프로그램에서는 '접근 제어자' 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 접근 제어자 설명 public 외부 클래스 어디에서나 접근 가능하다. protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능하다. private 같은 클래스 내부에서만 접근 가능하다. 아무것도 없는 경우 default이며 같은 패키지 내부에서만 접근 가능하다. 7행에서 오류가 발생한다. 그 이유는 studentName 변수의 접근 제어자가 private이므로 외부 클래스의 접근이 허용되지 않기 때문이다. get( ), set( ) 메서드 private로 선언한 변수를 외부 코드에서 사용하려면 해당 변수를 사용할 수 있도록 public 메서드를 ..
참조 자료형 크기가 정해진 기본 자료형으로 선언하는 변수가 있고, 클래스 자료형으로 선언하는 참조 자료형 변수가 있다. 객체 지향 프로그래밍을 시작할 때는 일단 어떤 멤버 변수와 메서드를 제공하여 클래스를 만들지 생각한다. 예제01에서 String이 JDK에서 제공하는 참조 자료형이다. 학생이 수강하는 과목의 이름과 성적을 예제02와 같이 구현하면 학생에 대한 클래스임에도 과목에 대한 변수가 늘어나며 깔끔하지 않은 코드가 짜여진 것을 볼 수 있다. 이 경우 다음과 같이 학생과 과목 클래스를 분리하고, 학생 클래스가 과목 클래스를 멤버 변수를 가지도록 하면 된다. 참조 자료형은 프로그래머가 필요에 의해 만든 클래스를 사용할 수도 있고, JDK에서 제공하는 클래스를 사용할 수도 있다. 기본 자료형을 사용하듯..