쌍용교육(JAVA)/JAVA

쌍용교육 -JAVA 수업 10일차 Spring(다양한 함수들)

구 승 2024. 4. 11. 17:25
package kr.s20.object.lang;
/*
 * 문자열 - 명시적으로 객체
 * String s = new String("하늘);
 * String s3 = new String("하늘);
 *메모리 안에 하늘이라는 객체가 각자 생성된다.(2개의 하늘 객체가 메모리에 들어감)
 * 
 * 문자열 - 암시적으로 객체
 * String s2 = "바다";
 * String s4 = "바다";
 * 메모리 안에는 바다라는 한 개의 객체를 s2와 s4가 서로 공유한다.(바다 라는 객체 1개만 존재)
 */
public class SpringMain01 {
	public static void main(String[] args) {
		//암시적으로 문자열 생성
		//같은 문자열을 사용할 경우 객체를 공유
		String str1 = "abc";
		String str2 = "abc";

		//객체 비교
		if(str1 == str2) {
			System.out.println("str1과 st2는 같은 객체"); //암시적으로 객체를 만들면 한 개 객체를 서로 공유하기 때문 
		}else {
			System.out.println("str1과 str2는 다른 객체");
		}

		//문자열 비교
		if(str1.equals(str2)) {
			System.out.println("str1과 str2의 내용이 같다.");//객체도 같고 문자열도 같다.
		}else {
			System.out.println("str1과 str2의 내용이 다르다");
		}
		System.out.println("------------------");

		//명시적으로 문자열 생성(문자열이 같아도 객체를 따로만든다)
		//같은 문자열을 사용해도 객체를 따로 생성(공유X)
		String str3 = new String("Hello");
		String str4 = new String("Hello");//자바는 대소문자를 구분하기 때문에 hello로 쓴다면 문자열도 달라진다.
/////////////////////////////////////////////////////////////////////////////////////////////////////
		//객체 비교
		if(str3 == str4) { //hello라는 문자가 같은지를 비교한것이 아닌 메모리안에 있는 객체가 같은지를 확인하는 방법.
			System.out.println("str3과 st4는 같은 객체");
		}else {
			System.out.println("str3과 str4는 다른 객체");

		}

		//문자열 비교
		if(str3.equals(str4)) {
			System.out.println("str3과 str4의 내용이 같다.");//객체는 다르지만 문자열은 같다.
		}else {
			System.out.println("str3과 str4의 내용이 다르다");
		}
		System.out.println("------------------");
		
		String str5 = "bus";
		String str6 = "BUS";
//////////////////////////////////////////////////////////////////////////////////////////////////
		//대소문자 구분하지 않고 문자열 비교
		//(변수.equalsIgnoreCase(비교 할 변수))
		if(str5.equalsIgnoreCase(str6)) {
			System.out.println("[대소문자 구분없이 비교]str5와 str6의 내용이 같다");
		}else {
			System.out.println("[대소문자 구분없이 비교]str5와 str6의 내용이 다르다");
		}
	}
}

str1과 st2는 같은 객체
str1과 str2의 내용이 같다.
------------------
str3과 str4는 다른 객체
str3과 str4의 내용이 같다.
------------------
[대소문자 구분없이 비교]str5와 str6의 내용이 같다

package kr.s20.object.lang;

public class SpringMain02 {
	public static void main(String[] args) {
		String s1 = "Kwon Sun Ae";
				   //012345678910, length(길이) = 11
		
		int index = s1.indexOf('n'); //'n'이 위치한 인덱스를 반환하는 함수 <.indexOF(문자)>
		System.out.println("맨 처음 문자 n의 위치 : " +index);
		
		index = s1.indexOf("Sun");// 단어가 아닌 sun이라는 문자열을 넣을 시 맨 앞에 있는 S의 위치만 반환한다.
									// 즉 문자열의 모든 위치는 나타내지않고 맨 앞만 나타냄.
		System.out.println("문자 Sun의 위치"+index); 
		
		index = s1.lastIndexOf('n');//indexOf의 반대, indexOf는 앞에서부터 찾지만 lastIndexOf는 뒤에서부터 찾는다.
									//그래서 Kwon의 n이 아닌 sun의 n을 반환한다.
		System.out.println("마지막 문자 n의 위치 : "+ index);
		
		char c = s1.charAt(index); //바로 위에서 index가 n으로 지정되어있었기 때문에 c에는 n의 위치인 7이 들어간다.
		System.out.println("지정한 인덱스의 문자 추출:"+c);    
		
		index = s1.indexOf('S');
		String str = s1.substring(index); //문자열 추출. index의 값부터 뒤에 값들을 반환한다. index는 S이기 때문에 S가 나오기 전까지의 문자들은 넘기고 S를 찾는다.
		System.out.println("대문자 S부터 끝까지 잘라내기 : "+ str);
		
		str = s1.substring(index,index+3);//index = 5, 즉 5와 8을 지정
		System.out.println("인덱스 5부터 인덱스 8전까지 문자열 추출: " + str); //8이 출력되는 것이 아닌 8 '전'까지 출력. index위치 567이 출력
		
		int length = s1.length();
		System.out.println("문자열의 길이: "+length);
		
		//구분자를 이용해서 문자열 잘라내기
		String[] array = s1.split(" "); //split(나누려는 기준값) 문자를 잘라서 첫번째 문자는 인덱스 0번째부터 순서대로 넣는다.
		for (int i =0; i<array.length; i++) {
			System.out.println("array["+i+"]:"+array[i]);
		}
	}
}

맨 처음 문자 n의 위치 : 3
문자 Sun의 위치5
마지막 문자 n의 위치 : 7
지정한 인덱스의 문자 추출:n
대문자 S부터 끝까지 잘라내기 : Sun Ae
인덱스 5부터 인덱스 8전까지 문자열 추출: Sun
문자열의 길이: 11
array[0]:Kwon
array[1]:Sun
array[2]:Ae

package kr.s20.object.lang;

public class SpringMain03 {
	public static void main(String[] args) {
		String s1 = "   aBa   ";
		String s2 = "abc";
		int a = 100;
		String msg = null;
		
		msg = s1.toUpperCase(); //소문자를 대문자로 바꿔주는 함수
		System.out.println("msg:"+ msg);
		
		msg = s1.toLowerCase(); //대문자를 소문자로 바꿔주는 함수
		System.out.println("msg:"+ msg);
		
		msg = s1.replace("aB", "b"); //old 문자를 new 문자로 대체 (aB를 b로 바꾸는 함수)
		System.out.println("msg:"+ msg);
		
		msg = s1.trim(); //앞뒤에 공백 제거
		System.out.println("msg :"+msg);
		
		//문자열(   aBa   ) 중에 메서드의 인자로 전달된 문자열이 포합되어있는지 검증(aB가 aBa에 인자로 포함되어있기 때문에 true)
		boolean f = s1.contains("aB");
		System.out.println("f = " +f);
		
		//메서드의 인자로 전달된 문자열로 시작하는지 검증
		f = s2.startsWith("ab"); //abc 문자열에서 ab로 시작하는지. ab로 시작하니 true 
		System.out.println("f = " +f);
		
		//메서드의 인자로 전달된 문자열로 끝나는지 검증
		f = s2.endsWith("bc");//abc 문자열에서 bc로 끝나는지. bc로 끝나니 true
		System.out.println("f = " +f);
		
		//int -> String
		msg = String.valueOf(a);//메서드를 이용해서 바꾸는 방법
		msg = a + ""; //메서드를 이용안하고 문자열로 바꾸는 방법 <""> 빈문자열과 합치면됨
		
	}
}

msg:   ABA   
msg:   aba   
msg:   ba   
msg :aBa
f = true
f = true
f = true

package kr.s20.object.lang;
import java.util.Scanner;
public class SpringMain04 {
	public static void main(String[] args) {
		/*
		 * [실습]
		 * 입력 받은 문자열을 한 문자씩 읽어서 역순으로  표시
		 * 
		 * [입력 예시]
		 * 문자열: hello
		 * 
		 * [출력 예시]
		 * olleh
		 */
		Scanner input = new Scanner(System.in);
		System.out.print("문자열 : ");

		String str = input.nextLine();

		
		
		for(int i=str.length()-1; i>=0; i--) {
			System.out.print(str.charAt(i));
		}
		/*
		String num = "";
		
		for(int i=str.length()-1; i>=0; i--) {
			char c = str.charAt(i); 
			num += c;       
			
		}
		System.out.println(num);
		*/
		
		
		
		input.close();
	}
}

문자열 : hello
olleh
package kr.s20.object.lang;

import java.util.StringTokenizer;

public class SpringMain05 {
	public static void main(String[] args) {
		
		/*
		 * [실습}
		 * 아래 문자열의 대문자 -> 소문자, 소문자 -> 대문자
		 */
		String str = "abcMDye-4W?EWzz";
		String result = "";
		for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i); //charAt = String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환해주는 녀석 
            							//(i)의 괄호는 문자열에서 문자의 순서를 나타내는 것
            if (ch >= 65 && ch <= 90) { // 대문자인 경우 소문자로 변환
            	//char -> String     		 소문자로 변환
            	result += String.valueOf(ch).toLowerCase();
            } else if (ch >= 97 && ch <= 122) { 
            	//char -> String     		 대문자로 변환
                result += String.valueOf(ch).toUpperCase();// 소문자인 경우 대문자로 변환
            } else { // 알파벳이 아닌 경우 그대로 유지
                result += ch;
            }
        }
        System.out.println(result);
        System.out.println("--------------------");
        
        String result2 = "";
        //				  String -> char[] 로 바꿔주는 함수<.toCharArray()>
        for (char c : str.toCharArray()) {
        	//대문자이면 true반환
        	if(Character.isUpperCase(c)) {
        					//소문자로 변환
        		result2 += Character.toLowerCase(c);
        					//소문자이면 true
        	}else if(Character.isLowerCase(c)) {
        					//대문자로 변환
        		result2 += Character.toUpperCase(c);
        	}else {
        		result2 +=c;
        	}
        }
        System.out.println(result2);
        System.out.println("--------------------");
        
        
        
        String result3 = "";
        for (int i =0; i<str.length();i++) {
        	char c = str.charAt(i);
        	if(c >=65 && c <= 90) {//대문자
        					//소문자로 변환
        		result3 += (char)(c+32); //형변환을 해야됨 why? 그냥 하면 아스키코드 형태로 나옴.
        	}else if (c >= 97 && c <=122) { //소문자
        					//대문자로 변환
        		result3 +=(char)(c-32);  //형변환을 해야됨
        	}else {
        		result3 += c;
        	}
        }
        System.out.println(result3);
        
        
    }
}

ABCmdYE-4w?ewZZ
--------------------
ABCmdYE-4w?ewZZ
--------------------
ABCmdYE-4w?ewZZ