본문 바로가기

JAVA

(46)
[JAVA] 기초문법 - 배열과 ArrayList(3) 다차원 배열 2차원 배열의이름.length는 2차원배열의 행을 의미한다. 배열의이름[0].length는 0번째 행배열의 열(길이)을 의미한다.
[JAVA] 기초문법 - 배열과 ArrayList(2) 객체 배열 만들기 객체 배열은 만들어질 객체주소를 담을 공간이다. 객체 배열 만들기 배열 복사 하기 System.arraycopy 메서드는 Sysyem클래스에 있는 static 메서드이다. bookArray1의 멤버변수 값을 바꾸면 bookArray2의 멤버변수 값도 바뀐다 ㅡ> 얕은 복사 ㅡ>주소가 복사되었기 때문에 깊은 복사 하는 방법(주소를 복사하지 않는 법) 향상된 for문 배열 전체를 접근한다면 해당 방법으로 사용가능. 배열 요소를 순차적으로 접근하여 s에 저장하고 출력한다.
[JAVA] 기초문법 - 배열과 ArrayList(1) 배열과 ArrayList 배열 ex) 학번이 100개가 필요하면 변수를 100개 선언해야함. 배열을 사용하면 간편함. int자료형 4byte 10개가 메모리에 잡힌모습 즉, 배열은 물리적으로도 논리적으로도 연속되어 있는 자료구조이다. 10은 배열의 길이(length)를 의미한다. 배열의 인덱스 순서는 0부터 시작한다. 즉 길이가 5라면 인덱스는 0~4까지이다. 선언할때는 길이를 명시하고 선언해야한다.(fixed length) 배열은 연속된 자료구조로 중간에 데이터가 생략되면 안된다. 배열이 다 채워졌을때 새로운 값을 추가하려면 기존 배열보다 길이가 긴 배열을 생성해서 기존 배열을 복사해야한다. 자바에서 배열선언하기 배열의 초기화 배열이름.length 를 이용하면 배열의 길이를 구할 수 있다. 초기화 하지..
[JAVA] 기초문법 - 클래스와 객체2(4) - singleton 패턴 static 응용: singleton 패턴 인스턴스가 1개만 생성돼야 할때 사용하는 패턴 c언어는 global 변수로 사용함. 예제에서 자동차 회사는 1개의 인스턴스여야 함. ex) 시간 등 private 디폴트 생성자를 사용하면 외부에서 인스턴스를 생성할 수 없다. ㅡ> 클래스 내부에서 인스턴스 생성() 외부에서 사용하기 위해 메서드 추가 추가된 메서드를 이용해 외부에서 인스턴스 생성 가능. 단 하나의 인스턴스만 생성가능
[JAVA] 기초문법 - 클래스와 객체2(3) static 변수 static 변수는 data영역, 상수영역,정적영역 등으로 불리는 다른 영역에 메모리에 저장된다. 저장되는 시점은 new 키워드를 사용해서 인스턴스가 생성되는 시점이 아닌, 프로그램이 메모리에 로드 될때 할당된다. 상수,리터럴, static 변수 등이 저장되어있다. 공유변수를 이용한 1씩 증가하는 학번 부여 예제 공유변수가 1씩 증가하면서 학번이 부여되고 있다. 인스턴스가 생성될때 공유변수의 값을 1 증가시켜 학번으로 부여(학번은 인스턴스의 변수이므로 공유되지 않는다.) 데이터영역: static 변수,리터럴 등 스택메모리: 지역변수(메소드의) 등 힙메모리: 인스턴스 등 static 변수를 참조 할때는 인스턴스.static변수가 아닌 클래스명.static변수로 많이 사용한다. static..
[JAVA] 기초문법 - 클래스와 객체2(2) 객체 간의 협력 학생이 버스나 지하철을 가는 상황을 객체 지향으로 프로그래밍 bus 클래스 학생 클래스 지하철 클래스 객체간 협력 한 결과 승객의 돈이 초기에 5000원에서 bus100번을 타서 4000원이 되었으며 버스 100번의 승객과 수입이 늘어난 것을 볼 수 있다. ​ 상속개념을 배우면 운송수단이라는 클래스를 만들고 운송클래스를 상속하는 탈것(지하철,버스,택시)등을 만들수 있다. 상위 클래스에서 추상메소드를 정의하면 하위 클래스에서는 반드시 추상메서드를 구현해야한다. 상속으로 구현한다면 해당 예제서 학생 클래스는 버스와 지하철과 각각 협력하는 것이 아닌 상위 클래스인 운송수단과만 협력하게 구현 가능하다. 상속을 다룰때 자세히 다뤄보겠다.
[JAVA] 기초문법 - 클래스와 객체2(1) this 가 하는 일 1. 자신의 메모리를 가리킴 여기서 this의 의미는 생성된 인스턴스 멤버변수 year에 매개변수 year을 대입한다는 의미이다. 즉, 현재 인스턴스의 주소를 의미한다. 해당 코드로 인터스턴스의 주소를 가리키는 것을 알 수 있다. 2. 생성자에서 다른 생성자를 호출 생성자에서 다른 생자를 호출할때 this 앞에는 코드가 올 수 없다. 즉 다른 생성자를 호출하는 this는 가장 먼저 실행되는 문장이어야 한다. 왜냐하면 객체의 생성은 생성자 호출이 끝나야 객체가 생성되는데 객체 생성이 완료 되기전에 다른 문장을 실행 할 수 없다. 즉, 이런 동작 불가능 3. 자신의 주소를 반환 함 현재 인스턴스의 주소값을 반환한다.
[JAVA] 기초문법 - 클래스와 객체1(4) 참조 자료형 jdk에서 제공하는 자료형들(string 등등) 사용자가 직접 정의해서 제공하는 자료형 클래스 등등 즉, 클래스 형으로 선언하는 자료형 ​ ​ ​ 클래스의 분리 학생 클래스에 과목별 점수,이름을 함께 관리하면 과목이 추가 될때 class가 굉장히 복잡해진다. ㅡ> 과목 클래스로 분류하는게 낫지 않을까? ​ subject 클래스 정의 subject 클래스를 이용한 student 클래스 정의 참조자료형으로 클래스정의 ​ ​ 정보은닉 private 접근제어자 클래스의 외부에서 클래스 내부의 멤버 변수나 메서드에 접근하지 못하게 하는 경우 사용 멤버 변수나 메서드를 외부에서 사용하지 못하도록 하여 오류를 줄일 수 있음 변수에 대해서는 필요한 경우 get(),set()메서드 제공 ​ ​ private..