목차
문자
문자배열
- 한 개의 문자 값에 대한 자료형은 char를 이용
- 반드시 ‘’로 한글자만 사용-> 이래야 변수가 X파악가능
- 모든 문자는 그에 해당하는 코드가 있음(컴퓨터는 01010로만 데이터를 기억한다.)
char a = 'a';
char a1 = 'a'; // 문자
char a2 = 97; // ascii 코드
char a3 = '\u0061';// Unicode
ANSI코드: Ascii를 확장하여 8bit로 구성됨.
Unicode: 전세계 언어의 문자를 정의하기 위한 국제 표준 코드 (2byte)
문자열
- 의미: “ ”안에 들어가 있는 모든 문자들
- String class: 문자열을 사용하는데 유용한 많은 기능有
- 위의 문자배열이 힘드므로 이 문자열을 사용한다.
기능
특정 문자열 인덱스 파악
문자열에서 특정 문자열이 시작되는 인덱스를 알고 싶을 때
문자열이름.indexOf("찾을 것");
String word = "hello Java World";
int index = word.indexOf("Java");
System.out.println(index);
특정 문자열이 없으면 -1 출력
두 문자열의 일치 여부?
word1과 word2가 같은지 여부를 알고싶으면?
문자열은 ==이 아닌**equals**을 써야 함
```java
String word1 = "강동원";
String word2 = "정해인";
boolean face = word1.equals(word2);
System.out.println(face);
특정 문자열 대체하기
문자열 가운데 특정 문자열을 원하는 문자열로 바꾸고 싶을때
a를 b로 바꿔라
word1.replace("a", "b")
String word1 = "트럼프는 미국대통령이다";
String word2 = "바이든";
System.out.println(word1.replace("트럼프", "바이든"));
문자열 특정 부분 뽑아내기
문자열 중 특정 부분만 뽑아낼 경우
추출 문자열 이름.substring(시작 인덱스, 끝 인덱스-1)
String word1 = "Hello Java";
String word2 = word1.substring(0, 4);
System.out.println(word2);
특정 문자로 구분된 문자열을 여러 개로 나눠야 할 경우
추출 문자열 이름.split("구분 기호")
String names = "강동원,홍길똥,개똥이,소똥이";
String [] name = names.split(",");
for(int i = 0;i<name.length;i++)
System.out.println(name[i]);
사용자로부터 문자열을 입력받기
Scanner input = new Scanner(System.in);
String word = input.nextLine();
System.out.println(word);
특정 위치의 문자 확인
추출문자열 이름.charAt(위치)
String word = "홍길동";
char middle = word.charAt(1);
System.out.println(middle);
int 값을 String으로 변환
Integer.toString(변환 인트 변수 이름)
int age = 19;
String str = Integer.toString(age);
System.out.println(str);
String을 int로 변환
Integer.parseInt(변환 스트링 변수 이름)
String str = "19";
int age = Integer.parseInt(str);
System.out.println(str);
reverse
String re="";
for(int i = b-1; i>=0;i-- ) {
re += word4.charAt(i);
}
문자열 연산자
개별 문자를 조합해서 단어를 만들기 위해서
[문제] 그럼 다음 코드는 화면에 무엇이 출력될까?
String str = "hello" + 1 + 2 ;
System.out.println(str);
다음 코드는 화면에 무엇이 출력될까?
String str = 1+2+"hello";
System.out.println(str);
(답) 다르게 출력되는 이유
문자열과 다른 것들 연산 중 문자열이 나오면 그 뒤의 요소를 다 문자열로 바꾼다.
같이 풀어볼 문제
[문제 1]
사용자로부터 문장을 입력받았을 때, 단어들의 평균 길이를 계산하시오.
import java.util.Arrays;
public class hey {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
String an ="make america great again trump";
String [] word = an.split(" " );
double m=0;
for (int i= 0; i<word.length;i++) {
m+= word[i].length();
}
double kk = word.length;
double mmm= m /kk;
System.out.println(mmm);
[문제 2]
임의의 단어가 이를 뒤집었을 때와 여전히 동일한 경우 이를 ‘palindrome’이라고 부른다. 예를 들면 “level”은 뒤집어도 “level”이기 때문에 palindrome이고, “hello”를 뒤집으면 “olleh”이기 때문에 처음 단어와 동일하지 않아서 palindrome이 아니다. 사용자로부터 임의의 단어를 입력받아 단어가 ‘palindrome’인지 아닌지 판단하는 하시오.
import java.util.Scanner;
public class mmmmmm {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a = input.nextLine();
if (a.length()%2==0) {
int b= a.length()/2;
String word1 = a.substring(0, b);
String word2 = a.substring(b,a.length());
String aa="";
for(int i = b-1; i>=0;i-- ) {
aa += word2.charAt(i);
}
//System.out.println(aa);
boolean face = word1.equals(aa);
System.out.println(face);
}
else {
System.out.println(a.length());
int b= (a.length()-1)/2;
String word3 = a.substring(0, b);
String word4 = a.substring(b+1,a.length());
String re="";
for(int i = b-1; i>=0;i-- ) {
re += word4.charAt(i);
}
SWAP
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int num[] = new int[5];
for (int i = 0; i < num.length ; i++) {
int hi = scan.nextInt();
num[i] = hi;
}
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length-1; j++) {
if (num[j] > num[j+1]) {
int temp = num[j];
num [j] = num[j+1];
num[j+1] = temp ;
}
}
}
for(int k =0 ;k< num.length ; k++) {
System.out.println(num[k]);
}
}
}