입력 받을 때 마다 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 |