Kim-Baek 개발자 이야기

자바 기본 (6) - 입출력, 배열 본문

개발/java basic

자바 기본 (6) - 입출력, 배열

김백개발자 2020. 9. 27. 02:35
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다

◎ 자바의 입출력(I/O)

Data  ------ 입력 ------> program ------- 출력 -------> 모니터

- 입력은 외부로부터 값을 받아오는 것

- 출력은 값을 모니터와 같은 곳에 출력하는 것 ex)System,out.print("안녕");

 

◎ Scanner  

- Java 1.5 부터 추가된 기능으로 유저에게 입력기능을 제공한다. 사용하기 위해서는 class 의 밖에 맨처음 줄에 import java.util.*; 이 필요하다

 

- 사용법

 Scanner 변수명(일반적으로 sc 를 많이 사용) = new Scanner(System.in) - 문자를 읽는 스캐너를 생성하는 코드

 

 String str = sc.nextLine(); - 줄 단위로 입력을 받는다(사용자가 엔터를 칠 때까지, 엔터는 빼고 그 앞까지만 읽는다) -> String 만 읽을 수 있다. 

 

 int i = sc.nextInt(); -> 각 타입으로 변환 가능한 것만 읽을 수 있다

                 -> primitive type 은 전부 있다. ex) nextDouble, nextFloat

 

◎ break - 반복문, switch 에서 사용 -> break 를 만나는 순간 block을 빠져나와라

​ex) while(true){

if(특정조건){

break; -> while을 빠져나라가 (특정조건일 경우)

	}

}

◎​ continue - 반복문에서만 쓰인다 : 조건을 다시 비교해라 (end block 으로 이동해라)

 } - end block

ex) for (int i = 10; i > 0; i++){

~~

~~

continue; 아래의 구문은 실행하지 않는다. (보통 if 문 안에서 사용한다)

~~ (X)      -> 특정한 조건이 되면 다시 수행해라

~~ (X)

}

※ for 문은 초기, 증감, 조건식이 있어서 continue 를 만나면 증감 후 조건식을 처리하게 된다. while 문의 경우 사용자가 증감식을 알아서 넣어줘야 하기 때문에 증감식을 그냥 지나가 무한 루프가 될 가능성이 존재한다  -> continue 가 들어있는 조건식에도 증감식을 넣어주자

 

◎ 배열 (Array) : 같은 type 의 같은 의미를 갖는 들을 모아서 하나로 관리(하나의 변수)

 

◎ 배열의 구문 1

- 배열 변수 선언 : Datatype [ ] 변수명 (변수명 , [ ] 서로의 위치는 변경이 가능하다)

               ​->모을 Data 들의 type      ,   Datatype [ ] 변수명 -> 배열의 Datatype

 

ex) int [ ] ages; 또는 int ages [ ] ; 둘 다 가능하다

- 배열 생성 : 값들을 저장할 공간을 생성

​바로 연결할 때 (변수명 = )  new ​Datatype[ length ] ex) new int [ 5 ];

                                                        -> 저장할 값의 갯수 : 반드시 int 여야 한다.

선언된 배열과 바로 연결도 가능 ex) ages = new int [ 5 ];

 

※ index 를 통해서 변수의 순번을 지정, index 는 각 공간의 구분자 (식별자) 이다. 0부터 순서대로 index 가 부여된다.

   -> index 를 통해 배열의 공간들에 값 대입 및 사용이 가능하다.

       변수명 [ index ] = 값;

         값의 변수명

 

◎ 배열의 구문 2

 - 배열 변수 선언, 생성, 값 초기화(배열의 각 index 에 최초값 대입)를 한번에 처리

Datatype[] 변수명 = new Datatype[length] ( X )

-> Datatype[] 변수명 = { 값1, 값2, 값3....};

 

ex) int [] ages = { 10, 20, 30, 40 }

     -> 반드시 선언, 생성, 초기화를 같이 해야한다

int [] ages;

ages = { 10 , 20 , 30 } -> X

     -> 값을 중간에 비우면 안된다.

int [ ] ages = { 10, 20,  , 40, 50 };

ages [ 2 ] = 30 ;  -> X

 

◎ 배열의 구문 3

 - 배열의 생성 및 초기화를 한번에 처리하는 구문

배열변수 = new DataType[ ] { 값1, 값2, 값3,....}

ex) int [ ] ages;

ages = new int [ ] { 10 , 20, 30, 40 };

-> 반드시 배열타입 변수에 대입하는 구문이 있어야한다

 

◎ 배열의 초기값

1. int [ ] a = new int [ 3 ];

System.out.print ( a[ 0 ] ) ; -> 원래라면 값이 없기 때문에 컴파일에러지만 에러가 X -> 0 출력

 

2. double [ ] d = new double [ 3 ];

System.out.print ( d[1] ); -> 0.0 이 출력

 

※ 배열의 index는 생성시 type의 기본값을 넣고 시작한다 (배열의 defaulf 초기화)

- 각 타입의 기본 값 : 정수형 - 0

   실수형 - 0.0

   char - 공백 (유니코드의 첫 번째 글자)

   boolean - false

   참조형 - null (참조 안한다)

 

* int [ ] a = new int [3] ;

a[0] = 1; a[1] = 2;, a[2] = 3; 여기서 4, 5 를 추가하고 싶어도 할 수 없다.

-> 배열의 Length 는 불변이다. 배열을 새로 만들어서 넣고 싶은 값을 추가해야 한다.

 

◎ 배열의 복사

int [ ] a = { 1, 2, 3};

int [ ] b = new int [ 5 ]; <- 더 큰 공간을 만들어 copy 하자

b[0] = a[0];

b[1] = a[1];           -> for 문을 통해서라면 더 손쉽게 할 수 있다.

b[2] = a[2];

※ System.arraycopy(원본배열, 시작 index, 타겟배열, 시작 index, 복사할 갯수 )

ex) System.arraycopy(a, 0 , b , 0 , 3) -> array 끼리 편하게 복사 가능

 

※ 배열의 길이

   - 배열.length -> int 값이 출력되어 배열의 크기를 알려준다,

 

◎ 향상된 for 문

int arr [  ] = { 값1, 값2, ....... } ;

for( int idx = 0; idx < arr.length; idx ++)   -> 배열 전체를 조회하는 코드

{                                                            상당히 많이 쓰여 편하게 작성하고 싶다

​arr[ idx ];

}

※ 배열 전체를 조회하는 코드에는 항상 고정된 값이 있다.

-> 시작 index = 0, 종료 index = length - 1

따라서 배열의 이름만 알면 편하게 구할 수 있다.​​ -> 향상된 for 문

- 향상된 for 문의 경우 java 1.5 버전 부터 추가되었다.

구문 : for ( 배열 내의 값을 저장할 변수 선언 : 배열 (반복해서 볼 배열))

{

}

ex) for (int i : arr){

System.out.print ( i ); -> 향상된 for 문

                           ​(배열/컬랙션 안의 모든값을 조회하기 위한 for문)

}
반응형
Comments