JAVA/이론 정리 및 예제 27

[JAVA/자바] #10_1 기본API / 예제

String 클래스 문자열값을 변경하지 못하는 불면 수정시 수정된 문자열이 새로 할당되어 새주소를 발생시킨다. 같은 문자열이 있으면 동일한 주소를 가진다. String str1 = "java"; String str2 = "java"; str1 == str2; String str3 = new String("java"); str1 != str3; //수정시 새 주소로 할당되어 참조하게 된다. -> 불변 str1 += "oracle"; String [ 0x1234 0x0001 ] str1 [ 0x1234] str2 [ 0x5678 ] str3 String pool 0x1234 | “java” 0x0001 | “java oracle” 0x5678 [ | | | ] public void stringTest() {..

[JAVA/자바] #9_1 다형성 / 예제

타입 클래스가 곧 타입, 클래스가 청사진(설계도면)인데 사용하기 위해 heap에 만들라는 타입 다형성을 쓰는 이유 두 클래스간의 의존관계를 줄이기 위해(TestA, TestB) 연주자객체들을 객체배열을 이용해서 한 번에 연주시키기 위해 다형성* ‘서로 다른 형태’ → 타입(자료형)이 다양하다 상속으로 인해 파생된 기술이다. 자식클래스를 작성할때 부모클래스의 맴버뿐만아니라 타입또한 물려받는다. 부모타입의 레퍼런스로 여러개의 자식객체들을 취급할 수 있는 것 원클래스는 원이라는 타입이면서 도형이라는 타입을 가지고 있다 삼각형 클래스는 삼각형 타입이면서 도형이라는 타입을 가지고 있다 즉, 객체를 생성할때 도형이라는 레퍼런스 타입으로도 사용할 수 있다 => 상위타입의 레퍼런스로 하위 타입의 객체의 주소를 보관할 ..

[JAVA/자바] #8_1 상속 / 예제

상속 다른 클래스가 가지고 있는 멤버(필드와 메소드)들을 새로 작성할 클래스에서 직접 만들지 않고, 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있게 만든 기술 = 부모가 가지고 있는 맴버에 해당하는 것을 중복 작성없이 물려받아 자식것만 따로 작성하기만 하면 되는것 상속의 목적* 클래스의 재사용, 명확한 특성이나 추가적인 메소드를 더해서 구체적인 타입으로 만드는것 상속의 장점* 보다 적은 양의 코드로 새로운 클래스를 작성 가능 코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경이 용이함 부모 클래스(공통 코드)를 하나의 클래스로 관리하면서 유지보수가 용이하다 코드의 중복을 제거하여 프로그램의 생산성과 유지보수성이 증가한다. 표현식 클래스간의 상속시에는 extends 키워드 사용함 [접근제..

[JAVA/자바] #6_5 메소드(method)/ 예제

메소드란 블랙박스라고 한다. 매개변수 파라미터로 값을 전달받고 어떤 연산을 수행한 후 결과값을 돌려준다. 표현식 [접근제한자][예약어] 반환형 메소드명(매개변수){ //실행내용 작성 } 메소드의 접근제한자 메소드의 예약어 public void test(); - 미완성된 메소드인데 abstract 상속을 했을때 오버라이딩을 하기위한 강제성을 지닌다. 메소드의 반환형 메소드의 매개변수 가변인자 : (자료형 ... 변수명) 배열 예) main method(String[] args)의 매개변수처럼 오버로딩 한 클래스 내에서 파라미터선언부(매개변수)가 다르고, 이름이 같은 메서드를 여러 개 정의하는 것. 오버로딩 성립조건 메소드 이름이 같아야한다. 매개변수 선언부가 달라야한다. 매개변수 타입, 개수 , 순서 오버..

[JAVA/자바] #6_4 생성자(constructor) / 예제

생성자란? 객체가 heap에 할당될 때 객체 안에서 만들어지는 필드의 초기화를 담당한다. new 연산자를 할 때 실행되는 함수로 초기값을 생성자 함수의 인자로 전달함. 생성자 함수가 매개변수로 전달 받은 값으로 필드를 초기화 하고 객체를 생성해 주기위한 목적 생성자 규칙 생성자 선언은 메소드 선언과 유사하나 반환형을 작성하지 않는다. (void, int, char, …) 클래스 이름이랑 똑같이 지정해야 한다.(대/소문자) 생성자 종류 기본 생성자(매개변수가 없는 생성자) 작성하지 않은 경우, 클래스 사용시 JVM이 자동으로 생성해준다. 매개변수 있는 생성자 객체 생성시 전달 받은 값으로 객체를 초기화 하기 위해 사용함 매개변수 있는 생성자 작성시 JVM이 기본 생성자 자동 생성 하지 않음 상속에 사용시 ..

[JAVA/자바] #6_3 필드(field)/ 예제

Stack heap(동적메모리영역) static(정적메모리영역) codeArray : 작성한 코드(클래스) static 변수 : Full클래스명으로 명시 모든 메소드 접근 가능 모든 객체들이 공유해서 사용하는 변수 num : new 연산자를 사용해서 생성되고 참조가 끝나면 GC에 의해 소멸된다. Life cycle Stack : 메소드가 호출되었을때 생성되고, 메소드가 끝나면 소멸된다. heap : num은 new 연사자를 통해 객체가 생성되고 참조가 끝나게 되면 GC를 통해서 소멸된다. static : size는 프로그램이 시작되면 할당받고 프로그램이 종료되면 소멸된다. public class Variable { public static int size; private int num; public vo..

[JAVA/자바] #6_2 클래스

클래스명 레퍼런스변수명 = new 클래스명(); 사용자정의 자료형: 작성한 소스코드는 클래스이고, 사용자 정의 자료형이라 한다. (메소드만 있는 클래스, 속성만 있는 클래스) Person p = new Person(); Strack : person이라는 타입의 p라는 레퍼런스 변수 생성 heap : new 연산자를 통해 객체를 만들어서 주소를 p에 대입 → 문제가 발생할 수도 있기 때문에 접근제한을 주고 간접적으로 가져올 수 있도록 메소드 public class Variable { public static int size; private int num; public void test(){ int num = 100; } } 클래스 선언 필드와 메소드는 클래스가 가지는 맴버이다. [접근제한자] [예약어] c..

[JAVA/자바] #6_1 객체지향언어 / 예제

객체지향언어 현실세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있다. 모든 사건들은 객체와 객체간의 상호작용으로 이루어져있다. => 컴퓨터로 옮겨 놓아 만들어낸 것이 객체지향 언어이다 자바에서 객체란? 클래스에 정의된 내용대로(작성해 놓은대로) new 연산자를 통해 heap 메모리에 생성된 것을 말한다. (heap의 공간자체) 클래스의 등장 배경 데이터를 많이 다루기 위해 구조체가 탄생하였다. 변수(한개의 데이터) → 배열(한개의 자료형) → 구조체(여러개의 자료형, 데이터 사용자가 정의한 내용들을 외부로부터의 데이터 접근을 제한 시켜 변경을 못하도록 한다. 하지만 값의 확인조차 하지 못하기에 의미가 없다. 클래스 객체의 특성(속성 + 기능)에 대한 정의를 한 것으로 속성(객체를 나타..