매번 헷갈리는 문자열 길이

String s = "한글1";

assertEquals(3, s.length());
assertEquals("한", s.substring(0, 1));
assertEquals("한글", s.substring(0, 2));
assertEquals("글1", s.substring(1, 3));
assertEquals(s, s.substring(0, s.length()));

byte[] b = s.getBytes();

assertEquals(5, b.length);
assertEquals("한", new String(b, 0, 2));
assertEquals("한글", new String(b, 0, 4));
assertEquals("글1", new String(b, 2, 3));
assertEquals(s, new String(b, 0, b.length));