본문 바로가기
STUDY/JAVA

Java 7일차

by Anne of Green Galbes 2019. 1. 28.

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점 


'STUDY > JAVA' 카테고리의 다른 글

Java 20일차(1) -자바 오라클 연결, Statement  (0) 2019.02.01
Java 8일차  (0) 2019.01.29
Java 6일차  (0) 2019.01.24
Java 5일차  (0) 2019.01.24
Java 4일차  (0) 2019.01.24

댓글