목록Programing/Java (23)
월루를 꿈꾸는 대학생
소비자의 요구사항은 항상 바뀐다 ➡️ 기능 추가는 쉽고 유지보수가 간편한 코드가 필요 동작 파라미터화 어떻게 실행할 것인지 결정하지 않은 코드 블록 나중에 프로그램에서 호출 즉 실행이 뒤로 미뤄짐 2.1 변화하는 요구사항에 대응하기 예제 : ==기존의 농장 재고목록에서 녹색 사과만 필터링 하는 기능 추가== 2.1.1 첫번째 시도 : 녹색 사과 필터링 public static List filterGreenApples(List inventory) { List result = new ArrayList(); for (Apple apple : inventory) { if (apple.getColor() == Color.GREEN) { // 녹색 사과만 선택 result.add(apple); } } return ..
1.1 역사의 흐름은 무엇인가? 멀티코어 CPU 대중화에 의한 하드웨어적 변화가 소프트웨어에도 영향을 미침 자바의 경우 코어 하나만 사용을 했었는데 이젠 하나로는 하드웨어를 온전히 다 활용하지 못하는 경우가 발생하게 되었고 자바 8에서도 쓰레드가 아닌 병렬 실행을 통해서 보다 나은 성능을 제공 ==스트림 api== ==메서드에 코드 자체를 전달 ==인터페이스의 디폴트 메서드 스트림 api로 인해서 코드를 전달하는 간결 기법(메서드 참조 & 람다) 와 인터페이스의 디폴트 메서드를 사용할 수 있다. 메서드 코드 전달 기법 파라미터화 구현 조금 다른 기능을 하는 비슷한 메서드 두개를 하나로 통합한 후 인수를 통해서 다른 동작을 하도록 하는 것 1.2 왜 아직도 자바는 변화하는가? 자바는 처음부터 잘 설계된 객..
JVM이란 무엇인가 - Java Virtual Machine : 자바 실행을 위한 가상 컴퓨터 - 자바의 특징 중 하나 os 에 종속적이지 않다 -> os에 종속적이지 않기 위해서는 os말고 java를 실행시킬 다른 무언가가 필요 = JVM - 컨테이너 비슷하게 쓰는 듯 - 코드가 jvm 한 번 거친 후에 os 전달 되기에 조금 느림 다만 os에 직접 전달이 아니기에 종속적이지가 않음 -> write once , run anywhere 컴파일 하는 방법 - .java 파일을 컴파일러가 .class 파일로 변경 - .class 파일은 컴퓨터가 읽는 파일이 아니라 JVM이 읽을 수 있는 파일의 형태 - javac test.java 이런 식으로 컴파일 하면 class 파일이 나옴 실행하는 방법 - javac ..
1. 날짜와 시간 1.1 Calendar 와 Date Date - 날짜와 시간을 다룰 목적으로 제공 Calendar - 추상 클래스이기 때문에 직접 객체할 수 없고 메서드를 통해서 구현가능 Date와 Calnedar 간의 변화 1, Calendar를 Date로 변환 Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTimeInMillis()); 2. Date 를 Calendar 로 변환 Date d = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(d); 주의점 : get(Calendar.MONTH) 얻어올 때 0 ~ 11 범위로 지정해야함 0이면 1월 11이면 12월 add..
java.lang 패키지 - 기본이 되는 클래스들을 포함 - import가 없어도 사용가능 1.1 object 클래스 - 모든 클래스들 중 최고 조상! 메소드설명 protected Object clone() 해당 객체의 복제본을 생성하여 반환함. boolean equals(Object obj) 해당 객체와 전달받은 객체가 같은지 여부를 반환함. protected void finalize() 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출함. Class getClass() 해당 객체의 클래스 타입을 반환함. int hashCode() 해당 객체의 해시 코드값을 반환함. void notify() 해당 객체의 대기(wait)하고 있는 하나의 스레드를 다시 실행할 때 ..
1712 www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 2292 www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 1193 www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ ..
1. 예외처리 1.1 프로그램 오류 - 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료 --> 프로그램 에러 혹은 오류 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만 의도와 다르게 동작하는 것 런타입 발생 시 에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외 : 프고르ㅐㅁ 코드에 의해서 수습될 수 있는 다소 마약한 오류 1.2 예외 클래스의 계층구조 Exception 클래스들 : 사용자의 실수와 같은 외적 요인으로 인해 발생 예외 -> checked RuntimeException 클래스들 : 프로그램의 실수로 벌생하는 예외 - unchecked 1.3 예외처리하기 try-catch 문 예외처리란 ? - 프로..
5. 다형성 5.1 다형성이란 - 여러가지 형태를 가질 수 있는 능력 - 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하는 것 - 참조변수가 사용할 수 있는 멤버의 갯수는 인스턴스 멤버 갯수보다 같가너 적어야한다 조상 클래스 타입 참조변수로 자손 클래스의 인스턴스 참조하는 것 둘 다 같은 타입의 인스턴스지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 갯수가 달라짐 tv 클래스는 부모 클래스로 caption tv의 인스턴스 접근은 가능하지만 captiontv에만 있는 멤버에는 접근이 불가 즉, tv는 옛날 리모컨 , caption tv는 기존의 tv리모컨 + 신기능 들어있는 리모컨 5.2 참조변수의 형변환 - 참조변수도 형변환이 가능 단!! 서로 상속관계에 있는 클래스 사이에서만 가능하다..
www.acmicpc.net/step/5 함수 단계 함수를 구현해 봅시다. (이 문제는 C, C++, Python, Java, Go만 지원합니다. 그 외의 언어를 사용하신다면 이 문제를 무시해 주세요.) www.acmicpc.net 15596 www.acmicpc.net/problem/15596 15596번: 정수 N개의 합 C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Python 2, PyPy2, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 4673 www.acmicpc.net/problem/4..
1. 상속 1.1 상속의 정의 장점 - 기존의 클래스를 재사용하여 새로운 클래스 작성하는 것 - 재사용성 up .. 생산성 up - extends 키워드 사용 class Child extends Parent { // } 자식 클래스에서는 따로 선언하지 않아도 부모 클래스 멤버 사용가능 자손 클래스는 부모 클래스의 모든 멤버를 상속 받기에 항상 부모 클래스보다 같거나 많은 멤버를 가짐 생성자와 초기화 블럭은 상속되지 않는다 ! 다만 멤버만 상속 자손 클래스의 멤버 개수는 조상클래스보다 항상 같거나 많다 자손 클래스의 인스턴스를 생성하면 부모 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성 즉 자손 클래스 인스턴스화시 부모 클래스도 포함된 것으로 만들어짐 1.2 클래스 간의 관계 - 포함..