동동 개발

[JAVA] 명품 자바 프로그래밍 책 공부 1 본문

Java 공부

[JAVA] 명품 자바 프로그래밍 책 공부 1

양동선 2023. 8. 20. 15:44

자바를 까먹은 것 같아서 복습 겸 공부하려 한다. 까먹거나 헷갈리는 부분 위주 정리할 예정.


Scanner 객체

- 이를 사용하려면 import문이 필요하다.

import java.util.Scanner;

- Scanner 객체는 System.in 객체를 이용하여 키보드로부터 일련의 바이트 정보들을 입력받는다.

   이 바이트들을 자바 응용프로그램이 원하는 타입으로 변환하여 리턴한다.

- Scanner 클래스는 사용자가 입력하는 키 값을 공백문자(' ', '\t', '\n') 기준으로 분리하여 토큰 단위로 읽는다.

 


Scanner 클래스의 nextLine()과 next()

- next()로는 공백이 낀 문자열을 읽을 수 없다. next()는 빈 문자열("")을 리턴하지 않는다.

- 공백이 낀 문자열을 입력받기 위해서는 nextLine()을 사용한다. 이를 <Enter>키의 입력을 기다리는 용도로 사용할 수 있다.

 


배열 

1. 배열 선언 시 []에 크기를 지정해서는 안된다. 레퍼런스 변수 선언 후, 배열 생성

-> 반드시 new 연산자를 사용할 것!

int intArray = new int[5];

: 정수 5개의 배열 공간을 할당받고, 이 배열에 대한 레퍼런스값(주소값)을 intArray에 저장한다.


2. 레퍼런스 치환 가능

int myArray[] = intArray; //레퍼런스 치환. 둘 다 동일한 배열 참조

3. length 필드 

- 자바는 배열을 객체로 다루는데, 이 객체에는 배열의 저장 공간과 함께 배열의 크기 값을 가진 length 필드가 존재한다.

  (명품 자바 프로그래밍 그림 3-16, 134페이지)

ㅁ

int intArray[] = new int[5];
int size = intArray.length;

- 이 length 필드는 for문에서 사용하기에 유용하다! C언어에선 strlen()을 썼었는데 말이지. 밑은 예시다.

for(int i=0; i<intArray.length; i++) // intArray 배열크기(5)만큼 반복한다. 
	System.out.println(intArray[i]);

4. 배열과 for-each문

- 배열의 크기만큼 루프를 돌면서 각 원소를 순차적으로 접근하는데에 유용하게 만든 for문이다.(오라클에선 advanced for이라고 부른다)

for (변수 : 배열레퍼런스){
	반복 작업문
}

- 정수형 배열

//for-each문으로 배열에 들어있는 모든 정수를 더하는 코드 만들기
int [] array = {1,2,3,4,5};
int sum = 0;
for(int k : array){	//n.length번 반복, k는 n[0], ..., n[4]로 번갈아 반복
	sum+=k;
}
//이 for문을 바꾼 사례임
for(int i=0; i<n.length;i++){
	int k = n[i];
    sum+=k;
}

- 문자열 배열로 만들어보기

String names[] = {"사과", "배", "바나나", "체리"};
for(String s : names){
	System.out.print(s+" ");
}

----pg 140부터