Language/Java

    [Java] 정적(static) 변수와 메소드

    static 변수 예를 들어 다음과 같은 HouseLee 클래스가 있다고 한다. // Sample.java class HouseLee { String lastname = "이"; } public class Sample { public static void main(String[] args) { HouseLee lee1 = new HouseLee(); HouseLee lee2 = new HouseLee(); } } 이씨 집안을 나타내는 HouseLee 클래스이다. 위와 같은 클래스를 만들고 객체를 생성하면 객체마다 객체변수 lastname을 저장하기 위한 메모리가 별도로 할당된다. 하지만 가만히 생각해 보면 HouseLee 클래스의 lastname은 어떤 객체이던지 동일한 값인 "이" 이어야 할 것 같다...

    [Java] 접근제어자 (Access Modifier)

    접근제어자 (Access Modifier) 자바는 접근제어자를 사용하여 변수나 메소드의 사용 권한을 설정할 수 있다. 변수나 메소드의 사용 권한은 다음과 같은 접근 제어자를 사용하여 설정할 수 있다. private default protected public private → default → protected → public 순으로 보다 많은 접근을 허용한다. private 접근제어자가 private으로 설정되었다면 private 이 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능하다. public class Sample { private String secret; private String getSecret() { return this.secret; } } 위 예제의 secret 변수와 getSe..

    [Java] 패키지 (Package)

    파일 여러개가 한 폴더에 뒤죽박죽 섞여 있을 때 파일들을 성격에 맞게 분류한 다음 새 폴더에 저장시키는 식으로 자바의 패키지도 이것과 완전히 동일한 개념이다. 패키지는 비슷한 성격의 자바 클래스들을 모아 놓은 자바의 디렉토리이다. 패키지 (Package) 예를 들어 HousePark, HouseKim 등의 클래스들은 house라는 패키지로 분류하면 편리할 것이다. 패키지를 생성하려면 src 디렉터리에서 우측마우스를 누르고 New -> Package 순으로 선택하면 된다. 그리고 패키지명에는 "house" 를 입력한다. 그리고 house 패키지로 이동하여 HouseKim, HousePark 클래스를 생성한다. // house/HouseKim.java package house; public class Hou..

    [Java] 파일 입출력

    파일 쓰기 import java.io.FileOutputStream; import java.io.IOException; public class Sample { public static void main(String[] args) throws IOException { FileOutputStream output = new FileOutputStream("c:/out.txt"); output.close(); } } 위 예제를 실행해 보면 c:/ 디렉토리 바로 밑에 새로운 파일(out.txt)이 하나 생성되는 것을 확인할 수 있을 것이다. ※ 맥(Mac)이나 유닉스에서 실행할 경우 c:/ 디렉터리가 없으므로 디렉터리명을 적절하게 변경하여 실행하도록 한다. 파일을 생성하기 위해 FileOutputStream 클래..

    [Java] 콘솔 입출력

    프로그램을 실행했더니 다음과 같은 문자열이 출력되었다고 가정해 본다. 생년월일(YYYY/MM/DD)을 입력해 주세요: 이렇게 사용자에게 위와 같은 문자열을 보여주는 것이 바로 콘솔 출력이고 위 질문에 사용자가 답변을 입력하는 것을 콘솔 입력이라 한다. ※ 콘솔이란? 콘솔은 환경에 따라 변경될 수 있다. 만약 이 프로그램을 IDE에서 실행했다면 IDE콘솔탕이 콘솔이 될 것이고 윈도우 명령창에서 이프로그램을 실행했다면 명령창이 콘솔이 된다. 즉, 콘솔은 사용자의 입력을 받거나 사용자에게 문자열을 출력해 주는 역할을 하는 것을 통칭하는 말이다. 콘솔 입력 위와 같은 콘솔 출력 질문에 1999/09/09 같은 답변을 키보드로 입력할 것이다. 이렇게 입력한 문자열이 바로 콘솔 입력에 해당한다. 자바 코드에서 위와..

    [Java] 추상클래스

    추상클래스(Abstract Class)는 인터페이스의 역할도 하면서 클래스의 기능도 가지고 있는 자바의 돌연변이 같은 클래스이다. (추상클래스는 인터페이스로 대체하는것이 좋다고도 한다..) abstract class Predator extends Animal { abstract String getFood(); default void printFood() { // default 를 제거한다. System.out.printf("my food is %s\n", getFood()); } static int LEG_COUNT = 4; // 추상 클래스의 상수는 static 선언이 필요하다. static int speed() { return LEG_COUNT * 30; } } (... 생략 ...) 추상클래스를 만..