JAVA _기초
[JAVA] 문자열 (String)
Journey Jeong
2023. 2. 15. 20:12
01. 문자열과 배열의 비교
예제
package string;
public class StringTest01 {
public static void main(String[] args) {
// " ㅇㅇㅇ " : 문자열, 상수
String str="문자열";
char[] strs={'문','자','열'};
System.out.println("문자열길이 : " + str.length()); //길이정보를 알 수 있는 메서드
System.out.println("배열의길이 : " + strs.length); //길이정보를 알 수 있음
char ch= str.charAt(0); //한글자씩 추출함 //문:0, 자:1, 열:2
System.out.println(ch);
char[] strs2 = str.toCharArray(); //문자열을 문자타입 배열로 만든다.
for(int i=0; i< strs2.length; i++) {
System.out.print(strs[i]);
}
}
}
02. 문자열 값 비교
: x.equals()
메모리 저장 공간에 의해 == 보다는 x.equals() 를 통해 하는 것이 더 정확함
해시코드가 다르더라도 equals 를 통해 비교 하면 됨
예제
package string;
public class StringTest02 {
public static void main(String[] args) {
// 문자열 입력 방법
String str1= "홍길동"; // 첫번째 방법, 기본 방법 //문자열 상수형 변수
//상수: 변하지 않는 수 , 공유 목적이기에 여러개 만들지 않고 1개만 만듬
// static 메모리에서 관리
String str2= new String("홍길동") ; // 두번째 방법, 생성자로 할당
//객체형 변수 // NEW = 힙메모리에 만듬
// 표현식에 따른 문자열 동일함 비교
String str3= "홍길동";
String str4= new String("홍길동");
System.out.println(str1==str2); //false가 나옴
System.out.println(str1==str3); //true가 나옴
System.out.println(str2==str4); //false가 나옴
// 비교하는 두 변수가 상수필드로 초기화 한 변수일때만 true 임
// == : 문자열 비교시 단순비교로 저장된 값이 아니다.
System.out.println("----------");
StringTest02 obj=new StringTest02();
System.out.println(obj); // string.StringTest02@515f550a
System.out.println(str1.equals(str2)); //true
System.out.println(str1.equals(str3)); //true
System.out.println(str2.equals(str4)); //true
//문자열 실제 값(데이터)를 비교하고 싶을 때는 ".equals"라는 메서드를 활용하기
}
}
03. 문자열 추출하기
방법 1> 변수.substring(x,y)
방법 2> 변수.indexOf()
방법 3> 변수.lastIndexOf()
방법 4> 변수.spilt()
예제.
package string;
import java.util.UUID;
public class StringTest03 {
public static void main(String[] args) {
//0123456789012
String str1="031-5600-1234";
String str2="02-5600-4321 ";
// 01. 문자열 추출하기 : x.substring(i,y)
System.out.println(str1.substring(0,3)); //031 // 0부터 3이전 자리까지 즉 0~2
System.out.println(str1.substring(4,8)); //5600 // 4~7
System.out.println(str1.substring(9)); //1234 // 9~끝까지
System.out.println(str2.substring(0,2)); //02
System.out.println(str2.substring(3,7)); //5600
System.out.println(str2.substring(8)); //4321
System.out.println("--------------");
// 파일: 파일이름. 확장자
// 특정한 단어를 찾아서, 파일명과 확장명 분리 방법 : indexOf()
// 0123456
String fileName="aaa.jpg";
System.out.println("'.'의 위치: " + fileName.indexOf('.')); //3 //'.'의 위치를 숫자로 찾아줍니다.
int x=fileName.indexOf('.');
System.out.println(fileName.substring(0,x)); // aaa
System.out.println(fileName.substring(x));//.jpg
String newName= UUID.randomUUID().toString();
fileName= newName+fileName.substring(x); // 랜덤한 이름을 만들어줍니다.
System.out.println("새로운 파일이름 : " + fileName); //4cf6269f-ba2e-4772-9250-18b6ace9d7a3.jpg
//02. 마지막 '.' 찾는 방법 : .lastIndexOf()
//012345678901234567890123
fileName= "01234567890.23456789.jpg";
System.out.println(fileName.lastIndexOf(".")); //20
int y=fileName.lastIndexOf('.');
System.out.println(fileName.substring(0,y)); //
System.out.println(fileName.substring(y));//.jpg
System.out.println("--------------");
//03. 배열 index 번호로 쪼개기 : .split()
fileName="aaaabbb.gif";
String[] strs= fileName.split("[.]");
// () 의 기준으로 문자열을 쪼갠다.
System.out.println(strs.length); //2 //'aaaabbb' & '.gif' 이렇게 두개
System.out.println("--------------");
for(int i=0; i<strs.length; i++) {
System.out.printf("확장명 strs[%d] = %s\n", i, strs[i]);
}
String phone = "02-1234-5678";
strs=phone.split("[-]"); // - 기준으로 쪼개기
for(int i=0; i<strs.length; i++) {
System.out.printf("번호 strs[%d] = %s\n", i, strs[i]);
}
04. 문자열 변환 방법
: x.append()
예제 1. ' - ' -> '~ '
String phone = "02-1234-5678";
strs=phone.split("[-]"); // - 기준으로 쪼개기
for(int i=0; i<strs.length; i++) {
System.out.printf("번호 strs[%d] = %s\n", i, strs[i]);
}
System.out.println(" ---------------- ");
StringBuilder sb=new StringBuilder();
for(int i=0; i<strs.length ; i++) {
sb.append(strs[i]);
if(i==strs.length-1)continue;
sb.append("*");
}
System.out.println(sb.toString()); // 문자열로 변환
//02*1234*5678
예제 2. '\ \' -> '\ '
String path= "E:\\ncs2023\\tools\\eclipse";
// java 에서는 \를 \\개로 해야 파일경로를 표현할 수 있음
// E:/ncs2023/tools/eclipse 윈도우에서는 이렇게도 동일하게 표현 할 수 있음
System.out.println(path.replaceAll("[/]", "-"));
05. 공백제거하기
: x.trim()
//제일많이 사용하는 것
//회원 가입 시 3글자 이상만 가능합니다. 단 공백은 글자로 처리하지 않도록 해주세요
String name=" 홍길동 ";
System.out.println(name.length());//7
System.out.println(name.trim().length()); //3
//trim: 문자열에 공백을 제거하는 것
//name.trim();