본문 바로가기
Web

[2021.04.05] 인턴 +35 Java Study 내용 정리

by injekim97 2021. 4. 6.
반응형

[2021.04.05] 인턴 +35  Java Study 내용 정리

 

 

 

우선 , java 실행 방법에 대해서 알아보자.
1. New File -> Java Project(검색) -> Next 클릭
2. 만들어진 프로젝트를 더블클릭 -> src폴더에 오른쪽마우스 누르고 -> New -> Class를 클릭
2-1. 클래스를 만드는 과정에서 이름은 아무렇게나, 밑에 public static void main (체크박스)을 체크

* Ctrl + F11을 눌러서 프로그램을 실행(컴파일)

 

 

-------------------------------------------------------------------------------------------------------------------------------

 

 

package java_prc;

import java.util.*;

public class main {

       public static void main(String[] args) {

               String str = "apple"; // a[5] = {1,2,3,4,5} -> a[0] = 1 index = 색인

               for (int i=0; i<str.length(); i++) {

                      //System.out.println(str); // apple 5번출력(0~4 5 반복)

                      //System.out.println(str.charAt(i)); // 번째 반복 루프에서 a,p,p,l,e 순으로 출려

                        System.out.println((int)str.charAt(i)); // 문자의 값을 정수로 바꿔서 출력해줌 A= 65 , a = 97

               }

       }

}

 

<실행화면>

 

 

 

 

package java_prc;

import java.util.*;

public class main {

       public static void main(String[] args) {

               String str = "apple";

               String str2 ="lemon";

               int sum1 = 0;

               int sum2 = 0;

               for (int i=0; i<str.length(); i++) {

                      sum1 += (int)str.charAt(i);

                      sum2 += (int)str2.charAt(i);

               }

               System.out.println(sum1); // 530

               System.out.println(sum2); // 539

       }

}

* 문자로 입력 받은 아스키 코드값을 정수로 바꿔서 sum라는 변수에 저장해서 출력함.

-> a + p + p + l + e => 530

-> l + e + m + o + n => 539

* equals 함수 사용법 물어보기

 

 

 

 

 

package java_prc;

import java.util.*;

public class main {

       public static void main(String[] args) {

               Random random = new Random();

               int result1 = random.nextInt(6)+1; //0~5-> +1 해서 1~6 나오게끔해줌

               int result2 = random.nextInt(6)+1;

              

               if (result1 < result2) {

                      System.out.println("result2 !");

                      System.out.println("result1 : "+ result1+",result2: "+result2);

               }

              

               else if (result1 > result2) {

                      System.out.println("result1 !");

                      System.out.println("result1 : "+ result1+", result2 : "+result2);

               }

              

               else {

                      System.out.println("비겼습니다.");

                      System.out.println("result1 : "+ result1+", result2 : "+result2);

               }

       }

}

 

* 랜덤함수 모듈 사용법

* import java.util.*;

Random random = new Random();

int result1 = random.nextInt(6)+1;  // (0~5)-> +1 해서 => 1~6 나오게 해줌

 

 

 

블랙잭게임 만들어보기 
- 먼저 가져올 카드의 갯수를 입력받는다.
- 1~11의 숫자를 랜덤하게 뽑아 합이 21이 넘지 않고 가장 가까운 값을 가진사람이 승리한다.
- 만약 합이 21을 넘기면 무조건 패배한다.
- 두 명 모두 합이 21을 넘겼다면 무승부다. 

 

 

package java_prc;
import java.util.*;
public class main {
       public static void main(String[] args) {
               int sum1=0; // 카드의
               int sum2=0; // 카드의
               int cardNum; //카드의 숫자
              
               Random random=new Random(); // 랜덤 변수 객체 선언
      
               Scanner scan=new Scanner(System.in);  // 입력하는 변수 선언 -> Scanner
               cardNum=scan.nextInt(); // 카드의 숫자를 int 형으로 입력
              
               // 카드의 입력 숫자만큼 for문을 돌려서 sum1,sum2 변수에 저장
               for(int i=0;i<cardNum;i++) {
                      sum1+=random.nextInt(11)+1; //1~11
                      sum2+=random.nextInt(11)+1;
               }
              
               // 저장한 sum1,sum2값을 새로운 변수(val1,val2) 선언하여, 각각 뺴줌
               int val1=21-sum1; //1 음수다?->21 초과
               int val2=21-sum2; //2
              
              
               // 둘다 값이 음수라면 ~
               if(val1<0 && val2<0) {
                      System.out.println("무승부"+sum1+" "+sum2);
               }
              
               // val1 값이 음수라면 ~
               else if(val1<0) {
                      System.out.println("val2 !"+sum1+" "+sum2);
               }
 
               // val2 값이 음수라면 ~
               else if(val2<0) {
                      System.out.println("val1 !"+sum1+" "+sum2);
               }
              
               // val1 값과 val2 값이 0보다 정수라면 ~
               else {
                      if(val1<val2) {
                              System.out.println("val1 !"+sum1+" "+sum2);
                      }
                      else {
                              System.out.println("val2 !"+sum1+" "+sum2);
                      }
               }
       }
}

<실행 결과>

 

 

 

 

과제)  student school 문제

1. 메인메소드의 전체 코드다. 이 코드의 수행결과는 아래와 같다.

아래와 같은 실행결과가 나오도록 클래스를 작성하라.

 

(, Student Person 클래스를 상속받는다. Person의 멤버변수는 이름, 나이이다.

Student의 멤버변수는 학교객체 하나 뿐이다.)

 

                      School[] scList= {new School("기톨릭대학교","역곡"),

                                             new School("명지대학교","용인"),

                                             new School("부천대학교","부천")};

                     

                      Student[] stuList= {new Student("Wanda",20,scList[0]),

                                             new Student("Maria",22,scList[1]),

                                             new Student("Vision",21,null};

                     

                      for(Student s : stuList) {

                                 s.printInfo();

                                 System.out.println();

                      }

 

수행결과)

이름 : Wanda, 나이 : 20, 다니는 학교 : 가톨릭대학교(역곡)

이름 : Maria, 나이 : 22, 다니는 학교 : 명지대학교(용인)

이름 : Vision, 나이 : 21, 다니는 학교 : Unknown

-> 나중에 해보기

 

 

-----------------------------------------------------------------------------------------------

* 맴버 변수는 다 private임(Public X)
-> 정보은닉문제 등

* public은 어떠한 곳에서도 접근가능하다.
-> 다른 package에서도 접근할 수 있다.
-> public은 get
-> sch.getUnivname()

* private 가장 은닉성 뛰어나고, 꽉꽉 막힘
* protected -> private와 public의 중간점(같은 Package에서만 사용 가능)
* public 은닉성 X , 공개적(다른 Package 에서 사용가능)



상속  개념 (차, 마티즈, 그랜져, 등등)
-> 차(차, 마티즈, 그랜져)라는 클래스가 있다.

java에서는
차를 일반화 클래스가 되었다.
* 일반화 즉, 마티즈,K3,그랜져 -> 차이다.
* 차는 마티즈를 포함


EX)
Car 
Private 이름
          연비

EX)
class K3 
private opencar

* 즉, K3는 차니까, class K3


* class K3 extends car
-> K3 is a car (is a를 기억하자)
-> 즉 car을 재사용한다는 것을 의미함.
-> 생성자도 생성해야하기 때문에 super(name,age) // 부모클래스
-> sch = sc;

* super
-> 부모클래스에 있는 것을 사용하기 위해서 라고 이해하면 됨

* specialization (일반화)  
* 재사용, 확장 


---------------------------------------------------------------------------------------

 

 

 

package java_prc;
import java.util.*;
 
// class 생성
class Animal {
       private String name;
       private int age;
      
       // 생성자
       public Animal(String n,int a) {
               name = n;
               age = a;
       }
      
       public void tellYourInfo() {
               System.out.println("이름 : "+name);
               System.out.println("나이 : "+age);
 
       }
}
 
// 확장 extends specialization
class Dog extends Animal{
       private boolean isRun;
       public Dog(String n,int a) {
               super(n,a);
               isRun = true; // 달릴 있음
               }
       public void tellYourInfo() { // 오버라이딩
               super.tellYourInfo();
               if(isRun) {
                      System.out.println("달릴 있다.");
               }
       }
}
 
 
class Fish extends Animal {
       private boolean isRun;
       public Fish(String n,int a) {
               super(n,a);
               isRun = false;
       }
       public void tellYourInfo() {
               super.tellYourInfo();
               if(!isRun) {
                      System.out.println("달릴 없습니다.");
               }
       }
}
 
public class main {
       public static void main(String[] args) {
               // 다형성
               //Animal a1 = new Dog("멍멍이",3);
               //Animal a2 = new Fish("금붕어",4);
              
               Animal[] animalList = {new Dog("멍멍이",3),new Fish("빼곰이",4)};
               animalList[0].tellYourInfo();
               animalList[1].tellYourInfo();
              
               Scanner scan = new Scanner(System.in);
               //
       }
}
 

<실행 결과> 

 

* 오버라이딩
->상속을 활용할 떄
-> 같은 이름명 tellyourinfo()를 똑같이 써야, 오버라이딩 가능함
-> 배열로 사용했을 때, extends에도 tellyourinfo() 있고, 클래스내에 tellyourinfo() 있다면, extends로 실행해짐
* talk()가 없다면, 클래스내에 애초에 없기 때문에 확장받을 수 없음(ERROR 발생) 

반응형

댓글