목록Java (31)
forDevLife
1) 다시 한번, 오버로딩 - 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩'이라 함. - 조건 : -. 메서드 이름이 같아야 함. -. 매개변수 개수 또는 타입이 달라야 한다. -. 반환 타입은 오버로딩에 영향을 주지 않는다! -. 예시 : println - 매개변수가 여러 개일 때, 자료형의 순서가 서로 다른 경우도 오버로딩으로 간주 (long add(int a, long b) / long add(long a, int b) 2) 오버라이딩의 조건 - 조건 : -. 메서드 이름이 같아야 함. -. 매개변수가 같아야 한다. -. 반환타입이 같아야 한다. -. 요약하면, 선언부가 서로 일치해야 한다. -. 다만 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있..
1) 인스턴스의 생성과 사용 - new( )에 의해 클래스의 인스턴스가 메모리의 빈 공간에 생성. 3.7) JVM 메모리 구조 - App이 실행되면, JVM은 시스템으로보터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 1>메서드 영역 : 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래스변수도(static variable) 해당 영역에 생성된다. 2> 힙 영역 : 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다.(instance variable) 3> 호출 스..
https://galid1.tistory.com/534
생활코딩 44. 컬렉션 프레임워크 1) Map의 사용법 앞의 프레임워크 내용을 간단히 정리하자면, - 아래 그림에서 Collection, Map 및 set, list, queue는 인터페이스며, 그 하위는 클래스이다. - collection을 set, list가 상속하며, 이를 AbstractSet / AbstractList 클래스가 구현한다. - collection 인터페이스의 특징은, iterator를 사용할 수 있다는 점이다. - Iterator hi = A.iterator(); 식으로, hi에 iterator를 저장한다. iterator는 인터페이스인데, new가 아닌 이런식으로 할당 가능하다. - set과 list의 차이점은, 중복의 허용 여부이다. - set은 순서가 없기 때문에 index가 ..
생활코딩 42. 참조, 43. 제네릭 1) 복제란? 데이터 타입을 생성할 때, new를 통해 생성하는 것들은 기본 데이터 타입이 아니고 참조형 또는 참조 데이터 타입이라 한다. 참조에 앞서, 복제라는 개념에 대해서 먼저 보자. 아래에서, 클래스 A를 만들었다. runValue 메소드 내에서는 데이터 타입을 int로 하였으며, runReference 메소드 내에서는 데이터 타입을 new를 통한 인스턴스로 생성하였다. class A { public int id; A(int id) { this.id = id; } } public class ConstantDemo { public static void runValue() { int a = 1; int b = a; b = 2; System.out.println("..
생활코딩 41. 상수와 enum 1) 상수에 대한 복습 서로 다른 데이터 타입을 가지고 비교가 필요하다. 각 데이터를 숫자인 int로 정의하게 되면, 결국 비교 시 int의 특성을 가지는 숫자로 비교가 되기 때문에 여러 부분에서 문제가 생긴다. 뭐 여러 가지 시행착오 이후에, 아래와 같이 Fruit와 Company를 class로 구분하여 정의해 두면, 과일에서의 APPLE과 회사 이름으로의 APPLE이 확실히 구분이 된다. 하지만 아래의 코드는 switch 내의 type에서 오류가 발생하는데, 이는 switch 내의 조건에는 제한된 데이터 타입만 사용이 가능하다. 따라서 enum이라는 type을 이용하여 이 문제를 개선한다. class Fruit { public final static Fruit APPL..
생활코딩 40. Object 클래스 1) 소개 Object 클래스는 자바 모든 클래스의 어머니라고 보면된다. 모든 클래스가 object를 상속한다. 2) toString toString class는 object의 대표적인 메소드이다. 이는 객체의 내용을 문자화한다고 이해하면 된다. println(c1)에서, c1은 인스턴스이다. 이런식으로 전달하면 자바는 자동으로 객체를 c1.toString으로 이해하여 출력한다. 따라서 c1이나, c1.toString이나 동일한 의미이다. class Calculator { int left, right; public void SetOperands(int left, int right) { this.left = left; this.right = right; } public ..
생활코딩 38. 예외 던지기 1) 예외의 강제 좀 헷갈리지만, 예외처리 방식에 대해서 알아보자. 아래는 java에서 추천해주는 try - catch 방식으로 예외처리를 진행하기 위한 방식이다. bReader 부분에서는 FileNotFoundException 에러가 발생, input 부분에서는 IOException 에러가 발생했고, 이 부분을 앞에서 배운 try-catch로 처리할 것이다. 에러 발생 시, 해당 class를 더블클릭 > f2를 누르면 예외처리 방법이 나오고, 방식을 누른 후에 다시 f2를 누르면 예외에 대한 설명 나온다. 아래코드를 실행하면 예외 처리로 인하여 e.printStackTrace 부분이 출력된다. import java.io.*; public class CheckException..
생활코딩 37. 예외 1) 예외란 무엇인가? - 참고로, println : 줄바꿔서 출력 / print : 서식없을 때 string만 출력 / printf : c, c++과 동일하게 서식 있을 때 출력(서식 : %d 이런거) - 아래 코드에서, try 부분에 예외가 발생할지도 모르는 부분을 작성한다. 예외(에러)가 발생되면, catch 블록에 들어있는 구문이 실행. - catch 부분의 catch (Exception e)는 마치 메소드 처럼 생겼다. 일종의 메소드라고 생각해도 괜찮을 듯? 자바 가상머신이 프로그램을 실행하는 과정에서, try 블록에서 에러가 발생하면 catch 구문을 찾는다. 이 구문의 매개변수로 에러 정보가 담긴 객체를 매개변수로 전달한다. 그 객체의 데이터 타입은 Exception 클..
생활코딩 27~29. 오버라이딩 / 오버로딩 / 클래스패스 1) 창의적인 상속 오버라이딩은 '재정의', '새롭게 정의한다'라는 의미이다. 복습하자면 오버라이딩은 부모의 메소드를 자식이 덮어 씌워 자신의 메소드로 변경한다는 것을 의미한다. 즉 재정의한다. 2) 오버라이딩 제약 사항 부모 클래스의 메소드와 자식 클래스의 메소드 반환타입은 꼭 일치해야 한다. 또한 메소드의 이름도 같아야 하며, 매겨변수가 있을 때 그것 역시 같아야 한다. 이 같은 형식을 메소드의 서명(signature)이라고 한다. 메소드의 이름 메소드 매개변수의 개수와 데이터 타입, 순서 메소드의 반환 타입 만약, 부모와 자식이 똑같은 로직(메소드 내용)을 가질 때, 이는 중복이며 제거해야 한다. 다시 말해 부모 클래스의 메소드가 이미 가진..