Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 누승재귀
- 연산자우선순위
- 자바클래스
- 자바함수
- 자바수우미양가
- 자바if문
- 자바상수
- 자바제어문
- 반복문라벨
- read()함수
- SQL
- 자바실행방법
- 자바접근지정자
- 중첩for문
- 자바형식
- 자바기타제어자
- 자바연산자
- 자바별찍기
- 변수명명규칙
- 오버로딩
- 자바switch문
- 클래스배열
- 오라클
- 겟셋함수
- 기타제어자
- 변수의 초기화
- 효율적인연산
- 프로그래머스
- 팩토리얼재귀
- 자바자료형
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 객체 생성 예제 본문
> TV 객체 생성하는 예제
TV.java
package days15;
public class TV {
// fields
public String color = "red";
public boolean power ;
public int channel = 10;
// constructor
public TV(String color, boolean power, int channel) {
// fields 초기화
this.color = color;
this.power = power;
this.channel = channel;
}
public TV() {
}
// methods
public void power() {
power = !power;
}
public void channelUp() {
channel++;
}
public void channelDown() {
channel--;
}
}
Ex05.java
package days15;
public class Ex05 {
public static void main(String[] args) {
// The local variable i may not have been initialized
// 지역변수는 반드시 초기화를 해야지 사용할 수 있다.
//int i;
//System.out.println( i );
// TV 클래스 선언
// 객체 t1, t2
TV t1 = new TV();
// *** 객체명(참조변수).필드 또는 객체명.메서드 ***
// 클래스명.필드 또는 클래스명.메서드 X
// TV.power TV.channel X
// *** 클래스의 필드는 초기화 하지 않아도 사용할 수 있고.
// 각 자료형의 기본값으로 초기화 되어져 있다.
System.out.println( t1.power ); // false
System.out.println( t1.channel ); // 0
System.out.println( t1.color ); // null
TV t2 = new TV();
t2.color = "blue";
t1.channel = 11;
t1.channelUp();
System.out.println( t1.channel ); //12
System.out.println( t2.color ); // blue
t1.power(); // method power()
System.out.println( t1.power ); // field power
}
}
> Student 객체 생성하는 예제
Student.java
package days15;
// 학생 클래스 선언
public class Student {
// 필드
public String name;
public int no;
public int kor, eng, mat; //Alt + Shift + S
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int tot;
//getter
public int getTot() {
return tot;
}
public int rank;
public int wrank;
public double avg;
// 메서드
public void printSungjuk() {
System.out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n"
,no, name, kor, eng, mat, tot,avg, rank);
}
} // class
// p.240 객체 배열 (==클래스배열)
// 많은 객체를 다루고자 한다면
// 아래 코딩처럼 하지말고, 배열을 사용하자
Student s1 = new Student();
s1.no = 1;
s1.name = "강현구";
Student s2 = new Student();
s2.no = 1;
s2.name = "권희준";
Student s3 = new Student();
s3.no = 1;
s3.name = "김나린";
s1.printSungjuk();
s2.printSungjuk();
s3.printSungjuk();
// 클래스 배열 선언
// 자료형 [] 배열명 = new 자료형 [배열크기]
// **** students 객체명이 아니라 배열명이다. ****
Student [] students = new Student[3]; //객체 생성한거 아님
char con = 'y';
int cnt = 0;
do {
students[cnt] = new Student();
students[cnt].no = 1;
students[cnt].name = "강현구";
cnt++;
// 계속 여부 확인 ?
} while (Character.toUpperCase(con)=='Y');
for (int i = 0; i < students.length; i++) {
students[i].printSungjuk();
}
System.out.println("END");
// NullPointException 예외 발생.
//Student s1 = null; = new Student();
//s1.name = "홍길동";
}//main
}//class
Ex06.java
package days15;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
public class Ex06 {
public static void main(String[] args) throws IOException {
// 30명
// 학생관리( 이,국,영,수,총,평,등 )
final int COUNT = 30;
// [클래스 배열]
// 클래스타입 [] 배열명 = new 클래스타입[30];
Student[] students = new Student[COUNT];
Scanner scanner = new Scanner(System.in);
int cnt = 0; // 입력받은 학생수
char con = 'y';
// students[0]
String name;
int kor, eng, mat, tot, rank;
double avg;
do {
System.out.printf("> [%d]번 학생 이름,국,영,수 입력 ? ", cnt+1);
name = getName();
kor = getScore();
eng = getScore();
mat = getScore();
tot = kor + eng + mat;
avg = ( double )tot/3;
rank = 1;
// java.lang.NullPointerException
// 해결 ? *** 방마다 객체 생성해 줘야함
students[cnt] = new Student();
students[cnt].no = cnt+1;
students[cnt].name = name;
students[cnt].kor = kor;
students[cnt].eng = eng;
students[cnt].mat = mat;
students[cnt].tot = tot;
students[cnt].avg = avg;
students[cnt].rank = rank;
students[cnt].wrank = 1;
cnt++; // 1
System.out.print("> 입력 계속 할거냐 ? ");
con = (char)System.in.read();
System.in.skip(System.in.available());
} while ( Character.toUpperCase(con) == 'Y' );
// 출력
System.out.printf("> 학생수 : %d명 \n", cnt);
for (int i = 0; i < cnt ; i++) {
students[i].printSungjuk();
}
} // main
public static int getScore() {
// 0~100
Random rnd = new Random();
return rnd.nextInt(101);
}
public static String getName() {
// 대문자 5 발생시켜서 이름으로 처리.
// 65~90 -65
// 0 ~ 25
Random rnd = new Random();
char [] names = new char[5];
for (int i = 0; i < 5; i++) {
names[i] = (char)( rnd.nextInt(26) + 65 );
}
// String -> char[] 변환
// char [] -> String 변환
String name = new String ( names );
return name;
}
} // class
'Java' 카테고리의 다른 글
[Java] 가변인자(varargs)와 오버로딩 (0) | 2021.07.17 |
---|---|
[Java] 접근지정자 - private / getter, setter (0) | 2021.07.17 |
[Java] 객체 지향 프로그래밍 - 클래스(Class) / 객체(Object) / 인스턴스(Instance) (0) | 2021.07.16 |
[Java] 입력한 정수 n의 근사치인 배열 요소 찾기 (0) | 2021.07.16 |
[Java] 자바 등차수열, 피보나치 수열 (0) | 2021.07.16 |