- 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 |
댓글