String 클래스

소정·2023년 1월 19일
0

Java

목록 보기
6/23

Stirng의 특징

  • GUI 환경에선 사용자의 입력이 모두 String으로 들어온다
  • 자바에서 문자열을 무조건 객체로 만들어야한다=>String 클래스 사용
  • c언어와 다르게 문자열 끝문자 갖고 있지 않다 -> 객체로 다루기 때문에
  • 참조 변수의 대입은 값 복사가 아니라 주소값을 복사하기 때문에 같은 객체를 바라본다(공유)
  • Stirng new 안쓰고 만든 객체는 힙 영역중에서도 String constantPool에 만들어짐
    => 지 나름대로 판단을 함 new String과 그냥 String s = "Hello"가 만들어지는 영역이 다름 new키워드 빼고 하면 시스템이 판단하여 자동 new를 붙여 만드는데 기존에 같은 글자가 있으면 새로 만들지 않고 기존에 있는 주소값을 준다
  • String 객체는 한번 만들어지면 글자수도 글자모양도 바꿀 수 없다 절대로 바꿀 수 없다(상수화 됨) =>[immutable 성질]


Stirng의 13가지 메소드

String str = new String("Hello"); //원래 명시방법

//1. 문자열 데이터의 길이(글자수)를 리턴해 주는 기능(method)
int leg = str.length();
System.out.println(leg);
		
//2. 문자열값 비교 기능
System.out.println(str =="Hello"); //주소값 비교하기 때문에 false
System.out.println(str.equals("Hello")); //값 자체 비교 true
		
String s1 = "Hello";
System.out.println(str.equals(s1));
		
System.out.println("Hello".equals(s1)); // "Hello" 가 객체인 이유 .했을때 메소드가 나옴
		
//2-1대소문자 비교
System.out.println(str.equals("hello")); //flase - 아스키코드가 다르니까 대소문자 구분
System.out.println(str.equalsIgnoreCase("hello")); //ture - 대소문자 무시 
		
//3.문자열 안에서 큭정 char만 얻어오기
char ch =str.charAt(0);
		
System.out.println("한 문자 " + ch); //
System.out.println(str.charAt(1)); //
System.out.println(str.charAt(2)); //
System.out.println(str.charAt(3)); //
System.out.println(str.charAt(4)); //

for(int i=0;i<str.length(); i++) {
			System.out.println(str.charAt(i));
		}
		
//Scanner 객체를 이용하여 char한문자 입력 받아보기
Scanner sc = new Scanner(System.in);
		
String s2 = sc.next(); //문자열로 입력 받아서
char c = s2.charAt(0); // 한문자 꺼내기
System.out.println("c : "+c);

//4.문자열안에 특정한 문자열이 포함되어 있는지 여부
String s = "Hello world! Hello android! nice world";
boolean b =s.contains("world");
System.out.println(b);

//5.문자열안에 특정한 문자열이 몇번째 위치에 있는지 리턴
int index = s.indexOf('A');
System.out.println(index); //-1 빈환 없단 뜻이지
System.out.println(s.indexOf('e')); //여러개면 첫번째거 알려줌
System.out.println(s.lastIndexOf('e')); //뒤에서 부터 찾는 메소드
		
//5-1. 특정 문자열의 시작위치도 알려줌
index = s.indexOf("android");
System.out.println(index);
		
//5-2. 특정 위치부터 검색 요청도 가능
index = s.indexOf("Hello", 5); //5번 인덱스 위치부터 검색 시작
System.out.println(index);
		
		
//6. 문자열을 결함하는 기능	
String sss = s.concat(" Nice Android"); //concat은 두개의 글씨를 붙이면 원래 있는 것에 붙이는 게 아니고
//두개를 붙인 새로운 글씨를 메모리에 저장한 것이다
		
System.out.println("원본 s : "+s); ///원본 불변
System.out.println("붙인  : "+sss);
//.concat()은 잘 사용하지 않음. why? 결합 연산자(+)의 제공때문
		
String s4 = s + " Hi Hi"; // + 가 내부적으로 concat 을 해줌
System.out.println(s4);
		
		
//7. 문자열이 특정한 문자열로 시작되는지 여부
System.out.println( s.startsWith("Hello") ); //ture
System.out.println( s.startsWith("world") ); //false
		
//7-1. 특정문자열로 종료되는지 여부
System.out.println(s.endsWith("Hello"));
System.out.println(s.endsWith("world")); 
		
		
//8. 대소문자
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase());
System.out.println(s);
		
//원본을 바꾸고 싶으면 원본참조'변수'에 새로운 문자열객체를 대입
s = s.toUpperCase();
System.out.println(s);
		
		
//9. 문자열의 앞뒤 공백 제거
s= "             Hello      ";
System.out.println("["+s+"]");
s=s.trim();
System.out.println("["+s+"]");
		
//10. 특정문자 바꿔치기
s="Hello world! Hello android! nice world!";
System.out.println(s.replace('o', ' ')); //있는 건 다 바뀜
		
//10-1. 
System.out.println(s.replace("android", "ios")); //비속어 걸러내기 가능
		
//10-2.중간 공백문자 삭제
System.out.println(s.replace(" ", "")); // "" : 빈 문자열
		
//11.문자열 잘라내기
System.out.println(s.substring(6)); //6번 뒤로 있는 문자열을 잘라내서 리턴
		
//11-1 범위지정 자르기
System.out.println(s.substring(6, 12));//6~11번 까지
		
//12. 문자열값의 대소비교[문자열 정렬때 사용] => 안씀~
String s7 = "aad";
String s8 = "bbb";
//System.out.println(s7 < s8 ); //주소끼리 대소비교해서 error
System.out.println(s7.compareTo(s8)); //-3 => 아스키번호 차이 알려줌 
System.out.println(s8.compareTo(s7)); //3

//13. 문자열을 특정문자를 기준으로 분리해서 여러개의 문자열 배열로 리턴
s = "android,ios,web";
//s = "android,ios,web,"; //빈문자열은 버전업되면서 무시해줌 
		
String[] arr =s.split(",");

for(int i=0;i < arr.length; i++) { //배열은 lenth를 멤버변수로 가지고 있다
	System.out.println(arr[i]);
}



String class의 static method

객체없이 사용하는 static 메소드

//객체없이 사용하는 static 메소드
//static 메소드 : 객체 생성 없이 사용할 수 있는 메소드 
// 클래스명.메소드명();
		
//1. 특정 포멧(몸양/형식)의 문자열을 생성하고 싶을 떄 사용하는 기능(new 대신)
int hour = 13;
int min = 15;
int sec = 24;
System.out.println(hour + ":" + min + ":" + sec);
		
		
//근무환경에서는
String ss = String.format("%02d : %02d : %02d", hour, min,sec);
		
System.out.println("시간 : "+ss);
		
		
//2. .valueOf() : 기본형 자료형 (primitive)를 객체로 변환하는 메소드
int num = 100;
String s10 = String.valueOf(num); // 100 --> "100"
System.out.println(s10.length()); //객체가 됨
		
String s11 = String.valueOf(3.14); // 100 --> "100"
System.out.println(s11.length()); //객체가 됨
		
String s12 = String.valueOf(true); // 100 --> "100"
System.out.println(s12.length()); //객체가 됨
		
//GUI 환경에서 기본형을 문자열로 변동하는 코드는 빈번함
//하지만 자주 사용되지않음 => 결함연산자 +를 이용하면 더 편해서	
String s13 = 1000 + "";
System.out.println(s13.length()); //객체가 됨
		
		
//반대로, 문자열을 기본형으로 반환하고 싶다면?
//이 기능을 가진 클래스들은 static 메소드를 사용
// 이런 클래스를 Wrapper 클래스(8개)라고 부름 : 
//Boolean, Byte, Character, Short, Integer, Long, Float, Double
String s14 = "5"; 
String s15 = "1"; 
		
int aaaaaaa = Integer.parseInt(s14) / Integer.parseInt(s15);

System.out.println(aaaaaaa);

int n = Integer.parseInt("5000");
profile
보조기억장치

0개의 댓글