public class step4_conditional_repetitive {
public static void main(String[] args) {
/*
논리적인 흐름의 기본인 조건문과 반복문을 알아봅니다.
if문을 활용하여 문자열이 특정 문자열을 포함하는 확인하는 프로그램을 작성합니다.
점수에 따라서 다른 메세지를 출력하는 프로그램을 작성해봅시다.
문자열과 정수형을 각각 조건문을 이용해 활용해보고 그 차이점을 공부합니다.
while을 이용하여 1부터 100까지의 합을 출력하는 프로그램을 작성해봅시다.
for문을 이용하여 삼각형을 출력하는 프로그램을 작성해봅시다
for문을 이용하여 원을 출력하는 프로그램을 작성해봅시다.
*/
String a = "I Love you. ";
if (a.contains("Love")) { // 스트링은 비 원시적 자료형이라고함 내부적으로 클레스 기반으로 만들어저서 내부적 함수가 있다고 했음 contains 함수는 특정한 변수가 어떠한 문자를 포함하는지 알려줌
System.out.println("Me Too."); // 포함하는 경우 실행되는 부분
} else {
// 포함하지 않는 경우 실행되는 부분
System.out.println("I hate you.");
}
int score = 95;
if (score >= 90) {
System.out.println("A+ 입니다");
}
else if (score >= 80) {
System.out.println("B+ 입니다");
}
else if (score >= 70) {
System.out.println("C+ 입니다");
}
else {
System.out.println("F 입니다");
}
String b = "Man";
int c = 0;
// 자바는 string을 비교할때 equal()을 이용합니다. 같을때만 참 반환
// 그이유는 string은 다른 자료형과 다른 문자열 자료형이기 때문
if (b.equals("Man")) {
System.out.println("남자입니다.");
}
else {
System.out.println("남자가 아닙니다.");
}
if (c == 3) {
System.out.println("b는 3입니다.");
} else {
System.out.println("b는 3이 아닙니다.");
}
if (b.equalsIgnoreCase("man") && c == 0) { // equalsIgnoreCase 는 대소문자 구분 안하고 같은지 검사함
System.out.println("참입니다");
} else {
System.out.println("거짓입니다");
}
}
}
문자열 내장 메소드
String 자료형의 내장 메소드 중에서 자주 사용되는 것들에 대해서 알아보자.
equals
equals는 두개의 문자열이 동일한지를 비교하여 결과값을 리턴한다.
다음의 예를 보자.
String a = "hello";
String b = "java";
String c = "hello";
System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력
문자열 a 와 문자열 b 는 "hello"와 "java"로 서로 같지 않다. 따라서 equals 메소드 호출 시 false 를 리턴한다. 문자열 a 와 문자열 c 는 "hello"와 "hello"로 서로 같다. 따라서 true 를 리턴한다.
문자열의 값을 비교할때는 반드시 equals 를 사용해야 한다. == 연산자를 사용할 경우 다음과 같은 경우가 발생할 수 있다.
String a = "hello";
String b = new String("hello");
System.out.println(a.equals(b)); // true
System.out.println(a == b); // false
문자열 a와 b는 모두 "hello"로 같은 값이지만 equals 를 호출했을 때는 true 를 == 연산자를 이용했을 때는 false를 리턴한다. a와 b는 값은 같지만 서로 다른 객체이다. == 은 두개의 자료형이 동일한 객체인지를 판별할 때 사용하는 연산자이기 때문에 false를 리턴한다.
※ 객체에 대해서는 "객체 지향 프로그래밍" 챕터에서 자세하게 다룬다.
indexOf
indexOf는 문자열에서 특정 문자가 시작되는 위치(인덱스)를 리턴한다.
다음과 같은 문자열을 보자.
String a = "Hello Java";
위와 같은 a 문자열에서 "Java"라는 문자열이 시작되는 위치를 알고 싶은 경우 indexOf를 다음과 같이 사용할 수 있다.
String a = "Hello Java";
System.out.println(a.indexOf("Java")); // 6 출력
"Hello Java" 라는 문자열에서 "Java"라는 문자열은 일곱번째 문자('J')부터 시작이다. 결과값이 6으로 나온 이유는 자바는 숫자를 0부터 세기 때문이다.
contains
contains는 문자열에서 특정 문자열이 포함되어 있는지의 여부를 리턴한다.
다음의 예를보자.
String a = "Hello Java";
System.out.println(a.contains("Java")); // true 출력
문자열 a는 "Java"라는 문자열을 포함하고 있기 때문에 true를 리턴한다.
charAt
charAt은 문자열에서 특정 위치의 문자(char)를 리턴한다.
다음과 같은 문자열을 보자.
String a = "Hello Java";
위와 같은 a 문자열에서 "J"라는 문자는 6번째 인덱스에 위치한 문자이다. 6이라는 숫자로 "J"라는 문자를 얻기 위해서는 다음과 같이 charAt을 사용한다.
String a = "Hello Java";
System.out.println(a.charAt(6)); // "J" 출력
"Hello Java" 라는 문자열에서 "J"라는 문자는 일곱번째 문자이다. 하지만 6으로 문자를 찾아야 하는 이유는 자바는 숫자를 0부터 세기 때문이다.
replaceAll
replaceAll은 문자열 중 특정 문자열을 다른 문자열로 바꾸고자 할 때 사용한다.
String a = "Hello Java";
System.out.println(a.replaceAll("Java", "World")); // Hello World 출력
"Hello Java" 라는 문자열에서 "Java"가 "World"로 바뀌었다.
substring
substring은 문자열 중 특정 부분을 뽑아낼 경우에 사용한다.
다음의 예를 보자.
String a = "Hello Java";
System.out.println(a.substring(0, 4)); // Hell 출력
위처럼 substring(시작위치, 끝위치)와 같이 사용하면 문자열의 시작위치에서 끝위치까지의 문자를 뽑아내게 된다. 단 끝위치는 포함이 안된다는 점에 주의하자. 이것은 다음과 같은 수학의 식과 비슷하다.
시작위치 <= a < 끝위치
toUpperCase
toUpperCase는 문자열을 모두 대문자로 변경할 때 사용한다. (모두 소문자로 변경할때는 toLowerCase를 사용한다.)
String a = "Hello Java";
System.out.println(a.toUpperCase()); // HELLO JAVA 출력
split
split 메소드는 문자열을 특정 구분자로 분리하는 메소드이다.
String a = "a:b:c:d";
String[] result = a.split(":"); // result는 {"a", "b", "c", "d"}
위의 예처럼 "a:b:c:d" 라는 문자열을 ":" 문자로 나누어 {"a", "b", "c", "d"} 문자열 배열을 만들수 있다.
배열에 대해서는 조금후에 자세히 알아보자.
문자열 내장 함수 참조 자료
'JAVA > JAVA Basic' 카테고리의 다른 글
JAVA 기초문법 : 기본 입출력, 파일 읽기 (0) | 2022.09.16 |
---|---|
JAVA 기초문법 : 반복문 (0) | 2022.09.16 |
JAVA 기초 문법: 명명 규칙 (변수 등 이름 작성시 규칙) (0) | 2022.09.16 |
JAVA 기초 문법 : 자료형, 10진수,8,진수, 16 진수 출력, 문자열 내장 메서드 substring (0) | 2022.09.16 |
JAVA 기초 문법 : 변수, 상수 만들기 (0) | 2022.09.16 |