본문 바로가기

JAVA/혼자공부하는자바

(28)
[JAVA] 중첩 클래스 중첩 클래스란 클래스 내부에 선언된 클래스이다. 사용하는 이유는 1. 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다. 2. 외부에 불필요한 관계 클래스를 감춰 복잡성을 줄일 수 있다. class ClassName{ class NestedClassName{ } } 위와 같은 형태로 이루어져 있다. class ClassName{ Interface NestedInterfaceName{ } } 인터페이스도 클래스 내부에 선언할 수 있는데 이를 중첩 인터페이스라고 한다. 중첩 클래스 멤버 클래스 : 클래스의 멤버로 선언되어 있는 클래스를 멤버 클래스라고 한다. 로컬 클래스 : 클래스의 메소드나 생성자 내부에서 선언되어 있는 클래스를 로컬 클래스라고 한다. 멤버클래스는 클래스나 객체가 사용중이라면 언제든지 재사용..
[JAVA] 메소드(Method), 리턴(return) 다른 언어에서는 함수가 별도로 존재하지만 자바는 클래스 내 함수가 존재한다. 자바는 이 클래스 내 함수를 메소드라고 부른다. *파이썬은 함수와 메소드가 공존하여 두 개를 구분하지만 자바는 메소드만을 사용함 wikidocs.net/225 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 메소드란 public int sum(int a, int b) { return a+b; } sum메소드는 입력값으로 두개의 값(int 자료형 a, b)을 받아 리턴 값은 두 개의 입력 값을 더한 값(int 자료형)이다. 여기서 return은 메소드의 결과 값을 돌려주는 명령어이다. public class Test { public int sum(int a, int b) { return a+b; } pub..
[JAVA] 클래스란? 프로그래밍에서 낱개의 자료를 저장하는 공간을 '변수(variable)'라고 한다. 이 때 같은 형식(자료형)의 여러 변수를 저장하는 공간을 '배열(array)' 이라고 한다. 여기서 여러 종류의 자료형 변수를 저장하는 공간을 '구조체(struct)'라고 하며 이는 C구조적 프로그래밍에서 중요한 요소이다. 이 구조체에서 파생된 것이 '클래스(class)'이며 다양한 자료형과 다양한 자료를 저장할 수 있으며 추가적으로 메서드 (함수)를 내장할 수 있다. 간단하게 작은 클래스를 만들어보자. wikidocs.net/214 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net !점프 투 자바의 클래스 문서를 그대로 각색하여 작성함! 클래스란? Car.java public class Car { ..
[JAVA 기초] 객체 지향 프로그래밍 (객체, 클래스) 객체(Object) 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한 것 속성 (필드(field)) + 동작(메서드(method))로 구성 객체와 객체 간의 상호작용 메서드를 통해 객체들이 상호작용 메서드 호출 : 객체가 다른 객체의 기능을 이용하는 것 int result = Calculator.add(10, 20); 리턴한 값을 int 변수에 저장 사람(객체)이 계산기(객체)의 더하기 (메서드) 기능을 이용할 때 위해서는 메서드를 호출하여 전자계산기에서의 리턴 값을 전달해준다. 객체 간의 관계 집합 관계 - 부품과 완성품의 관계 사용 관계 - 객체 간의 상호작용 상속 관계 -상위(부모) 객체를 기반으로 하위(자식) 객체를 생성 클래스 (class) 자바의 설계..
[JAVA 기초] 열거 타입 데이터 중에는 몇 가지를 한정된 값만을 갖는 경우가 있다. ex) 4계절 : 봄, 여름, 가을, 겨울 ex) 달력 : 1월, 2월, 3월... ,12월 이러한 한정된 값을 갖는 타입을 열거 타입이라고 한다. 열거 타입 열거 상수(한정된 값)를 저장하는 타입 위와 같이 Week 열거 타입을 선언하면 해당 타입으로는 선언된 상수만을 사용할 수 있게 된다. Week today; today = Week.FRIDAY; 열거 타입 선언 소스파일(.java) 생성 열거 타입 선언 public enum 열거타입이름 { ... } 열거 타입의 키워드는 enum이다. public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY} // (열..
[JAVA 기초] 자바 배열 4(객체를 참조하는 배열, 배열 복사, 향상된 for문) 참조 타입 배열 기본 타입이 아닌 참조 타입의 배열은 요소의 값(리터럴)을 저장하지 않고, 객체의 번지를 저장을 한다. 예를 들어 String 배열 변수를 선언해보자. (String은 참조 타입 중 클래스에 해당) String[] strArray = new String[3]; strArray[0] = "Java"; strArray[1] = "Java"; strArray[2] = new String("java"); 위와 같이strArray 변수에 3개의 배열 객체를 만들어 대입하고 각 인덱스에 "Java" 문자열을 추가해주면 메모리에 아래 그림처럼 생성이 된다. 이때 0과 1인덱스에서는 힙 영역에 생성된 동일한 "Java" String 객체를 공유하여 참조한다. 2인덱스에서는 new연산자를 사용하여 새로운..
[JAVA 기초] 자바 배열 3 (다차원 배열) 2차원 배열 수학의 행렬과 같은 구조로 가로와 세로로 표가 만들어진다고 생각하자. int[][] scores = new int[2][3]; // 2 * 3 표 모양의 행렬 생성 -구현 방법: 실제로 자바가 표와 같은 형태로 2차원 행렬 데이터를 저장하지는 않는다. 1차원 배열이 다시 1차원 배열을 참조하는 방식으로 2차배열을 만든다. scores.length //2(배열 A의 길이) scores[0].length //3(배열 B의 길이) scores[1].length //3(배열 C의 길이) scores의 length값을 구하면 처음 행의 길이(2)를 구하게 되지만 scores[0], scores[1]의 길이는 그 행이 참조하고 있는 열의 길이(3)를 구하게 된다. 자바는 1차원 배열을 연결하여 다차원 ..
[JAVA 기초] 자바 배열 2 (명령라인에서의 실행) 명령 라인 입력 public static void main(String[] args) {...}에 String[]args가 붙어있는 이유는 자바의 args는 "명령 라인"에서 자바를 실행시킬 때 매개변수를 전달할 수 있게 하는 기능이다. main() 메소드는 String[] args 매개 변수를 통해서 명령 라인에서 입력된 데이터의 수와 입력된 데이터를 알 수 있게 된다. 이때, 데이터의 수는 args배열의 length, 입력된 데이터는 args배열의 항목 값을 말한다 소스파일 실행 시 명령 라인 매개값을 주지 않았을 경우 길이 0인 String 배열 생성 후 main() 메서드 호출한다 실행할 때 명령라인 매개 값을 주었을 경우 JDK11 이후 버전에서는 명령 라인에서 위와 같은 명령어로 확인할 수 있..