Java 28

생성자(Constructor)

메서드처럼 클래스 내에 선언되는 '생성자'는 메서드와 유사한 구조를 가지고 있으나 리턴값이 없다는 점이 다르다. 그럼 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 그래서 인스턴스 변수의 초기화 작업에 주로 사용된다. 생성자의 조건은 2가지가 있다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 1) 생성자 예시 class Card{ Card(){//매개변수가 없는 생성자.} Card(String k, int num){// 매개변수가 있는 생성자.} } 2) 생성자 분석 클래스 이름(타입변수 명, 타입변수 명 ***){ // 인스턴스 생성 시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적음. } 생성자도 오버로딩이 가능해 하나의 ..

Language/Java 2022.01.21

오버로딩(overloading)

자바에서는 메서드도 변수와 마찬가지로 같은 클래스 내에 서로 구분이 가능해야한다. (그럼 계속해서 이름을 다르게 사용해야하나?) 정답은 그렇지 않다. 같은 이름이라도 매개변수의 개수, 타입이 다르면 같은 이름을 사용해 메서드를 정의할 수 있다. 이렇게, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '오버로딩'이라고 한다(중복 메서드) 보면 한 클래스 내에 같은 이름으로 3개의 getInfo가 정의된 것을 볼 수 있는데, 각자 변수의 개수 및 타입이 다르다. 이렇게 오버로딩의 조건은 크게 2가지이다 1. 메서드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 그럼 오버로딩의 장점은 무엇일까? 생각을 해보자. 오버로딩? 우선 효율적일 것이다. 굳이 여러 개의 메서드를 ..

Language/Java 2022.01.20

클래스 메서드(static)와 인스턴스 메서드 (static은 무엇일까)

변수와 마찬가지로, 메서드 앞에 static이 붙어 있으면 클래스 메서드이고, 없으면 인스턴스 메서드이다. (클래스 영역에 선언된 변수를 멤버변수라 하고, 멤버변수 중 static이 붙은 것을 클래스 변수, 붙지 않은 것을 인스턴스 변수라 함. 인스턴스 변수와 static 변수 모두를 통칭하는 말이 멤버 변수!) 그럼 과연 static이 무엇일까? 무엇이길래 유무의 차이로 인해 정의가 바뀌는 것일까? static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 이와 같은 이유는 하나의 변수를 모든 같은 인스턴스가 공유하기 때문이다. static이 ..

Language/Java 2022.01.20

장독에 지식 채우기 (모를때마다 와서 추가)-(2022.01.17ver)

우연히 Java 관련 알고리즘 문제를 풀고 풀이 과정을 듣는 중 ArrayList라는 클래스가 눈에 보였다. (어... 이거 뭐였지?.. )하는 생각이 내 눈앞에 빠르게 지나갔는데... Array는 배열이였고.. List는 리스트? 그럼 ArrayList는? 뭐였지?... 그래서 풀이를 잠시 중단하고 ArrayList에 대해 짚고 넘어가고자 한다. 1. ArrayList ArrayList는 자바에서 기본적으로 많이 사용되는 클래스로 자바의 List 인터페이스를 상속받은 여러 클래스 중 하나이다. 일반 배열과 동일하게 연속된 메모리 공간을 사용하는데, 배열과 마찬가지로 인덱스는 0부터 시작한다. 차이점은 배열은 크기가 고정이지만, ArrayList는 크기가 가변적으로 변한다. 내부적으로 저장이 가능한 메모..

Language/Java 2022.01.17

1) 객체 지향 프로그래밍 및 클래스 제작과 객체 생성 그리고 변수와 메서드)

1) 객체지향적 코드의 예시 - 비객체지향적 코드 - int hour1, hour2, hour3; int minutel, minute2, minute3; float second1, second2, second3; int [] hour = new int[3]; int [] minute = new int[3]; float [] second = new float[3]; - 객체지향적 코드 - Time t1 = new Time(); Time t2 = new Time(); Time t3 = new Time(); Time[] t = new Time[3]; t[0] = new Time(); t[1] = new Time(); t[2] = new Time(); 1) 객체지향 언어의 장점 1. 코드의 재사용성이 높다.(새..

Language/Java 2022.01.17

Java에 대한 기본적인 이해(배열과 메모리 그리고 조건문, 반복문)

1) 배열은 인덱스를 이용해 자료형이 같은 데이터를 관리하는 것이다. 2) 배열의 선언 및 초기화 배열도 변수와 마찬가지로 선언과 동시에 초기화를 할 수 있는데, 자바는 배열의 크기를 정하면 수정이 불가능하다. // 배열 선언 후 초기화 int []arr1 = new int[5]; arr[0]=100 arr[1]=200 arr[2]=300 // 배열 선언과 동시에 초기화 int [] arr2 = {1,2,3,4}; 3) 베열의 메모리 크기는 배열을 구성하는 데이터의 자료형에 따라 배열의 메모리 크기가 결정된다. 4) 배열을 가리키는 배열의 이름 = 기본 자료형 데이터를 담고 있는 변수와 달리 배열 변수는 배열 데이터의 주소를 담고 있다. 5) 배열의 기본 속성 = 기본 자료형 데이터를 담고 있는 변수와 ..

Language/Java 2022.01.17

기본적인 자바코드의 이해 (변수와 메인, 메인메서드, 자료형과 연산자)

Hello world를 이용한 코드 분석(기본 코드의 분석) public class Java{ public static void main(String [] args){ System.out.println("Hello world") }; } 접근제한자 클래스선언 클래스이름{ 접근 제한자 static 반환형 메서드이름(메인함수)(파라미터){ 구현할 코드 } } public class Java{ public static void main(문자열 배열 변수명){ 구현할 코드 }; } 가장 기본적인 Java의 Hello world 출력을 위한 코드로 코드를 분석해보면 다음 위와 같다. // 1) 접근 제한자 -> public, private, protected, default -> 클래스나 메서드에 접근할 수 있는..

Language/Java 2022.01.16