휴먼교육센터 개발자과정 18일차

조하영·2022년 8월 24일
0

jdk-자바로 개발하기 위한 도구, 여기에 jre가 포함되어 있다.

jre- 자바프로그램을 컴퓨터가 이해할 수 있는 언어로 바꿔주는 컴파일러
가끔씩 프로그램을 설치할때 자바를 설치해야 한다는 것을 본적 있을것이다.
사용자 입장에서 말하는 자바가 jre이다.
개발된 자바를 실행하기 위한 도구

가장 중요한 단어는 컴파일러
컴파일러는 원시프로그램을 목적프로그램으로 변환하는 도구
원시프로그램은 개발자가 작성한 언어, 개발자가 작성한 언어는 컴퓨터가 이해하지 못함
그래서 이를 컴퓨터가 이해할 수 있는 기계어(0,1로 이루어진 언어)로 번역해주는 것이 컴파일러.


문자는 '작은따옴표' 문자열은 "큰따옴표"로 표시

문자 h 출력
System.out.print('h');

문자열 10 출력
System.out.print("10");

숫자 10 출력
System.out.print(10);

화면 출력 후 줄바꿈
System.out.println();

실습
Day01_01_01로 클래스를 만들고 다음과 같은 내용을 화면에 출력

자바공부
시작
오늘부터 1일
@

조건: 위에서 1은 숫자이다. @는 문자이다, 라인수가 최대한 적게 작성.
System.out.println("자바공부\n시작\n오늘부터 "+1+"일\n"+'@');


자바의 영역구분 { }, 들여쓰기 tab,
자료형(숫자 int, '문자' char, "문자열" String, 실수 double), 변수(자료를 저장하는 기억공간)

변수를 사용할때는 선언해야 한다.(선언문)
변수 선언 문법 : 자료형 변수명 = 값;
예) int daycnt = 3; daycnt라는 변수에 3이라는 정수가 담겨있다.
여기서 '='은 대입연산자로 오른쪽의 값을 왼쪽에 대입한다.


실습
클래스 Day01_01_02
동물의 정보를 변수로 지정하고 이를 출력하는 프로그램 작성
변수명은 임의
동물이름 문자열
동물나이 숫자
동물성별 문자(m or f)
동물보호자 문자열

위 4개의 변수를 선언, 값을 임의대로 설정
위 4개의 변수를 모두 출력
이름 나이 성별 보호자가 출력될때는 각각 줄바꿈을 한다.

String ani_name = "곰이";
int ani_age = 2;
char ani_sex = 'f';
String ani_prt = "조하영";

System.out.println(ani_name);
System.out.println(ani_age);
System.out.println(ani_sex);
System.out.println(ani_prt);

단축키
sysout + cntr+ space = System.out.println();


연산자
사칙연산: 덧셈 + , 뺄셈 - , 곱셈 * ,
나눈 후 몫 반환 / , 나눈 후 나머지 반환 %

문제
int a=10;
int b=20;
int result=0;

result = a+b;

System.out.println("결과값: "+ result);

출력결과
결과값: 30

문제
int a=18;
int b=4;
int result=0;
int result1=0;
int result2=0;
int result3=0;

result = a-b;
result1 = a*b;
result2 = a/b;
result3 = a%b;

System.out.println("결과값1 : "+ result);
System.out.println("결과값2 : "+ result1);
System.out.println("결과값3 : "+ result2);
System.out.println("결과값4 : "+ result3);
System.out.println("결과값5 : "+ (a-b));

출력결과

결과값1 : 14
결과값2 : 72
결과값3 : 4
결과값4 : 2
결과값5 : 14

문제
double a=18;
double b=4;
double result=0;
double result1=0;
double result2=0;
double result3=0;

result = a-b;
result1 = a*b;
result2 = a/b;
result3 = a%b;

System.out.println("결과값1 : "+ result);
System.out.println("결과값2 : "+ result1);
System.out.println("결과값3 : "+ result2);
System.out.println("결과값4 : "+ result3);
System.out.println("결과값5 : "+ (a-b));

출력결과
결과값1 : 14.0
결과값2 : 72.0
결과값3 : 4.5
결과값4 : 2.0
결과값5 : 14.0

double은 int를 담을 수 있지만
int는 double을 담을 수 없다.


오후 실습
다음문제를 해결하세요
오늘 내용의 응용입니다, 블러그 등 검색 노노, 노트 보면서 풀어보세요

1. 결과값을 손코딩한 후 실제코드로 피드백하세요
int a =10;
int b = 20;
int c = 20;
c=40;
a = b+20;
c = a+b;
b=c;
sysout(a);
sysout(b);
sysout(c);

답: 40 , 60, 60

2. 결과값을 손코딩한 후 실제코드로 피드백하세요
String a ="human";
String b ="school";
String c ="good";
a=c;
a=b+c;
b="abce";
sysout(a);
sysout(b);
sysout(c);

답: schoolgood, abce, good

3. 결과값을 손코딩한 후 실제코드로 피드백하세요
int a = 10;
int b = 2;
a = 10%2;
sysout(a);
sysout(b);

답: 0, 2

4. 다음코드의 문제가 있는 부분을 찾아서 설명하세요.
< 손코딩한 후 실제코드로 피드백하세요>

int a=20;
int b=40;
int result = 0;
result = a +b;
result = a + c; ->c라는 변수가 선언되지 않았다. 만일 문자 c라면 'c'로 했어야 한다.
c = a + b; ->c라는 변수를 선언하지 않아서 a+b를 할 수 없음.
d = a - b; ->d라는 변수를 선언하지 않아서 a-b를 할 수 없음

4번까지는 각 조에서 해결하고, 5번 부터는 다른 조의 도움을 받아도 됩니다. ~~~

5. 다음 수식을 완성하세요 < 손코딩한 후 실제코드로 피드백하세요>
int a = 1000; // a의 거리
int b = 400; // b의거리
int gaptime = 0; // a의 현재 위치에 b가 걸어 가려고 할 때 필요한 시간, b는 1분에 100m를 간다.
예를들어 gaptime이 2이면 2분이고, 걸어간 길이는 200m이다.
gaptime = 수식; 조건: 수식은 a과 b의 값이 변할때마다 결과값도 바뀌어야 한다.
sysout(gaptime +"분 필요합니다");

답: gaptime= (a-b)/100

6. 철수와 철희는 홀짝게임을 한다. < 손코딩한 후 실제코드로 피드백하세요>
철수가 제시한 숫자가 홀인찌 짝인지 구분하려고 한다.
철수가 제시한 숫자를 int a = 32; 라고 가정한다.
int result에는 홀과 짝을 판별한 결과가 저장된다. 홀이면 1이 저장되고 짝이면 0이 저장된다.

답: int result = a%2;

7. int a = 1234; 가 있다. < 손코딩한 후 실제코드로 피드백하세요>
백단위만 출력하시오.

답: System.out.println((a%1000)/100);

8. 거스름돈을 천원짜리 0개, 백원짜리 0개, 십원짜리 0개, 1원짜리 0개의 형식으로 출력하세요.
int a = 10000; // 손님이 낸 금액 < 손코딩한 후 실제코드로 피드백하세요>
int pay = 4500; // 물건 가격
int jandon = a - pay; // 거스름돈

답: System.out.println("천원짜리 "+ jandon/1000 + "개, "+
"백원짜리 " +((jandon%1000)/100)+"개, "+
"십원짜리 "+(((jandon%1000)%100)/10)+"개, "+
"일원짜리 "+(((jandon%1000)%100)%10)+"개");

9. 다음 코드가 오류가 있다면 오류를 설명하시고, 오류가 없다면 결과값을 적으세요

  int a=10;
  a = a +'a'+'b'; 
  System.out.println(a);

->a는 int형이기 때문에 문자 a,b가 들어갈 수 없을것 같지만 문자를 유니코드 값으로 변경하여
값이 205로 출력 a=97, b=98, 즉 10+97+98=205
문자열은 안되며 문자만 가능


형 변환

1.자동 형 변환
작은 자료형이 큰 자료형으로는 자동 형변환이 된다.
char->int 가능
int->double 가능
반대로는 자동 형변환이 안되고 강제 형변환 해야 한다.

2.강제 형 변환
변경하고자 하는 자료형을 소괄호로 표현
double d=13.1;
int e= d; ->에러발생
int e=(int)d;-> 강제 형변환됨.

System.out.println(e); -> 정수 13 출력


실습

클래스 새로 만들어 작성
학생의 성적을 저장하고 성적표를 출력하는 프로그램을 작성
영어점수, 수학점수, 자바점수, 오라클 점수, mysql점수
*점수는 임의대로 출력

문제1. 과목의 점수를 모두 출력(소수점 없음)
문제2. 모든 과목의 점수와 총합을 출력하시오.(소수점 없음)
문제3. 평균을 출력하시오(소수점 있음)

int eng=84;
int math=92;
int java=89;
int orcl=81;
int mysql=95;
int sum=0;
double avg=0;

sum= eng+math+java+orcl+mysql;
avg= (double)sum/5;

System.out.println("영어: "+eng+"점, "+"수학: "+math+"점, "
+"자바: "+java+"점, "+ "오라클: "+orcl+"점, "
+"Mysql: "+mysql+"점");
System.out.println("점수 총합: "+sum+"점");
System.out.println("평균: "+avg+"점");

출력결과
영어: 84점, 수학: 92점, 자바: 89점, 오라클: 81점, Mysql: 95점
점수 총합: 441점
평균: 88.2점

profile
공부하는 개발자

0개의 댓글