목록분류 전체보기 (26)
인사이트
ArrayIndexOutOfBoundsException : 지금 당신이 찾으려고 하는 값은 제가 가지고 있는 배열의 범위를 벗어났습니다. 저는 찾아드릴 수 없어요. 오류메시지 : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at com.exception.ArrayIndexOutOfBoundsExceptinoExample.main(ArrayIndexOutOfBoundsExceptinoExample.java:10) - "main스레드 실행 중에 ArrayIndexOutOfBounds예외가 발생했네요. index에는 값이 5개 밖에 없는데 그 범위를 넘겨셨네요. 오류가 ..
NullPointerException : 주소값을 몰라서 당신이 찾으려고 하는 게 어디있는지 모르겠습니다. 오류메시지 : Exception in thread "main" java.lang.NullPointerException at com.exception.NullPointerException.main(NullPointerException.java:9) - "main스레드실행중에 nullpoiner예외가 발생했네요. 그 위치는 9번째 라인이예요 가서 확인해보세요"라는 의미 뭐가 오류가 났나 확인해보자 public class NullPointerException { public static void main(String[] args) { String str = null; System.out.println(s..
아래처럼 menuFragment를 생성해서 사용할 때 내가 따로 onCreateView를 호출하지 않아도 알아서 실행이 된다 menuFragment = new MenuFragment(); 왜그럴까? Fragment클래스에 이런 내용이 있는 걸 확인할 수 있다. public Fragment() { initLifecycle(); } 생성자에 initLifecycle()이라는 메소드가 호출되어지고있다. 일반 activity의 생명주기처럼 fragment도 생명주기가 있는데 onCreateView가 해당 fragment가 화면에 보여지는 즉시 실행되는 부분이기 때문에 굳이 menuFragment.onCreateView()를 해주지 않아도 onCreateView이하 내용이 실행되는 것이다.
인터페이스에 메소드를 하나 선언해줬다 * 인터페이스의 메소드는 모두 추상메소드이다 public interface I { public void print(); } 인터페이스를 구현하는 클래스를 따로 만들지 않고, 익명구현객체를 통해서 인터페이스를 객체로 만들었다. 그러면서 int num이라는 변수도 넣고, 메소드도 재정의해서 넣었다. public class C { public static void main(String[] args) { I i = new I() { int num = 1; @Override public void print() { System.out.println("출력메소드"); } }; i.print(); i.num = 10;// 불가함 } } Q1. 근데 I는 인터페이스가 아닌가? 어떻게..
1. 서로 다른 패키지에 있는 같은 이름의 클래스를 import하는 방법 여기 아래 패키지는 다르지만 클래스의 이름은 같은 두 클래스가 있습니다 두 클래스를 객체로 만들어보려고 하는데 어?! 잠시만요 지금 두 class의 이름이 모두 Tire네요. 그럼 저건 누구 타이어일까요..? 한국패키지의 타이어? 금호패키지의 타이어? 프로그램은 누구로 인식할까요? 그래서 일단 import를 해보려고 보니 둘 중에 하나를 선택하라고 하는군요! (아쉽게도 두 개 모두 선택은 불가능합니다. 실제로 그렇게 해 보면 둘 중 하나는 지우라는 이클립스의 조언을 듣게 될 겁니다) 그래서 일단은 위에 있는 걸 import했습니다 그러면 한국타이어는 어떻게 해야할까요? import를 어떻게 하죠? 방법이 전혀 없는걸까요? 그렇지 않..
미션을 받았다. 1. int형 타입으로 전달인자 3개 받게 메소드 구성해주세요 - 매개변수 자리에 int a, int b, int c 써주면 된다 근데 또 이런 미션을 준다. 2. 아까 거기서 2개 더 받고 싶어졌어요. 전달인자 5개 받게 해주세요. - int a, int b, int c, int d, int e 오케이 여기까진 해줄 수 있다. 그런데 갑자기 또 이런 미션을 받는다. 3. 아 전달인자 1개면 충분할 것 같아요. - int a만 남기고 다 지운다 한 번만 더 요청한다면 화가 날 것 같다 이렇게 힘들게 해야할까..? 그럴 때 int ... values를 사용하면 쉽다! 전달인자로 몇 개가 들어오든 상관이 없어지기 때문이다 // 가변 매개변수 public int sum(int ... value..
클래스 구성 시 아래 내용들이 반드시 모두 필요한 것은 아니다. 1. 변수 1) 인스턴스 변수 가. 생성방법 : int iv 나. 생성자에 의한 초기화 가능 다. 해당하는 클래스를 생성(인스턴스화)할 때마다 메모리가 할당 되어짐 2) 클래스(static) 변수 가. 생성 방법 : static int cv 나. 생성자에 의한 초기화 불가능 다. 해당하는 클래스를 몇 번 만들어도 딱 한 번만 할당 되어짐 라. 객체의 생성 없이 사용 가능 마. 사용 방법 : 클래스이름.변수명 2. 상수 - 변경이 불가한 변수 - 선언 방법 : final double Pi (상수명의 첫 글자는 대문자로 시작한다) - 반드시 초기화해서 선언한다 - 생성자를 통해서 초기화 가능 3. 생성자 - 자동으로 디폴트 생성자가 생성됨(눈에..
* 향상된 for문(1차원 배열) /* 형태 for (변수타입 변수명 : 배열의 이름) { } */ // 사용예제 int[] score = {1, 2, 3, 4, 5}; for (int num : score) { System.out.print(num + " "); } * 향상된 for문(2차원 배열) - \t는 숫자 사이 간격이 tab만큼 벌어진거라고 이해하면 된다. /* 형태 for (1차원배열타입 변수선언 : 배열의 이름) { for (배열값의타입 변수명 : 배열의 이름) { } } */ int[][] setScore = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15 } }; // 사용 예제 for (int[] row : ..