본문 바로가기

콤퓨타/Programming) 왕초보 자바

29. (Loops and Conditions) String Methods

오늘은 문자열의 다양한 메서드를 이야기 하는 듯. 

메서드가 무엇을 의미하는지 정확하게 모르겠어서 definition을 만들어내지는 못했으나

일단 배운거 두개. 

1. .equalsIgoreCase 문자열에서 대소문자 구분 무시
2. printf에서 %s는 문자열 %d는 int 를 각각 받는다 

 

 

package application;

public class App {
	public static void main(String[] args) {

		String name = "Joe";
		if (name.equals("Joe")) {
			System.out.println("1. Name is Joe");
		}
			if (name.equals("JOE")) {
				System.out.println("2. Name is JOE!");
			}

	}

}

 

기본적으로 String 의 name 변수 값은 "Joe"로 선언

if 문이 두번 나왔는데, 

하나는 .equals("Joe")

다른 하나는 .equals("JOE") 

대문자로 이루어진 JOE는 무시당하고 1번만 출력된다. 

 

 

 

 

대소문자 구분 없이 인식하고 싶다면? 

.equalsIgnoreCase() 메서드를 쓰면된다. 

package application;

public class App {
	public static void main(String[] args) {

		String name = "Joe";
		if (name.equals("Joe")) {
			System.out.println("1. Name is Joe");
		}
			if (name.equals("JOE")) {
				System.out.println("2. Name is JOE!");
			}
			if (name.equalsIgnoreCase("JOE")) {
				System.out.println("3. Name is Joe");
			
		}

	}

}

1번은 문자열이 정확히 일치하니 출력, 

2번은 메서드가 단순히 .equals 이므로 (대소문자 구분) 출력하지 않음

3번은 대소문자 구분 무시 메서드 이므로 출력

 

 

 

 

이제 여기서 포멧을 사용해보자. 

 

package application;

public class App {
	public static void main(String[] args) {

		String name = "Joe";
		if (name.equals("Joe")) {
			System.out.println("1. Name is Joe");
		}
			if (name.equals("JOE")) {
				System.out.println("2. Name is JOE!");
			}
			if (name.equalsIgnoreCase("JOE")) {
				System.out.println("3. Name is Joe");
			
		}
System.out.printf("The length of '%s' is %d\n", name, name.length());

// %s -> String
// %d -> int

	}

}

 

 

%d는 많이 봤는데 %s는 처음이다. 

코드블럭에 적혀있는대로 %s는 문자열, %d는 숫자를 나타낸다. 

출력값은 ... 문자(char)의 개수를 센다고 한다 

 

 

 

지피티랑 이야기 하다보니, 

%d, %s는 그냥 거들 뿐이고, 

.length() 메서드가 주인공이다. 

.length()는 문자열 객체가 가진 속성 중 하나로, 호출시 문자열의 길이를 숫자로 반환

 

여하튼 그러하다. 

 

 

간단한 연습

 

package application;

public class Practice_01 {

	 public static void main (String[]args) {
		 
		 String name = "Doopal Kwak"; 
		 String greeting = "Anyoung"; 
		 String word = "Baegopayo";
		 
		 System.out.println("1. '"  + name + "'의 길이: " + name.length()+".\n" );
		 System.out.println("2. name equals 'Doopal Kwak'? " + name.equals("Doopal Kwak"));
		 System.out.println("   name equals 'DOOPAL KWAK'? " + name.equals("DOOPAL KWAK") +"\n");
		 System.out.println("3. name equalsIgnoreCase 'DOOPAL KWAK'? "+ name.equalsIgnoreCase("DOOPAL KWAK") + "\n");
		 
		 System.out.println("4. name.toUpperCase():" + name.toUpperCase());
		 System.out.println("   word.toUpperCase():" + word.toUpperCase() + "\n");
		 
		 System.out.println("5. greeting contains 'Baegopayo'? " +greeting.contains("Baegopayo")+ "\n");
		 
		 System.out.println("6. greeting.charAt(5):" + greeting.charAt(5)+ "\n");
		 
		 System.out.println("7. greeting.substring(1,5): " +greeting.substring(1,5)+"\n");
		 
		 String padded ="    ohhmygosh    "; 
		 System.out.println("8. trim(): '" + padded.trim() + "'");
		 
	 }
}

 

과 그 출력물 

 

 

 

 

 

번외) 

궁금증. 

substring에서 (1,5)의 의미는 

1부터 5직전까지 인것 같음 즉, 

1,2,3,4 

왜 저렇게 표현하는가? 

 

1. 반개방 구간 (half-open interval)

2. 길이 바로 계산 가능 

int length = end - start; 
// 5 - 1 = 4
// 추출된 문자열 길이가 바로 나옴

 

3. 연속된 구간 연결이 쉬움 (<--얜 무슨말인지 모르겠음) 

s.substring(0, 1) + s.substring(1, 5) 

4. 인덱스 0부터 시작하는 관습과 맞춤

- 배열 , 문자열 등 대부분 0부터 세므로, 끝값 제외가 계산하게 편함

 

 

하여간 오늘은 여 기까지.. 해피코딩//.