1. 객체 생성
package com.day07;
class IntClass {
int a;
int b;
}
public class Test1 {
public static void main(String[] args) {
IntClass ob1 = new IntClass();
IntClass ob2 = new IntClass();
ob1.a = 10;
ob1.b = 20;
System.out.println("ob1.a:" +ob1.a);
System.out.println("ob1.b:" +ob1.b);
System.out.println("--------");
System.out.println("ob2.a:" +ob2.a);
System.out.println("ob2.b:" +ob2.b);
System.out.println("--------");
ob2.a=200;
ob2.b=100;
System.out.println("ob2.a:" +ob2.a);
System.out.println("ob2.b:" +ob2.b);
System.out.println("ob1.a:" +ob1.a);
System.out.println("ob1.b:" +ob1.b);
}
}
결과
ob1.a:10
ob1.b:20
--------------
ob2.a:0
ob2.b:0
--------------
ob2.a:200
ob2.b:100
ob1.a:10
ob1.b:20
2. Circle클래스를 이용하여 원의 면적 구하기
Circle 클래스
① setData : 초기화 메소드
this : class name
② area : 원의 면적을 구하는 메소드
③ write : 반지름과 면적을 출력해주는 메소드
package com.day07;
import java.util.Scanner;
class Circle{
private int r;
public void setData(int r){
this.r=r;
}
public double area(){
return r*r*3.14;
}
public void write(double a){
System.out.println("반지름:" +r);
System.out.println("면적:" +a);
}
}
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Circle c1 = new Circle();
System.out.print("반지름을 입력해주세요:");
int r = sc.nextInt();
c1.setData(r);
double result = c1.area();
c1.write(result);
sc.close();
}
}
결과
반지름을 입력해주세요:5
반지름:5
면적:78.5
3. static
○static
① 알아서 메모리에 올라간다.
② 객체를 100번 생성해도 메모리 공간은 하나만 생성
○ class변수와 instance변수
① class변수
- 클래스가 로딩되는 순간 메모리에 할당
- 접근방법 : [클래스이름.변수명]
② instance변수
- new로 클래스를 선언 한 후 사용 가능
- 동일 클래스 메소드에서 접근이 가능
- class메소드에서는 접근이 불가능
package com.day07;
public class Test3 {
public static int a = 10;
private int b = 20;
public void write(){ //instance메소드
System.out.println("class 변수 a:" +a);
System.out.println("instance 변수 b:" +b);
}
public static void print(){ //class메소드
System.out.println("class 변수 a:" +a);
//System.out.println("instance 변수 b:" +b);
}
public static void main(String[] args) {
System.out.println("main...");
System.out.println("class 변수 a:" +a);
System.out.println("class 변수 a:" +Test3.a);
print();
Test3.print();
Test3 ob = new Test3();
System.out.println("instance 변수 b:" +ob.b);
ob.write();
System.out.println("--------------------");
Test3 ob1 = new Test3();
ob1.a = 100;
ob1.b =200;
System.out.println("---------------------");
System.out.println("ob1.a:" +ob1.a);
System.out.println("ob1.b:" +ob1.b);
System.out.println("---------------------");
System.out.println("ob.a:" +ob.a);
System.out.println("ob.b:" +ob.b);
ob.a = 500;
System.out.println("ob.a:" +ob.a);
System.out.println("ob1.a:" +ob1.a);
}
}
결과
main...
class 변수 a:10
class 변수 a:10
class 변수 a:10
class 변수 a:10
instance 변수 b:20
class 변수 a:10
instance 변수 b:20
--------------------
---------------------
ob1.a:100
ob1.b:200
---------------------
ob.a:100
ob.b:20
ob.a:500
ob1.a:500
4. overload(overading : 중복정의)
같은 클래스 안에서 메소드의 이름은 동일, 매개변수의 갯수나 자료형은 다르게 정의
package com.day07;
class Rect{
private int w;
private int h;
public void set(int w, int h){
this.w = w;
this.h = h;
}
public int area(){
return w*h;
}
public int length(){
return 2*(w+h);
}
// 오버로딩
public void print(int a, double l){
System.out.println("가로:" +w);
System.out.println("세로:" +h);
System.out.println("넓이:" +a);
System.out.println("둘레:" +l);
}
public void print(){
System.out.println("가로:" +w);
System.out.println("세로:" +h);
}
public void print(int a){
System.out.println("가로:" +w);
System.out.println("세로:" +h);
System.out.println("넓이:" +a);
}
public void print(double l){
System.out.println("가로:" +w);
System.out.println("세로:" +h);
System.out.println("둘레:" +l);
}
}
public class Test5 {
public static void main(String[] args) {
Rect ob1 = new Rect();
ob1.set(10, 20);
int a = ob1.area();
double l = ob1.length();
ob1.print(a, l);
ob1.print(l);
}
}
결과
가로:10
세로:20
넓이:200
둘레:60.0
가로:10
세로:20
둘레:60.0
5. scanner를 사용하지 않고, 1부터 사용자가 입력하는 수까지의 합 구하기
방법1
package com.day07;
import java.io.IOException;
public class Q1 {
public static void main(String[] args) throws IOException {
String st = "";
char ch;
int num;
int sum=0;
System.out.print("수입력:");
while(true){
ch = (char)System.in.read();
for(int i=0;i<=9;i++){
if(ch%48 == i){
st+=i;
}
}
if(ch == 13){
break;
}
}
num = Integer.parseInt(st);
for(int i=1;i<=num;i++){
sum += i;
}
System.out.printf("1에서 %d까지의 합계 : %d", num, sum);
}
}
방법2
Character.toString(char c) : char형 값을 스트링으로 변환시켜준다
package com.day07;
public class Q12 {
public static void main(String[] args) throws Exception{
String st = "";
int su, num, sum=0;
System.out.print("수입력:");
while((su = System.in.read()) != 13)
st += Character.toString((char)su);
num = Integer.parseInt(st);
for(int i=1;i<=num;i++){
sum += i;
}
System.out.printf("1에서 %d까지의 합계 : %d", num, sum);
}
}
방법3
package com.day07;
import java.io.IOException;
public class Q13 {
public static void main(String[] args) throws IOException {
int n=0, s=0;
int data;
System.out.print("수입력:");
while((data=System.in.read())!=13){
n=n*10+data-48;
}
for(int i=1;i<=n;i++){
s+=i;
}
System.out.printf("1에서 %d까지의 합계:%d" ,n ,s);
}
}
결과
수입력:15
1에서 15까지의 합계:120
6. 인원을 입력받아, 인원수대로 이름과 국어 / 수학 / 영어 점수를 입력받아 합계와 평균을 출력
Q2Record 클래스
변수 선언
package com.day07;
public class Q2Record {
String name;
int score[] = new int[3];
int tot;
int ave;
String grade[] = new String[3];
}
Q2Score 클래스
package com.day07;
import java.util.Scanner;
public class Q2Score {
Scanner sc = new Scanner(System.in);
Q2Record rec[];
String title[] = {"국어:", "수학:", "영어:"};
int inwon;
public void set(){
do{
System.out.print("인원수를 입력해주세요:");
inwon = sc.nextInt();
}while(inwon<1 || inwon>10);
rec = new Q2Record[inwon];
}
public void input(){
int i, j;
for(i=0;i<inwon;i++){
rec[i] = new Q2Record();
System.out.print((i+1)+"번째이름:");
rec[i].name = sc.next();
for(j=0;j<3;j++){
System.out.print(title[j]);
rec[i].score[j] = sc.nextInt();
rec[i].tot += rec[i].score[j];
}
rec[i].ave = rec[i].tot/3;
System.out.println();
}
}
private void ranking(){
int i, j;
for(i=0;i<inwon;i++){
for(j=0;j<3;j++){
if(rec[i].score[j]>=90)
rec[i].grade[j] = "수";
else if(rec[i].score[j]>=80)
rec[i].grade[j] = "우";
else if(rec[i].score[j]>=70)
rec[i].grade[j] = "미";
else if(rec[i].score[j]>=60)
rec[i].grade[j] = "양";
else
rec[i].grade[j] = "가";
}
}
}
public void print(){
ranking();
int i, j;
for(i=0;i<inwon;i++){
System.out.printf("%d번째 이름: %s \n", (i+1), rec[i].name);
for(j=0;j<3;j++){
System.out.printf("%s%d점[%s] \n", title[i],rec[i].score[j], rec[i].grade[j]);
}
System.out.printf("합계:%d점 평균:%d점 \n", rec[i].tot, rec[i].ave);
System.out.println();
}
}
}
Q2Scoremain 클래스
package com.day07;
public class Q2Scoremain {
public static void main(String[] args) {
Q2Score ob = new Q2Score();
ob.set();
ob.input();
ob.print();
}
}
결과
인원수를 입력해주세요:2
1번째이름:suzi
국어:87
수학:86
영어:94
2번째이름:java
국어:75
수학:98
영어:90
1번째 이름: suzi
국어:87점[우]
국어:86점[우]
국어:94점[수]
합계:267점 평균:89점
2번째 이름: java
수학:75점[미]
수학:98점[수]
수학:90점[수]
합계:263점 평균:87점
댓글