형변환 복습
사칙연산 : 연산이 일어날때 데이터타입이 다르면 한곳에 데이터 타입을 맞추어서 연산함.
*소수점을 보전하는 방향으로 변환됨
선택문
if 문
if(true or false) {
조건 true 시 실행되는 영역
}
Java
복사
•
if문에 속한 문장이 한 줄인 경우 중괄호 생략 가능
if else문
if(true or false) {
조건 true 시 실행되는 영역
} else {
조건 false 시 실행되는 영역
}
Java
복사
•
if문과 마찬가지로 if절 또는 else 절에 속한 문장이 하나일 경우 중괄호 생략 가능
switch 문
public static void main(String[] arg) {
int n= 3;
switch(n) {
case 1;
system.out.println("simple Java");
case 2;
system.out.println("Funny Java");
case 3;
system.out.println("Fantastic Java");
default;
system.out.println("The best programming language");
}
system.out.println("Do you like Java?);
}
}
Java
복사
실행결과는?
•
스위치문에 기본은 break;가 있어야함
Ex) switch문 예제 (월 입력받고 계절 출력하기)
import java.util.Scanner;
public class EX_0922_01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("몇월인가요?");
int month = sc.nextInt();
switch(month) {
case 12 : case 1 : case 2 :
System.out.println("겨울입니다");
break;
case 3 : case 4 : case 5 :
System.out.println("봄입니다");
break;
case 6 : case 7 : case 8 :
System.out.println("여름입니다.");
break;
case 9 : case 10 : case 11 :
System.out.println("가을입니다.");
break;
default :
System.out.println("잘못입력하셨습니다.");
}
}
}
Java
복사
Ex) 가위바위보 시스템
import java.util.Scanner;
public class ex_0922_02 {
public static void main(String[] args) {
System.out.println("가위 바위 보를 입력하세요!");
System.out.println("가위 : 0");
System.out.println("바위 : 1");
System.out.println("보 : 2");
Scanner sc = new Scanner(System.in);
int value = sc.nextInt();
int random = (int)(Math.random()*3);
while(true) {
if(value == 0) {
if(random == 0) {
System.out.println("비겼습니다");
break;
} else if(random == 1) {
System.out.println("패배했습니다.");
break;
} else if(random == 2) {
System.out.println("이겼습니다.");
break;
}
}
if(value == 1) {
if(random == 1) {
System.out.println("비겼습니다");
break;
} else if(random == 2) {
System.out.println("패배했습니다.");
break;
} else if(random == 0) {
System.out.println("이겼습니다.");
break;
}
}
if(value == 2) {
if(random == 2) {
System.out.println("비겼습니다");
break;
} else if(random == 0) {
System.out.println("패배했습니다.");
break;
} else if(random == 1) {
System.out.println("이겼습니다.");
break;
}
}
}
}
}
Java
복사
나와 같은데, 엄청 간단한 코드 (한번 이해해보자)
이건 강사님 소스코드
클래스와 객체
•
객체 지향 언어 : JAVA
◦
캡슐화
◦
상속
◦
추상화
◦
정보 은닉
•
클래스 정의
◦
기본구조 : 변수(필드)와 함수(메소드)가 존재.
◦
.class 파일 = 0101덩어리
•
객체 (=인스턴스)
◦
class가 두 개, Circle / CircleTest
◦
메인 메소드를 찾아 가장 먼저 실행되게 됨.
◦
Circle obj; ⇒ Circle은 데이터 타입(객체선언이라고도함) / obj는 변수명
→ 그렇다면 용량을 얼마나 잡는 것인가? 4byte
⇒ JVM은 32비트 시스템이기 때문에 4byte를 잡음. (솔직히 이해안감)
→ 메모리 안에 들어가는 내용은 무엇인가? 4byte 주소값이 들어간다
◦
obj = new Circle(); ⇒ 메모리에 값을 올리는 역할?
▪
참조형(reference type)의 선언 및 메모리
메소드 관련 예제 -1
public static void main(String[] args) {
System.out.println("프로그램의 시작");
hiEveryone(12);
hiEveryone(13);
System.out.println("프로그램의 끝");
}
public static void hiEveryone(int age) {
System.out.println("좋은 아침입니다.");
System.out.println("제 나이는 " + age + "세 입니다.");
}
Java
복사
•
public static 함수를 불러오기 위함?
•
int age : 파라미터
•
hiEveryone(12) ⇒ 12가 메모리에 올라감 hiEveryone 메소드에서 사용되고 휘발됨
미니프로젝트 (이해못함)
학생을 나타내는 클래스 Student를 만들어보자. 학생은 이름(name)과 학번(rollno), 나이를 가진다.
Student 클래스를 작성하고 객체를 생성하여 테스트하라.
*출력예시
학생의 이름 : Kim
학생의 학번 : 20180001
학생의 나이 : 20
Java
복사
class Student {
String name;
String id;
int age;
public String getName() {
return name;
}
public String getId() {
return id;
}
public int getAge() {
return age;
}
}
public class ex_0922_6 {
public static void main(String[] args) {
Student student = new Student();
student.name = "Hwang";
student.id = "20220001";
student.age = 20;
System.out.println("학생의 이름 : " + student.getName());
System.out.println("학생의 학번 : " + student.getId());
System.out.println("학생의 나이 : " + student.getAge());
}
}
Java
복사
Rectangle rec = new Reactangle();
rec.setWidth(10);
rec.setHeight(10);
Java
복사
class Rectangle {
private int width;
private int height;
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
public int getArea() {
return this.width * this.height;
}
}
public class ex_0922_7 {
public static void main(String[] args) {
Rectangle rec = new Rectangle(); //객체생성
rec.setWidth(10);
rec.setHeight(10);
System.out.println(rec.getArea());
}
}
Java
복사
•
this.width = witdth 라고 쓸경우 this. 는 다르다고 구분지어주는 것
1.
클래스명정하기
2.
변수명정하기
3.
함수정하기
4.
함수 : 자기가 가지고있는 변수를 컨트롤 하는 것
오늘 기억할 것
•
if문 안에 if 문은 구조적으로 else if 로 바꿀 수 있다. 되도록 if문 안에 if문은 쓰지 말라.
•
int[] 배열이라고 해서 int형 데이터타입이 아니라, 참조형 데이터 타입이다.
Scanner 사용시 주의사항!
디스코드에 코드 올리는 방법
궁금증
main 함수가 String[] args 파라미터를 받는 이유?
과제
1.
Grade 클래스를 만들고, 국어, 영어 수학을 입력 받는 기능을 만들고 평균이 90 수 우 미 양 가 를
출력하는 프로그램을 만드시오
위의 것을 테스트 하는 GradeTest 클래스를 만드시오.
3.
업 다운게임을 리펙토링해서 class로 만들어서 테스트클래스 따로 만들어라?