inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

아스키 코드

아스키코드 질문 있습니당

399

이로운 (dev.rowoon)

작성한 질문수 3

0

        String[][] seats3 = new String[10][15];
        char ch = 'A'; // 아스키코드 넣기
        for (int i = 0; i < seats3.length; i++) {
            for (int j = 0; j < seats3[i].length; j++) {
                seats3[i][j] = String.valueOf(ch) + (i + 1); // 아스키 코드를 문자열로 바꿔서
            }
            ch++;
        }

 

여기서 ch라는 변수에 넣은 아스키 코드는 기본적으로 문자열로 넣은걸로 알고있는데 반복문 안에 들어가면 정수형으로 자동 형변환 되는건가용? 왜 에러가 뜨고 메소드를 써야하는지 더 자세한 설명이 궁금합니다 원리가 따로 있는건지....

seats[i][j] 여기는 각각 index번호가 들어가야 하지 않나용

java 객체지향

답변 1

0

나도코딩

안녕하세요?
먼저 다차원 배열인 seats 의 자료형은 String 입니다. 10 x 15 크기만큼의 공간에 모두 문자열이 대입되기를 기대하는 배열이죠. 질문에 대한 답변을 조금 쉽게 드리기 위해 다음과 같이 바꾸겠습니다.

String seat;

이렇게 하면 seat 라는 이름의 String 변수가 하나 만들어집니다.

이때 다음과 같은 식을 사용할 수 있을까요?

seat = 93; // 정수
seat = 98.8; // 실수
seat = 'A'; // 문자

안됩니다.
seat 는 자료형이 String 인데 우항에는 문자열이 아닌 다른 값들이 들어와서 에러가 발생하게 되지요.

 

하지만 다음 식은 어떨까요?

seat = Integer.toString(93); // 정수를 문자열로
seat = Double.toString(98.8); // 실수를 문자열로
seat = String.valueOf('A'); // 하나의 문자를 문자열로
seat = "안녕하세요"; // 문자열

됩니다.
원래의 값은 정수(93), 실수(98.8), 문자('ㅁ')이지만 모두 String 으로 변환을 하였으므로 사용 가능합니다.

 

그럼 이렇게 하면 어떨까요?

seat = String.valueOf('A') + 11;

여기서 String.valueOf('A') 는 "A" 라는 문자열이 되며 11 은 정수입니다. 그리고 자바에서 문자열과 정수를 더하게 되면 그 결과는 문자열이 되지요. 그래서 "A" + "11" 의 결과인 "A11" 이라는 문자열이 됩니다. 결국 위 문장은 아래 문장과 같은 의미가 되는 거에요.

seat = "A11";

참고로 String(문자열) 과 Number(수) 간의 연산 결과는 이렇습니다.

1) Number + Number => Number; // 1 + 1 = 2
2) Number + String => String; // 1 + "1" = "11"
3) String + Number => String; // "1" + 1 = "11"
4) String + String => String; // "1" + "1" = "11"

그래서 다음 식은

String.valueOf('A') + 11;

3) String + Number 형태이므로 결과는 String 이며 seat 변수에 대입이 가능합니다.

결과적으로 다음 코드에서는 ch 변수에 저장된 하나의 문자를 String.valueOf() 를 통해 문자열로 변환한 뒤, 정수와 결합하여 최종적으로 문자열 형태로 seats3[i][j] 에 대입하게 되는 것이랍니다.

seats3[i][j] = String.valueOf(ch) + (j + 1);

천천히 읽어보시고 여전히 궁금증이 해소되지 않는다면 다시 질문 남겨주세요 😊

감사합니다.

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

1

146

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

119

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

71

1

사고력 키우는 법이 어떤게 있나요?

0

93

2

getter setter

0

103

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

80

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

76

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

115

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

167

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

117

2

응용이 어렵습니다.

0

206

2

IntelliJ가 보이지 않습니다.

0

186

3

JDK 버전 문의

0

129

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

121

2

Iterator 문의

0

105

1

코드 순서 문의

0

143

1

클래스 메소드

0

149

2

Quiz_05 관련 질문드립니다 !

0

118

2

다운로드가 안됩니다

0

165

2

다형성

0

120

2

HashMap

0

80

2