Java 23

[Java] 기본 API 클래스③ Random

what? java.util 안의 클래스 무작위값을 얻을 때 사용 how? 시드값에 따라 값 반환. 시드값이 같으면 같은 값 추출 시드값은 Random 클래스의 인스턴스를 생성할 때 생성자 파라미터로 설정 시드값 미지정시 currentTimeMilis()를 시드값으로 해서 값 추출 int nextInt() 무작위 int값 반환 int nextInt(int n) 0보다 크고 n보다 작은 int값 반환 boolean nextBoolean 무작위 boolean값 반환 long nextLong() 무작위 long값 반환 double nextDouble() 무작위 double값 반환 float nextFloat() 무작위 float값 반환 Random random = new Random(); Random seed..

Java 2024.04.03

[Java] 기본 API 클래스② currentTimeMilis, Calendar, Date

1. System.currentTimeMilis() what? System 클래스의 currentTimeMilis() 메서드 현재 운영체제의 시간을 long 타입으로 반환 1970년 1월 1일을 기준으로 현재까지의 시간. 밀리초(1/1000) 단위로 환산해서 보여줌 how? //시작 시각 측정 long start System.currentTimeMilis(); System.out.println("시작 시각: " + start); //실행부 int a = 0; for(int i = 0; i Date //Date 타입 변수에 Calendar 클래스의 Time 대입 Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); Syste..

Java 2024.04.03

[Java] 기본 API 클래스① 문자열 클래스

what? String 클래스에 정의되어있는 문자열을 다루는 메서드 why? 프로그래밍 중 문자열을 나누고 자르거나 이어붙이는 등 편집해야 할 때 사용한다. how? 1)concat() 문자열 결합. +로도 가능하며, +는 문자열 외에 다른 자료형도 결합할 수 있다. 2)charAt(), length() charAt(index): 인덱스의 위치에 있는 문자를 반환 length(문자열): 문자열의 길이 반환 3)indexOf(문자/문자열) 문자나 문자열이 어디에 위치하는지 알려줌 4)substring(인덱스, 인덱스) 문자열을 잘라낸다.(인덱스: 잘라낼 위치) 인덱스를 두 개 사용하면 첫 번째 인덱스부터 두 번째 인덱스 전까지 잘라낸다. 5)equals(문자열), contentEquals(문자열) 문자열의..

Java 2024.04.02

[Java] 익명 클래스

what? 이름 없는 클래스 why? 코드의 간결성을 높이기 위함 한 번만 사용할 클래스를 익명 클래스로 작성하면 작성과 인스턴스 생성이 동시에 되기 때문에, 불필요한 클래스 파일을 만들지 않아도 된다. how? 기존의 클래스를 이용하되 오버라이딩 class ClassA{ void methodA(){ System.out.println("methodA"); } void methodB(){ System.out.println("methodB"); } } class ClassB{ ClassA classA = new ClassA(){ //메서드 오버라이딩 void methodA(){ System.out.println("ClassB 안의 methodA"); } }; //익명 클래스는 끝에 세미콜론 필요 classA..

Java 2024.04.02

[Java] 내부 클래스

what? 클래스 안에 있는 클래스. 내부 클래스는 외부 클래스의 모든 멤버를 자신의 멤버처럼 사용 가능 why? 두 클래스 멤버들 사이에 서로 쉽게 접근→코드 간결 클래스 내부에 클래스를 감추어 캡슐화 how? class OuterClass{ class InnerClass{ } } 내부 클래스는 클래스의 멤버변수처럼 구별됨 class OuterClass{ //인스턴스 클래스 class InnerInstance{ } //스태틱 클래스 static class InnerStatic{ } //지역 클래스 void methodA(){ class InnerLocal(){ } } } 내부클래스에 제어자 사용 가능 abstract private, protected... 외부 클래스 생성 후 외부 클래스를 통해 내부 ..

Java 2024.03.31

[Java] 인터페이스

what? 객체간 상호작용을 위한 규약 why? 협업을 위한 틀 여러 명이 같이 작업할 때 구현해야 할 기능을 미리 협의한 뒤 반환타입을 정해두면 효율적으로 작업 진행 가능 how? interface Interface1{ //상수 public static final int exampleInt = 0; //메서드 public abstract void exampleMethod(); } 제어자를 생략해도 컴파일러가 자동으로 추가함 상속과 달리 extends 대신에 implements로 구현 오버라이딩으로 메서드 구현(인터페이스의 접근제어자보다 더 넓거나 같은 범위의 제어자를 사용해야 함) 인터페이스와 다형성 특정 인터페이스를 구현한 클래스는 인터페이스 타입의 참조변수로 참조 가능 interface Exampl..

Java 2024.03.31

[Java] 추상 메서드와 추상 클래스

1. 추상 메서드 what? 선언부만 정의되고 구체적인 내용은 비어있는 메서드 why? 상속한 클래스에서 사용할 메서드 양식을 정해두기 위함 how? 제어자 abstract 추가 abstract void abstractMethod(); 2. 추상 클래스 what? 추상 메서드를 멤버로 가지는 클래스. 추상 메서드가 하나라도 포함되면 추상 클래스임 why? 자손 클래스에 문법적인 제한을 주기 위한 틀 how? 추상 메서드가 하나라도 포함되면 클래스명 앞에 제어자 abstract를 붙여야 함 abstract class AbstractClass{ abstract void abstractMethod(); }

Java 2024.03.31

[Java] 상속과 다형성⑥ 다형성

what? 객체지향 개념에서 다형성은 한 가지 타입이 여러 형태의 인스턴스를 가질 수 있다는 뜻으로, 객체지향언어의 중요한 특징 중 하나 부모타입 변수에 모든 자식 인스턴스가 대입될 수 있음 why? 코드의 유연성과 확장성을 위해 사용 인터페이스에서 사용될 경우, 클라이언트가 객체의 구체적인 타입이 아니라 인터페이스에 의존하게 된다. 그 결과 구현 코드가 변경되어도 클라이언트 코드는 그에 영향받지 않고 객체와 상호 작용할 수 있다. 또한 새로운 클래스가 추가되었을 경우, 새 클래스가 상위 클래스의 인터페이스를 구현하거나 상속받는다면 코드 변경 없이 새 클래스를 사용할 수 있게 된다. how? Parents 클래스와 Parents 클래스를 상속하는 Child 클래스가 있을 때 Parents example ..

Java 2024.03.30

[Java] 상속과 다형성⑤ 제어자

what? 클래스 또는 멤버(변수와 함수)의 사용을 제어 why? 1. 접근 제어 2. 클래스 멤버로 설정 3. 내용 또는 값 변경 막음 how? 1)접근 제어자 public: 접근 제한 x protected: 같은 패키지 안의 클래스와 자손 클래스에서만 접근 가능 default: 같은 패키지 내에서만 접근 가능(따로 표기하지 않아도 설정되는 기본값) private: 같은 클래스 내에서만 접근 가능 2)static 변수나 함수를 클래스 멤버로 설정 →클래스가 처음 메모리에 로드될 때 생성 →인스턴스 생성 없이도 사용 가능 3)final 내용이나 값의 변경을 막음 (1)final 변수: 값 변경 x, 상수 (2)final 메서드: 내용 변경 x → 오버라이딩 불가 (3)final 클래스: 내용 변경 x →..

Java 2024.03.30

[Java] 상속과 다형성④ 패키지와 임포트

1. Package what? 클래스를 모아놓은 디렉터리 why? 프로젝트를 진행하다보면 클래스의 수가 많아진다. 이를 효율적으로 관리하기 위해 디렉터리별로 나눌 필요가 있다. how? 패키지를 만들 위치(src 폴더)에서 마우스 우클릭→[New]→[Package] 패키지명 입력 후 생성 이후 패키지 안에서 마우스 우클릭→[New]→[Class]로 패키지 안에 클래스 생성 2. import what? 다른 패키지의 클래스를 사용할 수 있게 함 why? 같은 패키지 내의 B 클래스는 인스턴스를 바로 생성할 수 있지만, 다른 패키지의 클래스는 어느 패키지 안에 있는 B 클래스를 가져오라고 지정해야 함. 이때 import를 사용하면 간단하게 지정할 수 있음 how? 예시: packageB의 ClassB 사용 ..

Java 2024.03.30