본문 바로가기

배운 책들 정리/자바 완전 정복

자바의 정석 9 - java.lang 패키지 (String 클래스)

1 팁

1. 

 

 

 

2 복습

1. 

 

스킵

 

 

3 이론

1. String 클래스의 생성자와 메서드 1

 

 

2. String 클래스의 생성자와 메서드 2

 

 

 

4 실습

1.  파일 및 폴더 생성

 

package j0526;

import java.io.File;

public class C0526_02 {
    public static void main(String[] args) {
        File dir = new File("c:/bbb");
        dir.mkdirs(); // 폴더생성 메소드
        System.out.println("폴더를 생성합니다.");

        File f = new File("c:/bbb/test.txt");
        try {
            f.createNewFile(); // 파일생성 메소드
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();

        }
        System.out.println("파일을 생성합니다.");
    }
}

 

2. 파일에 문자 적기

 

package j0526;

import java.io.File;
import java.io.FileWriter;

public class C0526_02 {
    public static void main(String[] args) {
        // File dir = new File("c:/bbb");
        // dir.mkdirs(); // 폴더생성 메소드
        // System.out.println("폴더를 생성합니다.");

        // File f = new File("c:/bbb/test.txt");
        // try {
        // f.createNewFile(); // 파일생성 메소드
        // } catch (Exception e) {
        // // TODO: handle exception
        // e.printStackTrace();

        // }
        // System.out.println("파일을 생성합니다.");

        // 파일에 문자열 쓰기
        FileWriter fw = null;
        String str = "";
        try {
            fw = new FileWriter("c:/bbb/test.txt");
            for (int i = 0; i < 10; i++) {
                str = str + "글자를 저장합니다. \r \n";
                fw.write(str); // 글자 저장 메소드
                // fw.flush(); //버퍼에 있는 모든것을 저장
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            ;
        } finally {
            try { // 파일 닫는 작업에서 예외처리를 하기 위해 (저장 안정성)
                fw.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        System.out.println("글자가 저장되었습니다.");

    }
}

 

3. 파일에 배열 적용해 문자 쓰기

package j0526;

import java.io.FileWriter;
import java.io.IOException;

public class C0526_03 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = null; // 문자를 저장할 수 있는 객체 생성
        fw = new FileWriter("c:/stu.txt");
        String[] name = { "홍길동", "유관순", "이순신", "강감찬", "김구" };
        String str = "";
        for (int i = 0; i < 5; i++) {
            str = str + (1001 + i) + "," + name[i] + ",100,100,99 \r \n ";
        }
        fw.write(str);
        fw.flush();
        fw.close();

        System.out.println("파일이 저장되었습니다.");
    }
}

 

4. Person 클래스 사용하여 주소 비교 및 복사 방법의 형태

 

//Person 클래스 사용하여 주소 비교

package j0526;

public class C0526_04 {
    public static void main(String[] args) {
        Person p1 = new Person(880101111111L);
        Person p2 = new Person(880102111111L);
        Person p3 = new Person(880101111111L);

        Person p4 = new Person(p1); // 공간분리,깊은복사
        Person p5 = p3; // 주소복사, 얕은복사

        System.out.println(p4.id);

        System.out.println(p1);
        System.out.println(p3);

        if (p1.equals(p3)) {
            System.out.println("같음");
        } else {
            System.out.println("다름");
        }
    }
}
package j0526;

public class Person {
    long id; // 주민번호 8801011111111 13자리

    Person() {
    }

    Person(long id) {
        this.id = id;
    }

    Person(Person p) {
        this.id = p.id;
    }

    public boolean equals(Object obj) {
        Person p = (Person) obj;
        boolean chk = false;
        if (id == (p.id)) {
            chk = true;
        }
        return chk;
    }

    // public String toString() {
    // String str = "주민번호 : "+id;
    // return str;
    // }

}

 

 

5. 비교 후 해시코드 출력

 

package j0526;

public class C0526_05 {

    public static void main(String[] args) {
        // 비교할 두 개의 문자열
        String str1 = "곽상도 전 국민의힘 의원의 '50억 수수 의혹'을 수사하고 있는 검찰이 하나금융지주를 압수수색했습니다.\r\n"
                + "서울중앙지검 반부패수사3부(부장검사 강백신)는 오늘(26일) 오전부터 하나금융지주와 하나은행 금융투자센터 사무실 등에 대해 압수수색을 진행하고 있습니다.\r\n"
                + "곽상도 전 의원의 뇌물 혐의에 대한 1심 무죄 판결 뒤 검찰이 하나은행을 압수수색하는 건 오늘이 처음입니다.\r\n"
                + "검찰은 하나은행 등에서, 대장동 사업 컨소시엄 구성과 관련한 자료를 확보하는 것으로 전해졌습니다.\r\n"
                + "검찰은 대장동 개발 사업 공모가 있었던 2015년, 산업은행 컨소시엄에 참여한 호반건설이 하나은행에 성남의뜰 컨소시엄 이탈을 제안하자, 화천대유 대주주 김만배 씨 부탁을 받은 곽 전 의원이 하나은행에 영향력을 행사해 이를 막아준 것으로 의심하고 있습니다.\r\n"
                + "곽 전 의원은 이 과정에서 그 대가로 아들 병채 씨의 퇴직금 명목으로 50억 원을 받은 혐의를 받고 있습니다.\r\n"
                + "지난해 검찰은 뇌물과 알선수재 혐의로 곽 전 의원을 재판에 넘겼지만, 1심 재판부는 곽 전 의원의 뇌물 혐의에 대해 '하나은행의 이탈 위기가 존재했다고 단정하기 어렵고 곽 전 의원이 실제로 하나금융지주에 영향력을 행사했다고 보기 어렵다'며 지난 2월 무죄를 선고했습니다.\r\n"
                + "검찰은 이 같은 판결에 항소한 뒤 보강 수사를 진행해 왔습니다.";
        String str2 = "곽상도 전 국민의힘 의원의 '50억 수수 의혹'을 수사하고 있는 검찰이 하나금융지주를 압수수색했습니다.\r\n"
                + "서울중앙지검 반부패수사3부(부장검사 강백신)는 오늘(26일) 오전부터 하나금융지주와 하나은행 금융투자센터 사무실 등에 대해 압수수색을 진행하고 있습니다.\r\n"
                + "곽상도 전 의원의 뇌물 혐의에 대한 1심 무죄 판결 뒤 검찰이 하나은행을 압수수색하는 건 오늘이 처음입니다.\r\n"
                + "검찰은 하나은행 등에서 대장동 사업 컨소시엄 구성과 관련한 자료를 확보하는 것으로 전해졌습니다.\r\n"
                + "검찰은 대장동 개발 사업 공모가 있었던 2015년, 산업은행 컨소시엄에 참여한 호반건설이 하나은행에 성남의뜰 컨소시엄 이탈을 제안하자, 화천대유 대주주 김만배 씨 부탁을 받은 곽 전 의원이 하나은행에 영향력을 행사해 이를 막아준 것으로 의심하고 있습니다.\r\n"
                + "곽 전 의원은 이 과정에서 그 대가로 아들 병채 씨의 퇴직금 명목으로 50억 원을 받은 혐의를 받고 있습니다.\r\n"
                + "지난해 검찰은 뇌물과 알선수재 혐의로 곽 전 의원을 재판에 넘겼지만, 1심 재판부는 곽 전 의원의 뇌물 혐의에 대해 '하나은행의 이탈 위기가 존재했다고 단정하기 어렵고, 곽 전 의원이 실제로 하나금융지주에 영향력을 행사했다고 보기 어렵다'며 지난 2월 무죄를 선고했습니다.\r\n"
                + "검찰은 이 같은 판결에 항소한 뒤 보강 수사를 진행해 왔습니다.";

        // 두 문자열을 비교하여 동일한지 확인
        if (str1.equals(str2)) {
            System.out.println("같음");
        } else {
            System.out.println("다름");
        }

        // 각 문자열의 해시코드 출력
        System.out.println("hashCode str1 : " + str1.hashCode());
        System.out.println("hashcode str2 : " + str2.hashCode());

    }

}

 

 

6. 문자와 숫자를 각각 0~10까지 더하는 것의 합

 

// 문자와 숫자를 각각 0~10까지 더하는 것의 합

package j0526;

public class C0526_06 {

    public static void main(String[] args) {
        int sum = 0;
        String str = "";
        for (int i = 0; i <= 10; i++) {
            sum += i;
            str += i + " ";
        }

        System.out.println(sum);
        System.out.println(str);
    }
}

 

7. 문자 찾기

 

// 문자 찾기

package j0526;

import java.util.Scanner;

public class C0526_07 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("찾고자 하는 문자를 입력하세요.");
        String search = scan.next();
        String str1 = "홍길동 홍길순 홍길자 이순신 강감찬 유관순 김구 김유신";
        String str2 = "https://semiconductor.samsung.com/kr/dram/ddr.jsp";
        String str3 = "https://semiconductor.samsung.com/kr/foundry/process-technology.jsp";

        if (str2.endsWith(search)) {
            System.out.println("jsp로 끝납니다.");
        } else
            System.out.println("jsp로 끝나지 않습니다.");

        // contains() - 문자얄 내에 문자가 있는지 확인
        if (str1.contains(search)) {
            System.out.println(search + "(이)라는 글자가 있습니다.");
        } else
            System.out.println(search + "(이)라는 글자가 없습니다.");
    }
}

 

8. 찾는 문자 반복 (없으면 종료)

 

// 찾는 문자 반복 (없으면 종료)

package j0526;

import java.util.Scanner;

public class C0526_08 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = "안녕하세요. 반갑습니다. 좋은 하루 되세요. 오늘 불금요 완전 좋음요";
        int count = 0, searchNum = -1; // 찾는 문자 개수, 찾는 문자 위치

        System.out.println("찾고자 하는 문자를 입력하세요");

        // 교수님이 짠거
        while (true) {
            String search = scan.next();
            searchNum = str.indexOf(search, searchNum + 1); // 찾는 위치 메소드
            if (searchNum != -1) {
                System.out.println("찾는 문자 위치 : " + searchNum);
                count++;
            } else {
                System.out.println("더 이상 찾는 문자가 없습니다.");
                break;
            }
        }

        System.out.println("=====================");
        System.out.println("찾은 문자 개수 : " + count);
        System.out.println("종료합니다.");

        // 내가 짠거
        // while (true) {
        // String search = scan.next();
        // int index = str.indexOf(search, 0);

        // if (str.indexOf(search, 0) == -1) {
        // System.out.println("찾는 문자가 없습니다. 종료합니다 ");
        // break;

        // } else {
        // System.out.println("찾는 문자: " + search);
        // System.out.println("첫 번째로 나타나는 위치 : " + index);
        // count++;
        // }

        // } // while

    }// main
}// clas

 

9. 문자 전처리 방법

 

// 문자 전처리 방법

package j0526;

public class C0526_09 {
    public static void main(String[] args) {
        String str = "        aaa      aaa       aaa         ";
        String str2 = "        bbb,      bbb,       bbb,         ";

        System.out.println("현재 str : " + str);
        System.out.println("--------------------");
        String result = str.trim(); // 앞쪽뒤쪽 공백 제거
        String result2 = str2.replace("bbb", "abc"); // 앞쪽뒤쪽 공백 제거
        String result3 = str2.replace(",", " "); // 앞쪽뒤쪽 공백 제거
        String result4 = str.replace(" ", ""); // 앞쪽뒤쪽 공백 제거
        System.out.println("공백제거 str : " + result);
        System.out.println("문자변경 str2 : " + result2);
        System.out.println("쉼표변경 str2 : " + result3);
        System.out.println("공백전부제거(변경) str : " + result4);

        // str을 앞뒤 공백,사이공백을 모두제거하여 출력하시오.

    }
}

 

 

10. 학번 정보 출력

package Stuproject;

import java.util.Scanner;

public class C0526_10 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String data1 = "1001,홍길동,100,100,99";
        String info3 = "";

        // 배열로 담아 출력하시오
        String[] result = data1.split(",");
        
            // String 문자열을 int로 변환
            
				
            	int stuNo = Integer.parseInt(result[0]);
            	int kor = Integer.parseInt(result[2]);
            	int eng = Integer.parseInt(result[3]);
            	int math = Integer.parseInt(result[4]);
            	// Double.parseInt(resul[2]);
            	// Long.parseInt(resul[3]);
		
        
        String name = result[1];

        Student s = new Student(stuNo, name, kor, eng, math);
        // total,avg 출력
        System.out.println(s.getTotal());
        System.out.println(s.getAvg());

        String[] chk_info = new String[3];
        chk_info[0] = "HTML";
        // chk_info[1] = "CSS";
        // chk_info[2] = "webDesign";

        for (int i = 0; i < chk_info.length; i++) {
            if (i == 0)
                info3 = "," + info3 + "," + chk_info[i];
            else
                info3 = info3 + "," + chk_info[i];
        }

        System.out.println(info3);
        // String info1 = ""+chk_info[0]+","+chk_info[1]+","+chk_info[2]; <-에러가 나옴
        // String info2 = "HTML,CSS,webDesign";

        // 내가 만지작한거

        // while (true) {
        // System.out.println("출력할 것들 ");
        // System.out.println("-------------------");
        // System.out.println(data1);

        // System.out.println("찾고자 하는 문자를 입력하세요");
        // String search = scan.next();

        // if (isNumeric(search)) {
        // int stuNo = Integer.parseInt(search);
        // // 숫자로 검색한 경우의 동작을 여기에 작성
        // } else {
        // // 문자열로 검색한 경우의 동작을 여기에 작성
        // // 예: 이름이 일치하는 학생 정보를 출력하는 등의 작업 수행
        // }

        // } // while

        // }

        // private static boolean isNumeric(String search) {
        // return false;
        // }
    }
}

 

 

5 문제풀이

1. 

 

6 단축키

1. 

 

 

 

* 핵심

- 파일 생성 및 반복문 학습하기

 

 

 

 

* 0523 실습 링크

 

 

GitHub - RosePaku/bigdata_java: 빅데이터_자바의_정석

빅데이터_자바의_정석. Contribute to RosePaku/bigdata_java development by creating an account on GitHub.

github.com

 

728x90
반응형
LIST