목록전체 글 (163)
Frog is cry
JAVA2 Casting - up casting 부모 타입에 자식 값을 넣는 작업. 모든 자식은 부모 타입이므로 여러 자식들을 하나의 타입으로 관리하고자 할 때에는 up casting을 통해 관리한다. 하지만 부모의 메모리 할당 크기가 자식 메모리 할당 크기보다 더 작기 때문에 자식에서 추가한 필드들은 모두 잘려서 들어간다. - down casting 자식 타입에 부모 값을 넣으면 오류이다. up casting된 객체를 다시 자식 타입으로 변경하는 작업이 바로 down casting이다. up casting된 객체는 타입은 부모이지만 값은 자식 값이기 때문에 오류없이 가능하다. 자식에서 새로 추가한 필드를 다시 사용하고 싶을 때 down casting을 한다. Casting을 사용하는 이유 여러 클래스들..
다형성(Polymorphism) 1. 오버로딩(Overloading) : 넘쳐서 불러오기 매개변수의 타입 혹은 개수가 다르면 같은 이름의 메소드로 선언할 수 있다. 2. 상속(inheritance) 1. 구현된 클래스에 있는 필드를 새로 만드는 클래스에서 그대로 사용하고 싶을 때 필드를 다시 선언하는 것이 아니라 기존 클래스에서 그대로 받아 와서 사용한다. 이 때 상속이 필요하다. 2. 여러 클래스를 만들 때 공통된 필드들이 반복해서 선언된다. 이 때 부모 클래스를 선언하고 그 안에 공통된 필드들을 구현한다. 자식 클래스들은 그대로 상속받아 사용한다. 상속 방법 class A{ A필드 } class B extends A{ A, B필드 } A : 부모 클래스, 상위 클래스, 슈퍼 클래스, 기반 클래스 B ..
클래스(반) 공통적인 요소들이 모여있는 곳. 1. 주어이다. Monkey.eat("바나나"); 원숭이가 먹는다 바나나를 주어 동사 목적어 영어는 항상 주어가 앞에 나오고, 맨 앞에는 대문자로 시작한다. 바로 클래스가 주어이다. 2. 타입이다. 선언이 반복되면 효율이 떨어지고 처리비용이 증가한다. 그래서 반복적인 선언을 묶고 이름을 붙여서 관리하고 이 것을 클래스라고 부른다. 클래스에는 한 번씩만 선언하고 선언된 요소들을 필드 또는 멤버라고 한다. 만약 클래스에 있는 필드를 사용하고 싶다면 그 클래스 타입의 변수를 선언해야 사용가능하다. 이 때 이 변수를 객체라고 한다. 클래스 선언 class 클래스명{ 필드(객체, 메소드) } 클래스 사용 객체화 클래스명 객체명 = new 생성자(); 클래스는 추상적이다..
메소드 : 이름 뒤에 소괄호. 단, 키워드()는 메소드가 아니다!! ★메소드는 저장공간이다. 선언시 작성했던 실행할 문장들은 Text영역에 할당되고 주소값이 생긴다. 이 주소값을 메소드가 가지고 있고 사용할 때마다 해당 주소로 가서 실행할 문장들을 읽고 해석한다. f(x)=2x+1 메소드이름매개변수리턴값 메소드 선언 (1)리턴타입 (2)메소드명(자료형 (3)매개변수명,.....){ (4)실행할 문장; (5)return 리턴값; } (1) 리턴 값의 타입을 작성한다. 만약 리턴값이 없다면 비워놓지 않고 void를 적는다. (2) 동사로 작성한다(연필(매개변수)을 쓴다(메소드)). (3) 생략 가능하다. 매개변수가 없으면 외부에서 값을 전달받을 수 없다. (4) 생략 가능하다. (5) 생략 가능하다. 메소드..
2차원 배열 배열 안에 배열 2차원 배열의 선언 자료형[][] 배열명 = { {값1, 값2, 값3}, {값4, 값5, 값6} }; 자료형[][] 배열명 = new 자료형[행][열]; 예)int[][] arrData = new int[2][3]; □: arrDataarrData.length ↓ □□: arrData[?]행의 길이arrData[?].length ↓ □□□ □□□: arrData[?][?] 열의 길이 2차원 배열은 행 배열의 시작 주소를 가지고 있고 행에는 각 행에 맞는 열의 주소가 들어있다. 따라서 한 번 접근하면 값이 아닌 열의 시작주소값이 있고 두 번 접근해야 값이 나온다. 따라서 2차원 배열은 대괄호가 2개이다. 첫번째 접근하는 곳은 행이고, 그 다음 접근하는 곳이 열이기 때문에 [행]..
배열(저장공간의 나열) 1. 변수를 여러 개 선언하면 이름도 여러 개 생긴다. 이름이 많아지면 관리하기 힘들고 매번 선언해야 한다. 이런 비효율적인 작업을 배열로 해결한다. 배열은 여러 칸을 딱 한 번만 선언하기 때문에 이름도 하나이기 때문이다. 2. 규칙성이 없는 값에 규칙성을 부여하기 위해서. 배열의 선언 자료형[] 배열명 = new 자료형[칸수]; 자료형[] 배열명 = {값1,....}; new 뒤에 있는 것을 Heap 메모리에 할당하는 명령어. 정적배열과 동적배열 - 정적배열 : 크기를 한 번 고정시켜 놓으면 프로그램 실행시 바뀌지 않는다. - 동적배열 : 프로그램 실행 중에 크기가 변경될 수 있다. 자바는 동적배열만 존재한다! 배열의 사용 int[] arData = {4,5,1,9}; arDat..
기타 연산자(컴파일러가 아래의 연산자를 만나면 그 밑의 문장을 실행하지 않는다.) break;: 해당 중괄호 영역 탈출 if문 안에서 break를 사용하면 if문을 탈출하지 않고 감싸고 있는 영역을 탈출한다. continue;: 다음 반복으로 스킵. 반드시 continue 밑에 소스코드가 있어야 한다. ----------------------------------------------------------------------- while while(조건식){ 반복할 문장 } for문은 몇 번 반복할지 알 때 사용하고, while문은 몇 번 반복할지 모를 때 사용한다. 무한반복 후 특정조건에서 break를 사용해서 탈출 do~while do{ 반복할 문장; }while(조건식); -------------..
비트 연산 논리 연산자 &(AND) 논리곱 : 두 비트 모두 1이면 1 |(OR) 논리합 : 둘 중 하나라도 1이면 1 ^(XOR) 배타 논리합 : 두 비트가 서로 다르면 1 단항 연산자 ~(NOT) 논리부정 : 0은 1로 1은 0으로 변경 부호 비트 : 최상위 비트가 0이면 양수, 1이면 음수 ~a = -a - 1 2의 보수 문제)1 1110 1010 1. 우에서 좌로 읽는다. 2. 처음으로 나오는 1을 찾는다. 3. 그 다음 비트부터 비트를 반대로 변경한다. 예)0 0001 0110 4. 10진수로 변경한다. 예)22 5. 마이너스(-)를 붙여준다. 정답)-22 쉬프트 연산자(비트 이동) : a >> ba를 b만큼 우로 비트이동 빈 칸은 0으로 (음수는 1로) 채워지고 비트가 넘어가면 자동으로 잘린다..