본문 바로가기
Java/문법

Java 다양한 문자열의 함수

by ssury94 2024. 12. 16.
 
 
 

 

 

문자열 생성하는  2가지 방법

//문자열 생성하는 방법 2가지!
//1 일반적으로 쓰는 문자열 리터널
String str1="Hello";

//2 String 생성자를 이용 (코드도 길고, 메모리관리에 적합하지 않아 1을 많이 쓴다)
String str2=new String("Hello");

 

번외! 문자열 리터널을 쓰는게 좋은이유

String str1="Hello";
String str2=new String("Hello");
String str3="Hello";
String str4=new String("Hello");

똑같은 문자열을 저장한 4개의 객체

어떤 차이가있을까?

 

문자열리터널은 

String Constant Pool이라는 특별한 메모리 영역에 저장된다. 
이 영역은 동일한 문자열 리터럴이 여러 번 사용될 때, 메모리를 절약하기 위해 동일한 객체를 재사용한다. 
따라서 같은 리터럴로 생성된 문자열들은 동일한 메모리 주소를 참조하게 되어 메모리 효율성이 높다!

코드가 더 깔끔하기도하고요.

같은 값을 가리키는 str1, str3, 각각의 객체를 가리키는 str2, str4

 


Sting은 대문자인데

int, double은 왜 소문자일까?

 

C 언어에서 int, double, float와 같은 기본 데이터 타입은 예약어(keyword)로 정의되어있다.

반면, Java에서 String은 클래스로 정의되어 있기 때문!

int = 예약어라 클래스이름이 안나온다. String= 자바의 클래스로 정의되어있다.

 

 

int, float, double도 자바 클래스로 생성 가능하다.

Integer 사용시 java.lang으로 클래스이름이 뜨는것을 확인할 수 있다!

 

//정수 생성하는 방법
//1
int num1=5;
//2
Integer num2 =5;
System.out.println(num2+3);

//float, double 생성하는 2가지
//1
float num3=3.14f;
//2
Float num4=3.14f;

//1
double num5 =3.14;
//2
Double num6 =3.14;

// int보다 더 큰숫자 저장
long num7=100000000;
Long num8= Long.valueOf(100000000);

 


문자열을 합치는 방법 +

str1="Say";
str2="Hello";
System.out.println(str1+" "+str2);

 

문자열을 숫자로 바꾸는 방법

// 문자열을 숫자로 바꾸는 방법
String str3="317";
System.out.println(str3+100);
//317은 문자열이라 100이 안더해지고 문자열로 합쳐버린다. 317100

//숫자로 바꾸려면? 1번째 방법
int newNum = Integer.valueOf(str3).intValue();
System.out.println(newNum+100);

//2번째 방법
newNum=Integer.parseInt(str3);
System.out.println(newNum+100);

 

문자열이였던 str3을 int로 변환하여 100과 더해진 값 확인가능~!

같은 방법으로 double도 가능하다!

//문자열 double로 바꾸기
String str4="3.14";
double newDouble=Double.parseDouble(str4);
System.out.println(newDouble+100);

 

 


그럼 숫자를 문자열로 바꾸려면?

""+변수;

int k=365;
// 가장 간단한 방법 ""+k
String newK= ""+k;
System.out.println(newK+100);
// 정수가 아니게 되었기때문에 365100으로 출력됨
// 더블도 마찬가지
double y=0.123;
String newY=""+y;
System.out.println(newY+100);

 


문자열의 함수들 소개(문자열"의", 의 = . 중요!)

문자열변수 . 입력하면 자동으로 문자열에 사용가능한 함수들이 뜬다!

String str1="Hello";
String str2=new String("Hello");

 

 

두 문자열을 합치는 concat()

//concat()
System.out.println(str1.concat(str2));

 

HelloHello가 출력된다.

 

 

문자의 개수를 구하는 함수 length()

// 문자의 개수를 구하는 함수 length()
//SQL에서는 char_length()로 썼었다!
System.out.println(str1.length())

str1 = Hello > 5가 출력된다.

 

 

 

문자열을 슬라이싱 하는 함수 substring()

// 문자열을 슬라이싱 하는 함수 substring()
String data="Hello World~";
System.out.println(data.substring(3));

System.out.println(data.substring(3,7));
// 3부터 7 전까지(=6)의 문자열을 가져와라~ 헷갈리니 검색하자

 

 

1이 아닌 0부터 시작하는 자바의 인덱스를 다시한번 더 신경쓰자! 배열복습

Hello World~는

0 1 2 3 4 5 6 7 8 9 10 11
H e l l o (공백) W o r l d ~

 

로 배열된다.

 

System.out.println(data.substring(3));

3번째 문자열부터 나머지 문자열인 lo World~가 출력된다.

 

System.out.println(data.substring(3,7));

3번째 문자열부터 7번째 문자열 전 (=6번째 문자열)까지 출력해라

lo W가 출력된다.

 

헷갈릴 수 있으니 먼저 검색하고 사용하자~

 

 

문자열을 분리하는 함수 split()

// 문자열을 분리하는 함수 split()
data="빨강, 파랑, 노랑";
str1="010-1234-5678";
//data를 콤마로 분리하자
String[] dataArray=data.split(", ");
for(int i = 0;i <dataArray.length; i++){
    System.out.println(dataArray[i]);
}
// 기준으로 분리. 배열의 형태로 리턴해줌

//str1를 -로 분리하자
String[] strArray =str1.split("-");
for(int i=0; i< strArray.length; i++){
System.out.println(strArray[i]);
}

 

 

문자열이 같은지를 확인하는 함수 equals(),equalsIgnoreCase()

//문자열이 같은지를 확인하는 함수 equals(),equalsIgnoreCase()
//대소문자 정확하게 같은지 확인
System.out.println(data.equals(str1));

//대소문자는 보지않고 내용이 같은지 보는 함수
System.out.println(data.equalsIgnoreCase(str1));

 

 

 

 

문자열의 왼쪽 끝이나 오른쪽 끝에 붙어있는 의미없는 공백을 제거하는 함수 trim()

// 문자열의 왼쪽 끝이나 오른쪽 끝에 붙어있는 의미없는 공백을 제거하는 함수 trim()
data = "         abc@naver.com";
System.out.println(data);

data=data.trim();
System.out.println(data);

 

대문자 소문자 변환하는 함수 toUpperCase(), toLowerCase()

// 대문자 소문자 변환하는 함수 toUpperCase()
System.out.println(data.toUpperCase());
System.out.println(data.toLowerCase());

 

문자열에 특정 문자열이 들어있는지 확인하는 함수 contains()

// 문자열에 특정 문자열이 들어있는지 확인하는 함수 contains()
//data에 @가 들어있니?
System.out.println(data.contains("@"));

 

문자열을 비교하는 함수 (문자열이 크냐, 작냐, 같냐) compareTo()

알파벳순, 가나다순 글자순서 오름차순

//문자열을 비교하는 함수 (문자열이 크냐, 작냐, 같냐) compareTo()
//알파벳순, 가나다순 글자순서 오름차순
data = "abc";
str1 = "cde";

data.compareTo(str1);
//결과는 음수,0,양수로 나온다.
if(data.compareTo(str1) < 0){
    System.out.println("data가 str1보다 작다. data가 문자열이 더 빠른순");
}else if (data.compareTo(str1)==0){
    System.out.println("data가 str와 같다. data가 문자열이 더 빠른순");
}else if(data.compareTo(str1) > 0){
    System.out.println("data가 str1보다 크다. data가 문자열이 더 느린순");
}