[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 발생)
'Web' 카테고리의 다른 글
[2021.07.26] 인턴 +147 HTML5 스타일 문법 (HTML5 Style Grammar) - 2 (0) | 2021.07.26 |
---|---|
[2021.07.26] 인턴 +147 HTML5 문법 및 기초 코드 작성 -1 (0) | 2021.07.26 |
[2021.03.25] 인턴 +24 node.js Passport(document) 정리 (0) | 2021.03.25 |
[2021.03.22] 인턴 + 21 node.js 정리 중 (0) | 2021.03.22 |
[2021.03.18] 인턴 +17 vs code에서 node.js 설치 (0) | 2021.03.18 |
댓글