JAVA 14 상속
·
Programming/Java
상속의 치명적 오해 코드의 재활용을 위한 문법이다 (X) 중요! 연관된 일련의 클래스들(다른 클래스들)에 대해 상속을 적용하면, 공통적인 규약/규칙을 정의/적용 할 수 있다. (O) 상속의 멤버 접근 class Man{ private String name; void setName(String name){ this.name=name; } String getName(){ return this.name; } public void tellMyName(){ System.out.println("my name is "+ name); } } 멤버를 초기화할 때, 이상적인 원칙은 그 클래스의 멤버는 해당 클래스의 생성자에서 초기화시켜주는 것이다(생성자를 통한 초기화 원칙). 하지만 아래의 예제에서는 상위 클래스 Man의..
JAVA 13 1차원 배열의 이해와 활용
·
Programming/Java
1차원 배열이란? 타입이 같은 둘 이상의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간 1차원 배열 선언 int[] ref=new int[5] //ref는 int형 배열을 참조할 수 있는 참조변수다 new로 짐작할 수 있는 것! int[] ref=new int[5] //ref는 int형 배열을 참조할 수 있는 참조변수다 배열의 요소는 반복문을 통해 순차적 접근이 가능하며, 이것은 배열이 가진 큰 장점 중 하나이다. 배열의 초기화 메소드 기본자료형 배열은 모든 요소가 0으로 초기화되고, 인스턴스 배열(참조변수 배열)은 모든 요소가 null로 초기화된다. 그럼 초기화 설정을 하려면 어떻게 해야할까? 배열의 초기화 메소드를 알아보자! 배열 복사 메소드 enhanced for문(for-each 문) 2차원..
JAVA 12 toString 메소드
·
Programming/Java
모든 클래스는 toString 메소드를 가지고 있다. println 또는 print에 인스턴스 참조 값이 전달되면 해당 참조 값이 참조하는 인스턴스의 toString 메소드가 반환하는 문자열을 출력한다. Scanner 클래스 콘솔 입력 받은 데이터를 다양한 타입으로 변환하여 리턴하는 클래스이다. 스캔할 대상이 파일뿐만 아니라 키보드, 스트링 인스턴스가 될 수 있다. Scanner의 장점 중 하나는 Scanner 인스턴스 생성 이후에 데이터를 스캔하는 방법에 있어서는 차이가 없다는 것이다. next() 메소드는 스페이스 즉 공백 전까지 입력받은 문자열을 리턴한다. Scanner 인스턴스 생성 이후, 데이터를 스캔하는 방법에 있어서는 차이가 없다. 즉, 연결 대상에 의존적이지 않은 코드 작성이 가능하다. i..
JAVA 11 오버로딩
·
Programming/Java
호출된 메소드를 참조할 때 참조하게 되는 두가지 정보 - 메소드의 이름 - 메소드의 매개변수 정보 따라서, 이 둘 중 하나의 형태가 다른 메소드를 정의하는 것이 가능하다. class MyHome{ void mySimpleHome(int n){...} void mySimpleHome(int n1, int n2){...} void mySimpleHome(int n1, int n2, int n3){...} //메소드 오버로딩 } String 클래스 String 인스턴스는 Immutable(불변) 인스턴스이다. Immutable는 생성 이후 값의 변경을 허용하지 않음을 의미한다. JVM은 새 인스턴스의 문자열(str2)을 확인하고 이미 같은 문자열 인스턴스(str1)가 있으면 기존 인스턴스의 참조값을 리턴한다...
JAVA 10 static이란?
·
Programming/Java
static 변수= 클래스 변수 클래스 변수는 클래스의 인스턴스가 얼마나 존재하는지 관계 없이, 하나의 사본이 존재하는 클래스에 정의된 변수이다. 클래스 변수는 인스턴스 변수가 아님을 주의하자. 선언된 모든 인스턴스 변수가 클래스 변수를 공유한다. JVM이 해당 클래스를 읽는 순간 클래스 변수(static 변수)는 초기화 된다. static 메소드= 클래스 메소드 클래스 안에 선언되어 있지만 다른 메모리 공간에 존재한다. 클래스는 클래스 메소드에 자리를 빌려줬다 생각하자. 또는 클래스는 메소드를 사용할 권한이 있을 뿐이다. 클래스 메소드도 마찬가지로 인스턴스 메소드가 아니다. 단순 기능 제공이 목적인 메소드들이나 인스턴스 변수와 관련 없는 메소드들은 staic으로 선언하는게 좋다. static 이기 때문..
JAVA 09 정보은닉과 캡슐화
·
Programming/Java
정보은닉 데이터나 기능을 포함한 클래스 내에서만 접근을 허용하겠다. 문법적 오류는 컴파일 오류가 발생해 문제를 파악할 수 있지만, 논리적 오류는 컴파일 오류가 발생하지 않아 문제 파악이 힘들 수 있다. 논리적 오류가 발생했을 때, 논리적 오류를 문법적 오류로 되게 해주는게 정보 은닉의 장점 중 하나다. 직접 접근했을 때 컴파일 에러가 발생하도록 강제한다. 멤버를 선언할 때, private을 붙여주면 같은 멤버 끼리는 공유할 수 있지만 클래스 외부에서 접근할 때는 컴파일 오류가 발생한다. 접근 수준 지시자 public: 어디서든 인스턴스 생성이 가능하다. protected default private
JAVA 08 패키지의 이해
·
Programming/Java
패키지 선언이 필요한 상황 1. 공간에서의 충돌 - 동일 이름의 클래스 파일을 같은 위치에 둘 수 없다. - 한 디렉토리 안에 이름이 같은 파일을 둘 수 없다. 2. 접근 방법에서의 충돌 클래스 생성을 생각해보자. new 클래스 이름을 생성할 때, 이름이 같으면 어떤 클래스인지 구분이 어렵다. 해결방법 1. 공간 충돌 - 경로를 달리한다. 2. 접근 충돌 - 경로를 이름에 명시한다. 패키지를 선언 1. 클래스 접근 방법 구분 2. 클래스의 공간 구분 패키지 선언 규칙 - 패키지 이름은 모두 소문자로 구성 - 인터넷 도메인 이름의 역순으로 이름을 구성 - 이름 끝에 클래스를 정의한 주체 또는 팀의 이름을 추가
JAVA 07(2) 생성자와 String 클래스
·
Programming/Java
컴파일러는 문자열("Happy")이 보이면 String 인스턴스를 생성해서 해당 문자열을 메소드의 인자에 전달한다. 해당 메소드는 인스턴스의 주소를 반환한다. 좋은 클래스 정의란? 인스턴스 구분을 위해 필요한 정보를 갖는 것이다. 생성자는 초기화를 위한 메소드를 대체한다. 생성자의 이름은 클래스의 이름과 동일하다. 생성자는 값을 반환하지 않고 반환형도 표시하지 않는다. 좋은 클래스는 생성자를 직접 정의한다.
JAVA 07(1) 클래스와 인스턴스
·
Programming/Java
프로그램은 데이터와 기능으로 구성되어 있다. 자바에서 데이터와 기능을 묶을 수 있는 도구를 클래스라고 한다. 클래스(class)는 객체를 만드는 설계도이다. 어느 무리의 객체를 특징 짓는 데에 공통적으로 갖춘 모양을 뽑아서 하나의 틀을 만든 것이다. 이런 과정을 '추상화'라고 한다. 인스턴스(instance)는 클래스를 new 명령문으로 메모리에 생성한 객체이다. 설계도를 통해 독립적인 객체를 만든 것이다. 인스턴스는 모두 메모리 공간을 차지한다.
JAVA 01 자바의 원리
·
Programming/Java
JDK 자바로 개발할 수 있도록 여러 기능들을 제공하는 패키지(키트) 환경변수 설정 환경변수 PATH란? 환경변수는 운영체제가 참조하는 변수이다. PATH는 실행파일을 찾기 위한 폴더들의 모음이다. 자바의 기본도구 javac.exe: 자바 컴파일러(Java Compiler) java.exe: 자바 런처(Java Launcher) - 명령 프롬프트는 path에 등록된 경로를 통해 찾는다. - path에 javac.exe와 java.exe 위치를 등록시킨다. - 환경 변수에 path를 등록한다. - 변수이름 : Path - 변수 값: bin 의 위치 자바의 실행 원리 - 운영체제는 자바 가상 머신(JVM)을 우선 실행한다. 자바 프로그램은 JVM 위에서 실행된다. 따라서, 운영체제는 JVM은 인식하지만 자바..