import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//java 에서는 문자열은 객체로 관리함
// 객체:Data + 기능 (Function: 함수-->메소드)
// 객체는 기능이 있다는 건데 그것은 System.out. 이점을 찍으면 쓸수 있는 기능들을 보여주는 것처럼 문자열도 기능이 있는 객체로 인식
// 객체는 이름을 가질수 없다. 보통은 int a= 하면서 변수의 이름을 설정하는데 문자열은 그게 안된다.
//int는 4 바이트 크기를 가졌다 문자열은 글자 한개당 2바이트씩 Hello 는 5글자라서 10바이트
// String s; 하면 이크기는 Hello이라는 문자열의 주소를 참조했다라고 생각 하면 된다 (참조 변수)
//String s;의 크기는 8바이트
int a,b;
a= 10;
b= 10;
System.out.println(a==b);
System.out.println(a);
System.out.println(b);
System.out.println();
String s1, s2;
s1= new String("Hello");
s2= new String("Hello"); //문자열의 비교는 ==을 쓰지 않는다 글자는 같지만 글자를 가지고 있는 주소가 다르기때문에 값을 비교한게 아니다.
System.out.println( s1==s2); //주소끼리 비교
System.out.println(s1); //자바에서 참조변수를 출력하면 원래는 주소가 나와야하지만 그 참조변수가 참조하는 객체의 기능 중.toString()이라는 기능이 자동 발동!!
System.out.println(s2.toString());
System.out.println();
//결론 자바에서 문자열은 객체임
// 객체는 new 키워드로 생성함 그 객체를 제어하는 참조 변수가 필요함
String s= new String("Hello");
System.out.println(s.toString()); //객체의 정보 출력기능.toString()
System.out.println(s); //참조변수명만 출력하면 자동. toString()
//문자열을 매우 자주 사용하는 데이터의 유형임. 매번 new String()쓰기 귀찮음
String ss="Nice"; //자동 new String("Nice"); 가됨
System.out.println(ss.toString()); //객체의 기능사용
System.out.println(ss.toUpperCase()); //객체의 기능사용
System.out.println(ss);
System.out.println("==============");
//문자열 String 객체의 유용한 기능들(gunction:함수-->metgod)
String str= new String("Hello");
//1.글자수를 리턴해주는 기능
int len = str.length();
System.out.println("글자수 : "+len);
//2.문자열의 값 비교(많이 쓰는것)
System.out.println(str=="Hello"); //주소비교 : false
System.out.println(str.equals("Hello")); //값 비교 : true
System.out.println(str.equals( new String("Hello")));
String s3= new String("Hello");
System.out.println(str.equals(s3));
System.out.println("Hello".equals(str));
//2-1 대소문자 비교
System.out.println(str.equals("Hello"));
System.out.println(str.equalsIgnoreCase("hello")); //대소문자 달라도 같은 글씨면 같은걸로 인식
//3. 문자열에서 한문자(character) 뽑아오기
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));
//System.out.println(str.charAt(5)); error 글자수는 4개라서 그래도 명령어에는 오류사항이 아니임
for(int i=0; i<str.length(); i++) {
System.out.println(str.charAt(i));
}
//한문자를 키보드로 받기
Scanner scan = new Scanner(System.in);
// String sss= scan.next();//문자열 입력
//char c= sss.charAt(0);
// System.out.println("입력받은 한문자 : "+c);
//4.문자열 안에서 특정 글자가 몇번쨰에 존재하는지...인덱스 번호를 리턴해줌 특정 글자를 분별할때
int index=str.indexOf('H');
System.out.println(index);
System.out.println(str.indexOf('l')); //앞에서부터 찾는거
System.out.println(str.lastIndexOf('l')); //뒤에서부터 찾는거
System.out.println(str.indexOf('G')); //못찾으면 -1
System.out.println(str.indexOf("el")); //한문자만 되는게 아니라 문자열도 가능
System.out.println(str.indexOf("eo"));
//5. 문자열안에 특정 문자열이 포함되없는지 여부를 리턴[true/false]
str= new String("Hello world! Hello acdroid! nice world");
boolean bb =str.contains("world");
System.out.println(bb);
System.out.println(str.contains("Android"));
//6.문자열을 결합해서 새로운 문자열을 만들어 리턴해줌
String str2=str.concat("nice android");
System.out.println("원본 str : "+str); //원본 불변
System.out.println("새로운 str : "+str2);
//문자열을 결합하는 코드는 매우 빈번히 사용됨. 하지만 concat()기능메소드는 잘 안씀.
//자바의 문자열 결합 연산자 +
String str3=str+"good android!";
System.out.println("str3 : " +str3);
System.out.println("str : " +str); //원본 불변
//7.문자열이 특정 문자로 시작되는가? 여부를 리턴 [true/false]
System.out.println(str.startsWith("Hello"));
System.out.println(str.startsWith("world"));
//7-1 문자열이 특정 문자로 끝나는가?
System.out.println(str.endsWith("world"));
System.out.println(str.endsWith("world!"));
//8.문자열을 모두 대문자로 단 원본은 불변
System.out.println(str.toUpperCase()); // 대문자
System.out.println(str.toLowerCase()); // 소문자
System.out.println(str);//원본은 그대루
//9. 문자열의 앞뒤 공백문자를 제거
str="Hello ";
System.out.println(str.equals("Hello"));
System.out.println("["+str+"]"); // 시각적으로 볼려고 띄어쓰기를
System.out.println("["+str.trim()+"]");
System.out.println(str.trim().equals("Hello"));
//10. 문자열의 특정문자를 다른 글자를 대처하여 새로운 문자열을 리턴해줌
str="Hello world! Hello android! noce world!"; //자동 new String()
System.out.println(str.replace('H','k')); //**많이 쓰는 명령어 H를 K로 바꿔주는거 문자열도 가능
System.out.println(str.replace("android", "ios")); //소대문자 잘 구분해서 해야된다
System.out.println(str.replace("Hello", "good")); //찾는 글자가 없으면 그냥 원본 글씨 그대로 출력 //비속어를 걸러낸다
//이를 이용하여 비속어들을 걸러냄.
System.out.println(str.replace("fuck!", "XXX")); //걸러주기는 하지만 원본은 그대루니까
str= str.replace("욕1", "ㅁㅁㅁ"); //이방법으로 최종 바꿔치기를 함
//문자열 안에 있는 공백 문자를 제거해야 하는 상황이 있다면??
System.out.println(str.replace(" ", ""));
//11.문자열을 특정 위치에서 잘라내기
String sss=str.substring(6); //6번 인덱스 위치부터 뒤에 문자열만 잘라서 리턴
System.out.println(sss);
String sss2=str.substring(6,12); //6번 인덱스 부터 12번 인덱스 전까지..
System.out.println(sss2);
//12.글씨의 대소비교[이름순으로 정렬...같은 기능 만들때]
char ch1= 'a';
char ch2= 'b';
System.out.println(ch1>ch2); //문자 비교 X ASCII번호 비교
String s5="aaa";
String s6="aab"; //-나오면 앞에 글자 +숫자가 나오면 뒤에 숫자
//System.out.println(s5>s6); //error 문자열은 주소라서 대소비교 x
System.out.println(s5.compareTo(s6));
//13. 문자열을 특정 글자 기준으로 여러개의 문자열로 분리해서 리턴해주는 기능
str="android,ios,window,linux,world";
String[] aaaa=str.split(","); //영어만 이렇게 끊는다 한글은 안됨 //리턴이 문자열 배열!
System.out.println(aaaa[0]);
System.out.println(aaaa[1]);
System.out.println(aaaa[2]);
System.out.println(aaaa[3]);
System.out.println(aaaa[4].length() );
'이론수업' 카테고리의 다른 글
자바의 기초(클래스,객체,필드,메소드,변수) (0) | 2024.01.10 |
---|---|
자바-클래스(class) 4가지방법 (2) | 2024.01.09 |
자바-메소드(Method) 4가지 형태 (0) | 2024.01.08 |
자바-Array 이론수업 (1) | 2024.01.08 |
자바 변수 기초타입(byte,char,shart.int,long,float,double) (1) | 2024.01.05 |