문자열 생성하는 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이라는 특별한 메모리 영역에 저장된다.
이 영역은 동일한 문자열 리터럴이 여러 번 사용될 때, 메모리를 절약하기 위해 동일한 객체를 재사용한다.
따라서 같은 리터럴로 생성된 문자열들은 동일한 메모리 주소를 참조하게 되어 메모리 효율성이 높다!
코드가 더 깔끔하기도하고요.
Sting은 대문자인데
int, double은 왜 소문자일까?
C 언어에서 int, double, float와 같은 기본 데이터 타입은 예약어(keyword)로 정의되어있다.
반면, Java에서 String은 클래스로 정의되어 있기 때문!
int, float, double도 자바 클래스로 생성 가능하다.
//정수 생성하는 방법
//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가 문자열이 더 느린순");
}