카테고리 없음

[Java] 배열(Array), Scanner__개발공부 4일차-4

하체는 스쿼트 2022. 2. 20. 19:57
배열(Array)

 

ㄱ. 배열 정의?

[동일한 자료형]을 메모리 상에 [연속적]으로 놓이게 하는것.


ㄴ. 배열 선언 형식
자료형[ ] 배열명 = new 자료형[배열크기];
                                          [갯수]
            변수명

            참조형 변수 (주소를 참조해 오기 때문이다.)

  
예) int[ ] kors = new int[3];
                     new에 의해 실제 메모리 heap(힙) 동적 메모리 영역에 할당됨. int * 3

 

 

ㄷ. 배열 선언

int [] kors  = new int[5];

 

ㄹ. 배열의 초기화

kors[0] = 90;
kors[1] = 89;
kors[2] = 78;
kors[3] = 56;
kors[4] = 88;

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

 배열 초기화

*****중요*****

 

ㄷ+ㄹ 을 합쳐서 진행할 수있다.

//int [] kors = new int [] {90, 89, 78, 56, 88};

 

int [] kors = {90, 89, 78, 56, 88};

 

 

System.out.println(    kors.length    );               //5

 

System.out.println(kors[kors.length - 1]);          //마지막 인덱스 값

 

cf)각 배열의 요소를 초기화 하지 않았는데도...syso로 출력해도Err 발생하지 않고  int[ ] 각 요소에 0으로 자동으로 초기화 되어져 있음
                     자료형의 기본값으로 초기화됨

 

-----------------------------------------------------------------------------------------------------------------------------------

 

 

 

실제 메모리 영역에 할당된 곳의 주소만 참조해서 오는 것이기 때문에 참조형 변수라고도 불리는것이다.

 

 

String[ ]args --------> 문자열 배열 args라고 읽는다.

 

 

[ ]인덱스(index)연산자

 

*****중요*****

1. 한 학생의 국어 점수를 저장할 변수를 선언하세요.

int kor;

 

2. 5000만명 학생의 국어 점수를 저장할 변수를 선언하세요.

 

int kor00001;

int kor00001;

:                                                     --------->시간이 너무 오래 걸리고, 공간도 많이 잡아 먹는다.

:                                                               ==>그래서 '배열'을 사용하는 것이다.

int kor49999;

int kor50000;

 

 

int [ ] kors = new int[3];                배열명[인덱스값]

                                                          첨자값

 

kors[0] = 98;

kors[1] = 88;

kors[2] = 50;

 

System.out.println( kors[0] );                                      //98

System.out.println( kors[1] );                                      //88

System.out.println( kors[2] );                                      //50

 

 

 

split 메서드

 

split

1.기능 : 매개변수를 기준으로 문자열을 잘라준다.

2.매개변수 ","

3.리턴값, 리턴자료형  : String [ ]

 

String[ ] dataArray = data.split(",");

 

 

 

 

위의 예제를 홍길동,         90,       88,       75 과 같이 공백과 함께 입력하면 Err가 발생한다.

 

 

trim 메서드

 

trim

1.기능 : 문자열 앞뒤에 있는 공백 제거해준다.

2.매개변수 

3.리턴값, 리턴자료형

 

name = dataArray[0].trim();

 

위의 예제를 trim을 사용하면

홍길동,         90,       88,       75 과 같이 공백과 함께 입력가능하다.

 

 

 

Scanner

 

Scanner sc = new Scanner(System.in);

으로 키보드 입력 받는다.

 

 

 

Scanner  

sc.next()

sc.nextInt()                                                          로 입력 받으면 로 변수값 할당하면 앞에서 부터 공백기준으로 

sc.nextBoolean()                                                                                                             한개씩 할당된다.

sc.nextDouble()

 

 

useDelimiter를 활용하여 콤마 구분자를 설정도 가능하다.

String pattern = ",";

sc.useDelimiter(Pattern);

 

 

Scannaer의 객체는 자원을 반드시 돌려주기 위해서 close 해야한다.(닫아줘야 한다.)

 

sc.close();

 

 

 

 

 

 

효율적인 연산

 

 

AND 연산자에서 둘다 모두 참이어야 하므로 앞에가 거짓이면 뒤에가 참이던 거짓이던 상관이 없다.

컴퓨터가 앞에서 거짓이면

바로 다음 계산으로 넘어가는 걸 효율적인 연산이라고 한다.

 

OR 연산자에서 둘중 하나만 참이면 참이므로 앞에가 참이면 뒤에가 참이던 거짓이던 상관이 없다.

컴퓨터가 앞에서 참이면

바로 다음 계산으로 넘어가는 걸 효율적인 연산이라고 한다.

 

 

 

알파벳 숫자

 

char a = 'a', z = 'z';

char A = 'A', Z = 'Z';

 

System.out.printf("%c[%d]\n",a,(int)a);                               //-------> 정수계열이니까 casting 연산자로 형변환 가능

System.out.printf("%c[%d]\n",z,(int)z);

System.out.printf("%c[%d]\n",A,(int)A);

System.out.printf("%c[%d]\n",Z,(int)Z);

 

a[97]

z[122]

A[65]

Z[90]

 

대문자를 소문자로 변환

소문자를 대문자로 변환

소 - 대 =  32

97 - 63 = 32

 

 

대문자 A -소문자 a 문자코드값의 차를 확인

System.out.println( a-A );                       // a - A 32 문자에서 문자를 빼는건데도 오류가나지 않음

System.out.println( 'a'-'A' );                    // 'a' - 'A' 32 내부적으로 정수계열이라서 알아서 빼줌

 

 

char ch = 'x' - 32;

System.out.println(ch);                             // 'X' 출력