퀴즈 피드백
+) 정적 요소는 클래스 이름으로 접근하는 것이 좋다. (객체를 만들지 않고도 사용할 수 있는데 객체를 또 만들면 메모리 낭비)
서식 지정자 | 설명 |
---|---|
%d | int 정수형 문자 |
%f | float, double 실수형 문자 |
%s | String 문자열 |
%c | char 문자 |
%o | 8진 정수 출력 |
%x | 16진 정수 출력 |
%% | 퍼센트(%) 표시 |
%n | 개행문자 표시(\n, \r) |
ex.
int num = 455;
String menuName = "얼큰한 마라탕";
String str1 = String.format("%d번 %s", num, menuName) // 원하는 형식을 쓰고, 각 서식문자열에 들어갈 값을 순서대로 넣어줌
System.out.println(str1);
// 455번 얼큰한 마라탕
ex.
int[] numArr = {1,2,3};
String[] kindArr = {"한식", "일식", "아시안푸드"};
String[] menuArr = {"콩나물국밥", "돈까스", "베트남소고기쌀국수"};
for (int i = 0; i<3; i++) {
String str1 = String.format("%d번 %s %s", numArr[i], kindArr[i], menuArr[i]);
System.out.println(str1);
}
// 결과
1번 한식 콩나물국밥
2번 일식 돈까스
3번 아시안푸드 베트남소고기쌀국수
for (int i = 0; i<3; i++) {
String str1 = String.format("%3d번 %-10s %-20s", numArr[i], kindArr[i], menuArr[i]);
System.out.println(str1);
}
// 결과
1번 한식 콩나물국밥
2번 일식 돈까스
3번 아시안푸드 베트남소고기쌀국수
String 값을 출력한다는 가정
1. 그냥 출력
-> 출력하는 메소드를 만들어서 인스턴스 필드에 있는 값을 출력해준다
String 반환 메소드
-> formatting된 String을 반환해주는 메소드를 만들어서 출력
static 메소드 : 여러 값을 담고 있는 인스턴스들 만들기
3-1. 출력해주는 메소드에 출력하고자하는 값을 각각 매개변수로 넘겨주기
3-2. 인스턴스 하나를 통째로 넣어서 메소드 안에서 그 값들을 쪼개서 접근해서 출력
public class FoodMenu {
int num; // 번호
String kind; // 종류
String name; // 메뉴 이름
String[] options;
String getName() {
return name;
}
String[] getOptions() {
return options;
}
// 생성자
FoodMenu(int num, String kind, String name) {
this.num = num;
this.kind = kind;
this.name = name;
}
void printFoodMenuFormat() {
System.out.println(String.format("%3d번 %s %s", num, kind, name));
}
public String toString() {
return String.format("%3d번 %s %s", num, kind, name);
}
static void printFoodMenu(FoodMenu foodMenu) { // 클래스 변수 객체 자체를 받는다
// 3개를 각각 받아오던걸 1를 통째로 가져와서 메소드 안에서 쪼갠다
// 필드변수에 국한된 애가 아니라 foodMenu 타입이면 공통으로 불러와서 안의 값에 접근할 수 있음
System.out.println(String.format("%3d번 %-10s %-20s", foodMenu.num, foodMenu.kind, foodMenu.name));
}
}
--------------------------------------
public class restaurant {
public static void main(String[] args) {
FoodMenu[] foodMenuArr = {
new FoodMenu(1, "한식", "콩나물국밥"),
new FoodMenu(2, "일식", "돈까스"),
new FoodMenu(3, "아시안푸드", "베트남소고기쌀국수")
};
for(int i = 0; i<3; i++) {
printFoodMenu(foodMenuArr[i]);
// FoodMenu타입의 인스턴스가 담긴 배열을 쪼개서 넣어준다
// 인스턴스의 메소드, 필드에 접근 가능
}
}
}