본문 바로가기

IT/자바 Java

[Java 기초] #5. 추가적인 데이터 타입과 오퍼레이터

반응형

배열 Arrays


배열은 공통된 이름을 가지는 같은 타입의 변수의 집합입니다. 다른 언어들처럼 자바도 다차원 배열을 지원합니다.

배열도 자바에서는 오브젝트이기 때문에, 선언할 때 new 를 사용합니다. 클래스 오브젝트와의 차이점은 괄호 안에 컨스트럭터로 넘겨지는 파라메터를 명시하지 않고, 대괄호 안에 배열의 크기를 지정한다는 것이죠.

type은 배열 변수의 데이터타입을 의미하며 size는 배열 변수의 갯수를 정의합니다.


배열의 정의 시 사용되는 대괄호 [] 는 변수이름 뒤에 오지만, 데이터 타입 뒤에 와도 됩니다. 여러 개의 배열을 동시에 선언할 때 이런 방식을 사용하면 더 간단하게 쓸 수 있습니다.


배열은 오브젝트이기 때문에 다른 오브젝트처럼 멤버를 가집니다.

배열의 멤버 중 많이 쓰이는 것이 length 멤버변수 입니다. length 멤버변수를 통해 해당 배열의 크기를 알 수 있습니다.


For - each 스타일의 loop

실무에서는 배열과 같은 집합체의 각각 항목에 대해서 loop를 돌리는 경우가 많습니다. 이런 형식의 loop를 for-each 스타일의 loop라고 하는데요, 다음 예제에서 기존 스타일의 순환식과 차이점을 알 수 있습니다.



String 문자열

파이썬을 포함한 많은 언어에서 문자열은 캐릭터들의 배열로 정의됩니다. 하지만 자바에서의 문자열은 오브젝트로 정의됩니다. 따라서 아래 예제에서 보는 것과 같이 new 구문과 컨스트럭터를 통해서 문자열의 생성이 가능합니다. (컨스트럭터의 파라메터는 문자열 리터럴 혹은 다른 문자열 오브젝트입니다)


자바의 String 클래스는 많은 유용한 메서드를 제공합니다. 몇 가지만 나열해 보면,


boolean equals(str)

int length( )

char charAt(index)

int compareTo(str)

int indexOf(str)

int lastIndexOf(str)

String substring(int startIndex, int endIndex)


여기서 흥미로운 것은 equals(str) 메서드입니다. 단순히 == 를 이용해서 비교하면 될것을 굳이 메서드를 써야 하냐고 생각하기 쉬운데, == 는 양 쪽의 오브젝트가 동일한지 비교하는것이지 해당 스트링 오브젝트의 문자열이 동일한지 비교할 수 없으므로 equals(str) 메서드를 사용하는 것이죠.


파이썬 등에서 배열로 정의된 문자열과 다르게, 오브젝트로 정의된 자바의 문자열은 생성 후 변경이 불가능합니다. (Immutable 속성) 만일 문자열의 변경이 필요한 경우라면 StringBuffer 클래스를 사용하면 됩니다.


이제 자바의 메인 함수에서 항상 파라메터로 들어가 있는 String args[] 의 의미도 이제는 이해할 수 있습니다. String 타입의 배열변수 args 라는 이름으로 커맨드라인 파라메터가 메인함수에 전달된다는 의미이지요.



? Operator

? (물음표) 오퍼레이터를 이용하면 조건에 따라 변수값을 지정하는 경우 손쉽게 사용할 수 있습니다.


여기서 Exp1은 boolean type의 표현식입니다. Exp1이 참인 경우 Exp2가, 거짓인 경우 Exp3이 evaluate 됩니다. 아래 예제를 참조하세요.



반응형