본문 바로가기

자바 프로그래밍

[JAVA] 객체 배열 사용하기

 

 

입력 받을 때 마다 students[i] = new Student(); 해주어야 함

일반적으로 sc.nextLine() 은 입력을 받은 이후 사용하는 것이 일반적이라서 

integer를 입력 받고 sc.nextLine() 을 해주어야 함.

 

 

여기서 파란색은 스택 영역이고, 나머지는 모두 힙 메모리 "비비빅", "월드콘" 도 힙에 있음.

참조변수를 배열로 만든다!

 

---- null 값을 가지고 있는 참조 변수 배열을 생성한다 (1)

---- 인스턴스 객체를 생성

 

이렇게 먼저 소스를 작성할수도 있음!

입력할 때는 입력 버퍼를 사용한다. → 키보드 입력

 

 

정수와 실수를 입력 받을 때 문제가 생기는데, 이러한 문제를 해결하기 위한 꼼수 sc.nextLine() 이 필요!

nextInt() 는 sc.nextLine() 을 해주어야 함. 

문자열을 입력한 후 nextLine()을 통해 입력을 받기 때문에!!

 

 

일반적으로 이렇게 사용함 

 

무조건 엔터를 쳐야 버퍼에 저장이 된다. 그런데 nextInt() 같은 경우 버퍼에 담는 기능이 없음

 

 

 

 

왜 에러 ??????  static void printStar() 

printStar() 메소드는 main에 종속적!

static은 멤버 변수나 메소드에 static 키워드를 붙일 수 있다 → 공유하겠다!!

 

특정한 클래스 안에서 공용으로 사용할 변수나 메소드를 정의할 때 static으로 정의한다.

static 변수 = 클래스 변수 (같은말)

 

non-static / static 

 

static 변수는 프로그램을 실행하는 순간 바로 생성돼!

 

 

static과 non-static 메모리 영역은 구분되어 있다.

 

static 같은 경우 클래스명을 통해 접근하는것이 통상적이다.

 

 

 

 

 

즉 double로 입력하지 않아도 묵시적으로 형 변환을 해줌.

 

.

클래스 내부에 CHAR 형이 없으니까 매개변수가 int인 메소드가 호출되는 것을 볼 수 있다.

이럴 때 가장 가까운 자료형으로 묵시적 형변환이 발생하고, 호출한다

만약 int 형이 없다면 double 형이 그 다음으로 가까우므로 double이 호출

 

 

String 클래스는 변경이 불가능한 immutable 클래스이다.

String 클래스를 사용하여 String의 문자열을 추가할 때 기존 할당된 메모리 힙영역에 문자열을 수정할 수 없다.

예를 들어 String 문자열에 +를 하여 문자열을 추가 할경우에 내부적으로 새로운 객체를 생성하게 된다.

 

StringBuffer 클래스는 변경이 가능한 mutable 클래스이다. 이 두 클래스는 내부적으로 Buffer에 문자열을 저장해두고 그안에서 추가, 수정, 삭제 작업을 할 수 있도록 설계되어 있다. String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있는 것 이다.

 

 

'자바 프로그래밍' 카테고리의 다른 글

[JAVA] 아이스크림 (분리)  (0) 2019.05.17
[JAVA] 생성자(오버로딩, 초기화)  (0) 2019.05.16
[JAVA] OOP 클래스 만들기  (0) 2019.05.15
[JAVA] 배열 & 반복문 조금  (0) 2019.05.15
[JAVA] 나비 모양 그리기  (0) 2019.05.15