-
728x90
메모리는 크게 4가지로 나뉜다.
- 스택
- 힙
- 데이터
- ROM코드
char c = 49; // '1' bool b = 1; // 'true'
왜 49를 넣었는데 1이 나오는가?
메모리 상으로 49를 char로 해석하면 아스키코드에 의하여 문자'1'이 나오기 때문이다.
이렇게 문자는 바이트코드의 해석에 따라 정해진다.
그런 문자들이 나열되어 있는게 문자열이다.
예를 들어 문자열 "459"는
'4' = 52
'5' = 53
'9' = 57
이다. 그래서 바이트 코드를 아스키코드로 해석하면 52,53,57이다.
char은 1바이트를 찾아히고 문자로는 127개가 정해져있다.
그리고 문자열 마지막에는 항상 null로 끝났음을 알려준다.
null과 공백(space)는 다르다.
참고
https://skmagic.tistory.com/66
이제 배열로 문자열을 담아보자.
char Bchar[10] = "abcdef" // 최소 7칸필요 short arrshort[10] = {97,98,99,100,101,102,0,0,0}
둘의 바이트 코드는 같다 하지만 해석이 다르다.
문자열이 실행 중간에 값변경이 안되는 이유는 ROM에 저장되어있기 때문이다.
효율적으로 메모리를 사용하기 위한 정해진 약속에 의해 ROM(Read only memory)이다.
문자열 안에 문자가 몇개 있는지 확인하는 연습문제
//배열에 들어가있는 문자 갯수 public class HowToPlusString { public static int GetLength(char[] str){ //문자 갯수 int i = 0; while (true){ char c = str[i]; if (c == 0){ break; } i++; } return i; } public static void main(String[] args) { char[] szName = new char[]{'a','b','c','d','e',0}; int iLen = GetLength(szName); System.out.println(iLen); } }
'JAVA 기본' 카테고리의 다른 글
자바별찍기 (0) 2021.10.15 Servlet의 기본구성 (0) 2021.05.02 15주차 과제: 람다식 #15 (0) 2021.03.05 14주차 과제: 제네릭 #14 (0) 2021.03.01 13주차 과제: I/O #13 (0) 2021.02.28