반응형 Java47 기본 API 클래스 (2) Preface 각 클래스에서 제공하는 메소드의 양이 정말 많지만, 대부분의 메소드는 지금까지 이런저런 코드를 작성하며 한 번 쯤 보고 사용해 봤던 것들이라 쉽게 이해할 수 있었다. 또, 메소드들의 이름이 직관적이라 어떤 동작을 하는 메소드인지 헷갈릴 걱정은 하지 않아도 될 것 같다. 다만 필요할 때 적절한 메소드를 사용하려면 적어도 자주 사용되는 것들의 이름은 확실히 암기해야 할 것 같다. 본문에 정규 표현식에 관한 내용도 있는데, 이 부분은 필요할 때 다시 찾아 공부할 생각이다. 아 그리고 박싱과 언박싱의 개념이 확 와닿지 않아 gpt에게 몇 가지 질문을 했다. Q1: boxing과 unboxing은 언제 왜 일어나는거야? A1: boxing과 unboxing은 기본 데이터 타입과 래퍼 클래스 객체 간.. 2023. 4. 14. 기본 API 클래스 (1) Preface 이번 장은 기본 API 클래스에 관련된 부분인데, 내용이 너무 방대해 2, 3번에 나누어 글을 업로드할 생각이다. 대부분 특정 클래스에 포함된 메소드의 사용 방법에 관한 내용이라 특별히 어려운 부분은 없었지만, Class 클래스에서 동적인 객체를 생성하는 부분의 개념이 조금 헷갈렸다. 아직 복잡한 프로그램을 다뤄본 경험이 없어서 그런지, 굳이 동적으로 객체를 생성해야 할 필요성을 잘 모르겠다. gpt에게 몇가지 예시를 물어봐야겠다. 1. 런타임에 클래스 정보를 동적으로 가져와야 하는 경우: 클래스 이름이 런타임에 동적으로 결정되는 경우 Class.forName() 메소드를 사용하여 클래스 정보를 가져와 newInstance() 메소드를 사용하여 객체를 생성할 수 있습니다. 2. 플러그인 시.. 2023. 4. 13. 예외 처리 Preface 이번 장에선 예외의 종류와 처리 방법에 대해 공부했다. 가끔 자바 문장을 볼 때마다 try, catch, finally, throws 등 익숙치 않은 키워드가 자주 보여서 코드를 완벽히 이해할 수 없었는데, 이제야 조금 알 것 같다. 예외 처리라고 해서 꽤나 복잡하고 어려울 것이라고 생각했는데, 걱정했던 것과 달리 처리 방법 자체는 단순한 것 같다. 다만, 발생할 수 있는 실행 예외를 예측하여 코드를 작성하는 것은 상당한 내공이 필요해 보인다. 1. 예외의 종류와 처리 방법 - 에러(error): 하드웨어의 오작동 또는 고장으로 인해 응용 프로그램 실행 오류가 발생하는 것 - 예외(exception): 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인한 프로그램 오류 - 예외의 종류 .. 2023. 3. 21. 이자바 9장(중첩 클래스와 중첩 인터페이스) 확인문제 Preface 확인문제를 풀기 전까진 별 생각이 없었는데, 6번 문제의 해답을 고민하던 도중 문득 로컬 클래스와 익명 객체에서 사용되는 변수의 final 특성에 관한 개념이 헷갈렸다. 이번 글을 업로드한 후 책을 다시 한 번 천천히 읽어보며 해당 개념을 확실히 이해하고 넘어가야 할 것 같다. - 4번 package ch9; class Car { class Tire {} static class Engine {} } public class Exercise4 { public static void main(String[] args) { Car myCar = new Car(); Car.Tire tire = myCar.new Tire(); Car.Engine engine = new Car.Engine(); } } .. 2023. 3. 17. 중첩 클래스와 중첩 인터페이스 Preface 이번 장에선 중첩 클래스와 중첩 인터페이스를 공부했다. 개념 자체는 어려운 부분이 없었지만, 클래스 안에 클래스를 구현하거나 클래스 안에 인터페이스를 구현하니 내부의 구성 멤버를 호출하는 방법이 조금 까다로웠다. 중첩 구문을 사용하면 불필요한 코드를 줄일 수 있어 기존의 코드보다 훨씬 가독성이 좋다고 하는데, 나는 이제 막 중첩 개념을 공부해서 그런지 오히려 클래스를 별도로 생성한 후 메인 클래스에서 객체를 생성하는 방법이 훨씬 익숙하고 코드 자체도 알아보기 쉽다고 느껴졌다. 공부를 하면 할 수록 주석의 중요성을 느끼게 되는 것 같다. 1. 중첩 클래스와 중첩 인터페이스 - 중첩 클래스(nested class): 클래스 내부에 선언한 클래스 1) 두 클래스의 멤버들을 서로 쉽게 접근할 수 .. 2023. 3. 15. 이자바 8장(인터페이스) 확인문제 - 3번 package ch8; interface Soundable { String sound(); } class Cat implements Soundable { @Override public String sound() { return "야옹"; } } class Dog implements Soundable { @Override public String sound() { return "멍멍"; } } public class Exercise3 { private static void printSound(Soundable soundable) { System.out.println(soundable.sound()); } public static void main(String[] args) { printSound(.. 2023. 3. 14. 인터페이스 Preface 이번 장에선 인터페이스의 정의와 사용 방법 등을 공부했다. 인터페이스는 상속 파트에서 클래스 타입을 매개 변수로 사용했던 것과 비슷한 방식으로 다형성 특성을 구현하는 것 같다는 생각이 들었다. 추상 메소드, instanceof 연산자, 매개 변수의 타입 등 지난 장에서 이미 공부했던 내용이 대부분이라 이해하기 어려운 부분은 없었던 것 같다. 다만 코드를 작성할 때 사용해야 할 키워드가 점점 다양해져서 헷갈릴 때가 종종 있다. 1. 인터페이스의 사용 - 인터페이스: 객체의 사용 방법을 정의한 타입 1) 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 2) 개발 코드를 수정하지 않고 사용 객체를 변경할 수 있다. → 객체 종류에 따라 실행 내용과 리턴값이 달라진다. - 인터페이스 선언 방.. 2023. 3. 14. 상속 Preface 11월 중순에 시작했던 상속 파트를 이제서야 마쳤다. 상속 자체는 어려운 부분이 없었지만, 다형성을 코드로 구현하는 것이 조금 복잡했다. 책의 초반부에서 다형성에 관한 내용을 글로만 읽었을 땐 해당 특성이 무엇을 의미하는 것인지 정확히 알 수 없었는데 직접 코드로 구현해보니 다형성이 어떤 특성이고 왜 객체지향 프로그래밍의 장점으로 소개되는지 조금은 이해할 수 있었다. 1. 상속의 개념 - 부모 클래스는 상위 클래스, 자식 클래스는 하위 클래스 또는 파생 클래스라고 부른다. - 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. - 부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다.. 2023. 3. 8. 이자바 6장(클래스) 확인문제 - 15번 package ch6; class MemberService { boolean login(String id, String password) { if ("hong".equals(id) && "12345".equals(password)) { return true; } else { return false; } } void logout(String id) { System.out.println("로그아웃 되었습니다."); } } public class Exercise15 { public static void main(String[] args) { MemberService memberService = new MemberService(); boolean result = memberService.login(".. 2022. 11. 24. 이자바 5장(참조 타입) 확인문제 - 7번: 주어진 배열의 항목에서 최대값을 구하시오. package ch5; public class exercise7 { public static void main(String[] args) { int max = 0; int[] array = { 1, 5, 3, 8, 2 }; for (int i = 0; i max) { max = array[i]; } } System.out.println(max); } } - 8번: 주어진 배열의 전체 항목의 합과 평균값을 구하시오. package ch5; public class exercise8 { public static void main(String[] args) { int[][] array = {.. 2022. 11. 23. 이전 1 2 3 4 5 다음