아스키 코드표 -
문자를 정수로 치환할때 값 참고용(반대도 가능)
https://www.easycalculation.com/ascii-hex.php
이사이트는 String 에 문자열 넣으면 값을 변환시켜줌
String to ASCII chart, ASCII to decimal convertor, String to decimal converter, string hexadecimal / hex conversion
www.easycalculation.com
package ClassCastException;
public class JavaEx18 {
public static void main(String[] main) {
// char ch1 = 'C';
// char ch1 = 65; = A
// char형은 문자열로도 보고 정수형으로도 본다.
// int num1 = 'C';
char ch1 = '\u0043';
System.out.println(ch1);
char ch2 = "C".charAt(0); //(o)
// ()소괄호 {}중괄호 []대괄호
// UTF-8 code chart
// : https://www.unicode.org/charts/PDF/UAC00.pdf
// 배열
// char []ch;
// char [] ch;
char ch[];
// char ch [];
// ch[] = {'a','b','c'}; (x)
// char ch[] = {'a','b','c'}; (x)
ch = new char[]{'j','a','v','a'}; // (o)
// char ch = new char[4]{'j','a','v','a'}; // (o)
// char ch[4] = {'j','a','v','a'}; (x)
// 문자열
String str = new String(ch);
System.out.println("str : " + str);
// 문자열의 대임
String str2 = "java";
String str3 = "java";
// System.out.println(str2 == str3);
// -true
// 리터럴형테 에서만 true
// 대소문자 구별함
String str4 = new String("java");
System.out.println(str == str4);
str.equals(str4);
System.out.println(str.equals(str4));
// 값으로만 비교 한다. ||
System.out.println(str.contentEquals(str4));
// contentEquals 상속.구현관계에 있으면 자동형변환 가능
System.out.println(str.compareTo(str4));
String str5 = "java1234";
String str6 = "java";
System.out.println();
}
}
package ClassCastException;
public class JavaEx19 {
public static void main(String[] args) {
String str = "java developer";
String str1 = "자바 개발자";
byte[] byteArr = str1.getBytes();
for (byte b : byteArr) {
System.out.println(b + " ");
System.out.println((char)b + " ");
}
// String str1 = "자바 개발자"; 오류 나는이유
// 한글은 한글자당 2byte라서
// 2byte -> 1byte : 한글 손실
// 영문 : 'a' = 97 => '\u0061' : 1byte로 치환되어 값 손실 없음
// 문자열 => 문자의 배열 치환
char []chArr = str.toCharArray();
// 배열을 char배열로 바꾸는 메서드
// chArr 배열에 String str = "java developer"; 값을넣음
// String str = "java developer";
for(char ch : chArr)System.out.print(ch + " ");
// j a v a d e v e l o p e r 출력
// 문자열에서 chArr 배열에서 값을 나열함
System.out.println();
// charAt (int index) = 특정 위치의 문자를 반환함
// 문자열의 길이만큼 돌아가는데 문자열 특정위치의 문자를 순서대로 반환하니
// j a v a d e v e l o p e r 출력할것임
for(int i=0; i<str.length(); i++) {
System.out.print(str.charAt(i)+ " ");
// j a v a d e v e l o p e r 출력
}
System.out.println();
System.out.print(str.substring(0, 6) + " ");
// .substring 문자열을 추출 공백도 문자열로 침
// (0, 6) = 6번 문자열 까지 추출을 의미
char [] chArr2
= str.substring(0, 3).toCharArray();
System.out.println();
for (char ch : chArr2) {
System.out.print((int)ch + " ");
}
// 문자를 정수로 형변환해서 출력 값은 아스키 코드 참조
}
}
출력값이 깨진 이유
// String str1 = "자바 개발자"; 오류 나는이유
// 영어나 숫자는 문자당 1byte를 사용하는데
// 한글은 한글자당 2byte라서
// 2byte -> 1byte : 한글 손실이 일어남
// 영문 : 'a' = 97 => '\u0061' : 1byte로 치환되어 값 손실 없음
// 인코딩은 UTF-8로 하도록하자..
컴퓨터는 구조적인 한계 때문에 모든 정보를 숫자로 밖에 표할 수 없는데 그때 맥락을 파악할 수 있는 메타데이터가 누락되어 전보 전달이 어렵게 됩니다.
그 숫자들이 언떤 의미인지는 메타데이터 를 알고 있는 사람만 해석할수있는데. 그맥락을 사람에게 전달하주기 위해서 숫자를 문자로 변환시켜주기로 합니다.
다행이도 모든 언어의 공통점은 문자로 이루어져 있고 문자는 경우의 수가 무한하지 않고 한정되어 있다보니
이특성을 이용하여 전세계의 모든 문자를 유한한 범위로 제한된 문자 집합으로 표현할수 있게되었습니다.
-메타 데이터
: 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터를 말한다. 즉 동영상, 소리, 문서 등과 같이 실제로 존재하거나 사용할 수 있는 데이터는 아니지만, 이러한 실제 데이터와 직접적 또는 간접적으로 연관된 정보를 제공해주는 데이터를 말한다.
(출처 : http://wiki.hash.kr/index.php/%EB%A9%94%ED%83%80%EB%8D%B0%EC%9D%B4%ED%84%B0)
인코딩(부호화 : https://ko.wikipedia.org/wiki/%EB%B6%80%ED%98%B8%ED%99%94)은 정보를 어떠한 목적을 가지고 또 다른 형태의 정보로 변환시키는 행위를 의미하는데
숫자밖에 다룰 수 없는 컴퓨터를 위해 인간이 이해하기 위한 도구인 문자를 숫자로 변환하는 과정을가지는데
이 과정도 인코딩의 범주에 속하게됩니다.
문자 --(인코딩)--> 숫자 --(디코딩)-->문자
package ClassCastException;
public class JavaEx20 {
public static void main(String[] args) {
String str = " j a v a ";
System.out.println("앞"+str+"뒤");
System.out.println("앞"+str.trim()+"뒤");
// .trim() 문자열 앞뒤의 공백을 제거한다.
System.out.println("앞"+str.replace(" ", "")+"뒤");
// .replace() target 부분을
// replacement 로 대치한 새로운 문자열을 리턴해준다.
// replacement = 바꿔놓는다.
// " " 공백을 ""으로 바꿔서 공백이 사라지는것
int num1 = 1;
// String str2 = String.valueOf(1);
//String str2 = "" + 1;
// 문자열 뒤에 숫자를 그냥 더해주면 문자열로 인식함
// 문자열로 인식 시키지 않을려면 (소괄호) 를써서 먼저 연산해준후 붙여준다.
String str2 = 1 + 2 + "3" + 4 + 5;
// 결과 3 3 4 5 로 출력됨
// 문자열앞은 계산이되서 3이 되었지만 3부터는 문자열로 인식되어 345가됨
System.out.println(str2);
}
}
import java.util.Scanner;
import java.util.regex.Pattern;
public class JavaEx21 {
public static void main(String[] args) {
// 전화번호 ex) 010-1234-5678
// 정규(표현)식 : regular expression (regex)
// http://rad-software-regular-expression-designer.software.informer.com/download/
// 정수 : [0-9] or \\d
System.out.println("입력 : ");
Scanner sc = new Scanner(System.in);
String input = sc.next();
System.out.println("입력 : " + input);
String regex = "010-\\d{4}-\\d{4}";
// \\d - 숫자(0~9) {}안에 숫자를 넣으면 정확이 몇개라는뜻
// {4} = 정확하게 4개 {4.} = 최소한 4개
// {n. m} = n개부터 m개 까지
boolean flag = Pattern.matches(regex, input);
System.out.println(flag == true ? "유효" : "무효");
sc.close();
}
}
'JAVA학원공부' 카테고리의 다른 글
프로젝트 lombok 사용 (0) | 2022.09.26 |
---|---|
쇼핑몰 프로젝트.1 (0) | 2022.09.26 |
예제 (0) | 2022.06.02 |
2022/05/24 (0) | 2022.05.24 |