다음 멤버를 가지고 직사각형을 표현하는 Rectangle 클래스를 작성하라.
- int 타입의 x, y, width, height 필드 : 사각형을 구성하는 점과 크기 정보 - x, y, width, height 값을 매개변수로 받아 필드를 초기화하는 생성자 - int square() : 사각형 넓이 리턴 - void show() : 사각형의 좌표와 넓이를 화면에 출력 - boolean contatins(Rectangle r) : 매개변수로 받은 r이 현 사각형 안에 있으면 true 리턴 - main() 메소드의 코드와 실행 결과는 다음과 같다 public static void main(String[] args) { Rectangle r = new Rectangle(2, 2, 8, 7); Rectangle s = new Rectangle(5, 5, 6, 6); Rectangle t = new Rectangle(1, 1, 10, 10); r.show(); System.out.println("s의 면적은 "+s.square()); if(t.contains(r)) System.out.println("t는 r을 포함합니다."); if(t.contains(s)) System.out.println("t는 s를 포함합니다."); }
출력 ======================== (2,2)에서 크기가 8x7인 사각형 s의 면적은 36 t는 r을 포함합니다.
(1) new 연산자로 생성
(2) String 클래스에 직접 생성
상수이기 때문에
사용자로부터 받은 문자열(영문으로)에서 자음과 모음 개수를 계산하는 프로그램을 작성하라.
힌트:String 객체의 charAt 함수를 활용 === 입력:abcd 출력: 총글자수는 4개 자음:3 개 모음:1 개
public class Moeum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String myAnswer = scanner.next();
int j = 0;
int m = 0;
for (int i = 0; i < myAnswer.length(); i++) {
if (myAnswer.charAt(i) == 'a' || myAnswer.charAt(i) == 'e' || myAnswer.charAt(i) == 'i' || myAnswer.charAt(i) == 'o' || myAnswer.charAt(i) == 'u')
{m++;
} else {
j++;
}
}
System.out.println("총글자수는 " + myAnswer.length() +"개");
System.out.println("자음 : " + j +"개");
System.out.println("모음 : " + m +"개");
}
}
사용자에게 받은 문자열을 역순으로 화면에 출력하는 프로그램을 작성하시오.
힌트:String 객체의 charAt 함수를 활용 입력:abcde 출력:edcba
import java.util.Scanner;
public class Reverse {
public static void main(String[] args) {
Scanner alphabet = new Scanner(System.in);
String str = alphabet.next();
String j = "";
for (int i = str.length()-1; i >= 0; i--) {
j+=str.charAt(i);
}
System.out.println(j);
}
}
String str = "abcdefg";
str.substring(2);
//인덱스 2 부터 끝까지. 문자열 "cdefg" 반환
str.substring(2, 4);
//인덱스 2 ~ 3에 위치한 내용의 문자열 "cd" 반환
//함수 오버로딩 적용됨
//index는 0부터 셈
기본 자료형(모든 타입을)의 값을 문자열로 바꿀 때 사용하는 메소드
문자열의 내용을 비교해서 사전 상에서 앞에 있는지 뒤에 있는지 알려 줌
(예)
int cmp; //리턴값은 정수 int
cmp = st1.compareTo(st2);**
cmp == 0 → 같은 문자열이다.
cmp < 0 → st1이 앞에 나온다.
cmp > 0 → st1이 뒤에 나온다.
아래의 연산과정에서 호출되는 함수(원리)를 써서 표현해 보세요.
String str = "age: " + 17;
17이 문자열로 변경되어 합쳐진다.
String은 immutable
StringBuilder와 StringBuffer는 mutable
String은 immutable이기 기존의 메모리를 두고 계속 새로운 객체를 생성한다.
StringBuilder나 StringBuffer에 비해 시간도 오래 걸리고, 메모리공간도 많이 사용하게 되는 단점이 있다.
반면에 StringBilder 와 StirngBuffer는 mutable이라서 최초 한번만 객체를 생성하고 거기에 + ( append() )를 할 경우 같은 주소(가리키고 있는)의 메모리 공간 안에서 객체 크기를 증가 시키며 두 문자열을 더해준다. ([최적화])