해결된 질문
작성
·
3.3K
0
안녕하세요, 다름이 아니라 제가 나도코딩 자바(Java) 기본편을 공부하면서, 배열(Array)에 관해 모르는 것이 생겨서 이렇게 질문을 남깁니다.
일반적으로 배열이 String[] array = {...}; 이렇게 선언 되었을 때, array.length를 이용해서 배열의 길이를 파악하고, array[0] 처럼 이렇게 인덱스로 값의 위치를 파악하면서 데이터를 읽는다고 알고 있습니다.
반면에 String sentence = "sentence"; 이런 경우에는 같은 length를 쓰지만 String 클래스의 메소드라서 괄호를 나타낸 sentence.length()로 길이를 파악하고, "..."; 안 문장의 각 글자 별 위치를 파악할 때는 sentence.charAt()을 쓴다고 알고 있습니다. 제가 이해한 부분이 혹시 맞을까요?
또한 아래처럼 선언된 String[] 배열에서:
String[] Java = { "나는 자바가 좋아요" };
Java 배열의 전체 길이를 파악하고 싶다면, Java.length 으로 적는데,
만약 배열 안 문장 "나는 자바가 좋아요" 의 전체 길이를 알고 싶다면 Java[].length()으로 적고,
배열 안에 들어있는 문장 "나는 자바가 좋아요" 에서 각 낱말의 위치를 파악하고 싶다면, Java[].charAt()를 적으면 되는 건가요? 여기서 Java[].부분에는 배열 index를 적고 (예를 들면 Java[0]), charAt()은 "..." 문장의 각 글자 별 인덱스를 적는 방식으로요.
질문이 조금 많이 길었습니다. 하지만 동시에 그 만큼 제가 또한 열심히 배우고 싶다는 열정으로 봐주셨으면 합니다! 게다가 앞으로 다가올 기말시험에서도 배열의 비중이 꽤 크기도 해서, 정말로 잘 배우고 싶습니다! (해외에서 대학을 다니는 지라 지금 이맘때 쯤이 시험기간입니다 ㅠㅠ)
참 얼마 전에, 자바로 소켓 프로그래밍으로 과제를 해야 했었던 일이 있었는데, 그 때 나도코딩님이 업로드 해주신 섹션 12. (Section 12.) 예외 처리 부분이 상당히 많이 도움 되었습니다.
덕분에 과제에서 나쁘지 않은 점수를 받았습니다.
앞으로도 좋은 강의 잘 부탁하고, 진심으로 감사합니다 :-)
답변 1
1
안녕하세요?
모든 내용을 잘 이해하고 설명해주셔서 제가 별다른 답변을 드릴 게 없네요 😅 질문주신 내용을 다음과 같이 코드로 한 번 정리해봤어요.
String [] array = { "세글자", "무려여섯글자" }; // 문자열 2개를 담은 배열
System.out.println("배열의 크기 : " + array.length); // 2 (콤마로 구분된 문자열 개수)
System.out.println("배열의 0 인덱스 값 : " + array[0]); // 세글자
System.out.println("배열의 1 인덱스 값 : " + array[1]); // 무려여섯글자
String sentence = "hello";
System.out.println("문자열의 길이 : " + sentence.length()); // 5 (글자수)
System.out.println("문자열의 0 인덱스 값 : " + sentence.charAt(0)); // h
System.out.println("문자열의 1 인덱스 값 : " + sentence.charAt(1)); // e
System.out.println("문자열의 2 인덱스 값 : " + sentence.charAt(2)); // l
String[] java = { "나는 자바가 좋아요" }; // 문자열 1개를 담은 배열
System.out.println("배열의 크기 : " + java.length); // 1 (콤마로 구분된 문자열 개수)
System.out.println("배열의 0 인덱스 값 : " + java[0]); // 나는 자바가 좋아요
System.out.println("배열의 0 인덱스 값의 길이 : " + java[0].length()); // 10 (글자수)
System.out.println("배열의 0 인덱스 값의 1 인덱스 값 : " + java[0].charAt(1)); // 는
그리고 위 코드의 실행 결과는 다음과 같습니다. (구분을 위해 임시로 줄바꿈을 하였습니다)
배열의 크기 : 2
배열의 0 인덱스 값 : 세글자
배열의 1 인덱스 값 : 무려여섯글자
문자열의 길이 : 5
문자열의 0 인덱스 값 : h
문자열의 1 인덱스 값 : e
문자열의 2 인덱스 값 : l
배열의 크기 : 1
배열의 0 인덱스 값 : 나는 자바가 좋아요
배열의 0 인덱스 값의 길이 : 10
배열의 0 인덱스 값의 1 인덱스 값 : 는
코드와 비교해보시면 쉽게 납득이 되실 거에요.
질문 내용을 봤을 때 인덱스와 length, 그리고 charAt 등 내용은 모두 잘 이해하셨는데요. String 배열과 일반 String 하나에 대한 개념만 완전히 잡으시면 되겠습니다. String 배열 (다른 자료형도 동일하지만) 은 String 을 여러 개 가질 수 있습니다. 비엔나 소시지 하나가 String 이라면 줄줄이 묶여진 비엔나 소시지들을 String 배열이라고 생각해주시면 되는데요. 붙어 있는 소시지들을 가위로 싹둑 잘라버리면 그냥 하나의 비엔나 소시지가 될 뿐입니다. 즉 String 배열도 여러 개의 String 을 가질 뿐, 각각의 String 은 일반 String 과 다를 바가 없지요.
그래서 아래 코드와 같이 인덱스를 통해 배열의 어떤 요소에 접근하게 된다면, 그때부터는 일반 String 과 동일하게 length() 나 charAt() 을 사용할 수 있습니다.
String [] array = { "세글자", "무려여섯글자" }; // 문자열 2개를 담은 배열
String s = "세글자"; // 문자열 1개
System.out.println("배열의 0 인덱스 값 : " + array[0]); // 세글자
System.out.println("문자열 s 의 값 : " + s); // 세글자
System.out.println("배열의 0 인덱스 값의 길이 : " + array[0].length()); // 3
System.out.println("문자열 s 의 길이 : " + s.length()); // 3
System.out.println("배열의 0 인덱스 값의 1 인덱스 값 : " + array[0].charAt(1)); // 글
System.out.println("문자열 s 의 1 인덱스 값 : " + s.charAt(1)); // 글
실행 결과는 이렇습니다. (구분을 위해 임시로 줄바꿈을 하였습니다)
배열의 0 인덱스 값 : 세글자
문자열 s 의 값 : 세글자
배열의 0 인덱스 값의 길이 : 3
문자열 s 의 길이 : 3
배열의 0 인덱스 값의 1 인덱스 값 : 글
문자열 s 의 1 인덱스 값 : 글
결국 array[0] 는 일반 String 변수인 s 와 비교했을 때, 뒤에 인덱스를 지칭하는 부분( [0] )이 있다는 점만 다를 뿐 일반 String 변수와 동일하게 length(), charAt() 을 사용할 수 있게 됩니다 😊
궁금증 해결에 도움되었으면 좋겠어요!
감사합니다.