- concat 함수 - 문자열+문자열
- compareTo 함수 - 문자열 비교
- compareToIgnoreCase 함수 - 대소문자달라도 같은걸로 인식
- valueOf 함수 - 기본자료형값을 문자열로 바꾸기
- concat함수 - 문자열+기본자료형
- string이 메모리에 올라갈때 어떻게 되는가 ([011]복습)
- 문자열출력(toString메소드, printf메소드)
- 배열
**이클립스 F3에 있는것, 문자에 있는 노란박스 설명 꼭 보기 - 실력이 는다.
concat 함수
package java_1208; public class StringConcat { public static void main(String[] args) { String st1 = "Coffee"; String st2 = "Bread"; String st3 = st1.concat(st2); System.out.println(st3); String st4 = "Fresh".concat(st3); System.out.println(st4); } }//CoffeeBread //FreshCoffeeBread

compareTo 함수
:기준값.compareTo( 비교대상 )
public class StringConcat { public static void main(String[] args) { String st1 = "Lexicographically"; String st2 = "lexicographically"; //앞에 대소문자가 다름 int cmp; if (st1.equals(st2)) System.out.println("두 문자열은 같습니다."); else System.out.println("두 문자열은 다릅니다."); cmp = st1.compareTo(st2); if (cmp == 0) System.out.println("두 문자열은 일치합니다."); else if (cmp < 0) System.out.println("사전의 앞에 위치하는 문자 : " + st1); else System.out.println("사전의 앞에 위치하는 문자 : " + st2); if (st1.compareToIgnoreCase(st2) == 0) System.out.println("두 문자열은 같습니다."); else System.out.println("두 문자열은 다릅니다."); } }//두 문자열은 다릅니다. //사전의 앞에 위치하는 문자 : Lexicographically //두 문자열은 같습니다.
//str1.compareTo(st2) → str1 기준으로 비교하는것
compareToIgnoreCase 함수
: 대소문자여도 서로 같은걸로 인식
String.valueOf 함수 (꼭 외우기)
:기본 자료형의 값을 문자열로 바꾸기

concat 함수
문자열+문자열 ok / 문자열+기본자료형 ok


String하고 int는 못더해줌
concat으로 한쪽으로 변환 해줘야 함.
//age : 17
**문자열은 메모리에 하나하나 char처럼 잡는다
String 객체를 표현하는 값은 char의 배열이다.
String 객체 대부분은 원시 타입처럼 취급한다. 그러므로 String 리터럴을 생성할 때 new 키워드를 이용할 필요가 없다.
실제 컴파일할 때 String 리터럴("문자")은 String 객체로 생성된다.
String helloString1 = new String("Hello World!");
String helloString2 = "Hello World!";
assertEquals(helloString1, helloString2);
위의 두 객체는 같으며 같은 값으로 취급된다. 따옴표 안에 있는 값들의 리터럴을 String 객체로 생성한다.
문자열결합의 최적화

StringBuilder는
변한다.(!=immutable)
- 뒤에 여러값을 넣을 수 있다.
StringBuilder 함수
public class prac { public static void main(String[] args) { //문자열 "123"이 저장된 인스턴스의 생성 StringBuilder stbuf = new StringBuilder("123"); stbuf.append(45678); //문자열 덧붙이기 System.out.println(stbuf.toString()); stbuf.delete(0,2); //문자열 일부 삭제 System.out.println(stbuf.toString()); stbuf.replace(0, 3, "AB"); //문자열 일부 교체 System.out.println(stbuf.toString()); stbuf.reverse(); //문자열 내용 뒤집기 System.out.println(stbuf.toString()); String sub = stbuf.substring(2, 4); //일부만 문자열로 반환 System.out.println(sub); } }//12345678 //345678 //AB678 //876BA //6B
.toString(→String빌더) 을 쓰는 이유. toString으로 고슬링이 오버라이딩을 안시켜줘서?
StringBuffer 함수

문자열출력
toString 메소드

Box클래스가 출력돼서 Camera(문자열)로 나옴!! → 다형성이 적용돼서 나오는것임
printf 메소드
배열
:연속된 공간을 만들어주는 것.

참조형객체

↑박스형객체를 가지고있음. [5]개면 20byte.
**
객체생성은했는데 값이 안들어갔을경우-컴파일러가 기본적으로 값넣어줌
인스턴스변수에 대해서는 초기화를 시켜줌
참조형에는 null값을 넣어줌. int,double에서는 0값을 넣어줌
배열도 객체생성했을때 컴파일러가 기본적으로 값넣어줌. -0넣어줌
↓무조건외우기★

그림 무조건 이해하고 외우기!!
←주소값이 들어가있다.
println에 객체(레퍼런스 참조형)를 넣게되면 null이면 null뿌림. toString을 호출.
↕같은거!
public class Box { private String conts; Box(String cont) { this.conts = cont; } public String toString() { return conts; } public static void main(String[] args) { Box[] ar = new Box[3]; ar[0] = new Box("First"); ar[1] = new Box("Second"); ar[2] = new Box("Third"); System.out.println(ar[0]); //println에 참조형객체가 들어옴 System.out.println(ar[1]);//만약 값없으면 null출력. System.out.println(ar[2]); } }//First //Second //Third
오늘의 문제
1. String 클래스에서 concat 메서드를 설명하시오.
문자열+문자열을 더해줄 때, 문자열+기본자료형을 더해줄 때 필요하다.
"문자열1" + "문자열2" 연결의 경우, "문자열1".concat("문자열2") 와 같은 방법으로 연결
2. str.substring(2, 4); substring 사용법에 대하여 설명하시오.
일부만 문자열로 반환시키는 문자열자르기 함수다.
ex)
String str = "123456";
StringBuilder stbuf = new StringBuilder("123456")
str.substring(2);//3456 출력
String sub = stbuf.substring(2, 4); //34출력
3. st1.compareTo(st2);compareTo 사용법에 대하여 설명하시오.
ex)
int cmp; //리턴값은 정수
int cmp = st1.compareTo(st2);
cmp == 0 → 같은 문자열이다.
cmp > 0 → st1이 앞에 나온다.
cmp < 0 → st1이 뒤에 나온다.
4. String.valueOf 에 대하여 설명하시오.
기본 자료형의 값을 문자열로 바꾸는 함수
5. 아래의 연산과정에서 호출되는 함수(원리)를 써서 표현해 보세요.
String str = "age: " + 17;
덧셈 연산자를 진행할때 한쪽이 String 형이면 나머지도 String 형태로 변환 한 다음 String형 문자열로 결합한다.
String형 "age: "에 Int형 "17" 을 더하기 연산자로 출력을 하면 컴퓨터는 Int형 "17"을 String형 "17"로 변환시킨 후 연결시켜 age: 17 이라는 문자열 글자를 출력한다.
6. StringBuilder 와 String 의 차이는?
String은 immutable(불변) 속성을 가진다-안정성유지
StringBuilder는 mutable(가변)속성을 가져서 버퍼의 크기가 유연하며 많은 연산을 필요로할때 사용하기 적합하다.
7. String 을 이용하여 프로그래밍 하시오.
입력 : 990925-1012999
출력 : 990925 1012999
public class NumberMain { public static void main(String[] args) { Number number = new Number(); number.input(); number.print(); } }
import java.util.Scanner; public class Number { private String num; public Number(String words) { this.num = num; } public Number() { } public void input() { System.out.println("주민번호를 입력하시오."); Scanner sc = new Scanner(System.in); num = sc.nextLine(); } public void print() { if (num == null) { System.out.println("오류"); return; } else { String text = num.replace('-', ' '); System.out.println(text); } } }
8. 아래의 메모리 그림을 그리시오.
int[] ar1 = new int[5];
(new int[5])
ar1 ---참조---→ ㅁㅁㅁㅁㅁ(원소의 개수가 5개인 int 배열)
9. 아래를 프로그래밍 하시오.(단 클래스로 구성할것)
입력:lee sunkyo
출력:first name: lee second name:sunkyo
import java.util.Scanner; public class prac { // 배열객체 class로 못만들겠어요... public static void main(String[] args) { String[] name = new String[2]; int fullname = name.length; System.out.println("영어 이름을 입력하세요"); Scanner sc = new Scanner(System.in); for (int i = 0; i < fullname; i++) { name[i] = sc.next(); } for (int i = 0; i < fullname; i++) { System.out.println("성 : " + name[i]); System.out.println("이름 : " + name[1 - i]); return; } } }
10. 아래를 프로그래밍 하시오.
입력 : 홍 길동
출력 : 성 = 홍 이름 = 길동
입력 : 홍길동
출력 : 공백이 없군요. 다시 입력해주세요.
import java.util.Scanner; public class prac { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] name = new String[2]; System.out.println("이름을 입력하세요"); for(int i=0; i<name.length; i++) { name[i]=sc.next(); } if(name[1] == null) { //오류 System.out.println("공백이 없군요"); } System.out.println("성 : " + name[0]); System.out.println("이름 : " + name[1]); } }
11.아래를 프로그래밍 하시오.
"Hello.java" 문자열에서 파일명과 확장자인 java를 분리시키는 프로그램을 짜시오. 입력: Hello.java 출력: 파일이름은:Hello 이며 확장자는 java 입니다. 입력: Java.avi 출력: 파일이름은:Java 이며 확장자는 avi 입니다. 문제12. Scanner 클래스를 이용해서 한 줄 읽고, 공백으로 분리된 "단어"가 몇 개 들어 있는지 확인해보자. "그만"을 입력할 때까지 반복하는 프로그램이다.힌트(split 함수를 이용해 볼것) 예) 입력 : Java Programming 출력 : 단어의 개수는 2 입력 : 자바 수업은 2층 C클래스 출력 : 단어의 개수는 4 입력 : 그만 > 출력 : 프로그램 종료
import java.util.Scanner; public class TestMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("단어 개수 확인하기"); while (true) { System.out.println("입력"); String sentence = sc.nextLine(); // if(sentence.equarl("stop"){ //도 써도 됨 if (sentence.compareToIgnoreCase("stop") == 0) { System.out.println("프로그램 종료"); break; } String[] words = sentence.split(" "); // 공백일때 분리한다는것. System.out.println("단어의 갯수는" + words.length); } sc.close(); //깔끔하게. } }
import java.util.Scanner; public class TestMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("단어 개수 확인하기"); while (true) { System.out.println("입력"); String sentence = sc.nextLine(); // if(sentence.equarl("stop"){ //도 써도 됨 if (sentence.compareToIgnoreCase("stop") == 0) { System.out.println("프로그램 종료"); break; } String[] words = sentence.split(" "); // 공백일때 분리한다는것. System.out.println("단어의 갯수는" + words.length); for (int i = 0; i < words.length; i++) { //이부분 추가 System.out.println("단어는" + words[i].toString()); } } sc.close(); // 깔끔하게. } }
↓CLASS로 만들기
public class WordCount { private String sentence; // privete잊지말기 private String[] words; WordCount(String sentence) { // while문 생성자 만들기 this.sentence = sentence; } // public하면 고객님이 헷갈릴수있으니까 private로 private void wordSplit() { // 공백자르는 함수 if (sentence == null) { // null체크해주기 System.out.println("입력값이 없습니다."); return; } this.words = sentence.split(" "); System.out.println("단어의 갯수는" + words.length); } // public하면 고객님이 헷갈릴수있으니까 private로 private void wordPrint() { if (words == null) { // null체크해주기 System.out.println("입력값이 없습니다."); } for (int i = 0; i < words.length; i++) { System.out.println("단어는" + words[i].toString()); } } public void getResult() { wordSplit(); wordPrint(); } }
import java.util.Scanner; public class TestMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("단어 개수 확인하기"); while (true) { System.out.println("입력"); WordCount wordCount = new WordCount(sc.nextLine());// 거의 마지막. 생성자 주기 wordCount.getResult(); } } }
'코딩 > 수업 정리' 카테고리의 다른 글
20.12.10 Thu [014] (0) | 2020.12.10 |
---|---|
20.12.09 Wed [013] (0) | 2020.12.09 |
20.12.07 Mon [011] (0) | 2020.12.07 |
20.12.04 Fri [010] (0) | 2020.12.04 |
20.12.03 Thu [009] (0) | 2020.12.03 |
댓글