스포츠마케터의 초보 개발자 도전기
JAVA study 02 본문
수업시간에 간단한 업무도 처리하면서 수업을 들을려니 집중이 안된다.
여튼...
오늘의 수업
오늘 수업부터는 간단한 예시 문제가 추가되었다
1. Operator (연산자)
package ex1_operator;
public class Ex1_operator {
public static void main(String[] args) {
//Ctrl+/ 하면 여러줄 주석
//<연산자>
// 1. 최고연산자 : . , ()
// 2. 증감연산자 : ++, --
// 3. 산술연산자 : +, -, *, /, %
// 4. 시프트연산자 : >>, <<, >>>
// 5. 비교연산자 : >, <, >=, <=, ==, !=
// 6. 비트연산자 : &, |, ^, ~
// 7. 논리연산자 : &&, ||, !
// 8. 삼항(조건) 연산자 : ?, :
// 9. 대입연산자 : =, *=, /=, %=, +=, -=
//산술연산자
//4칙연산과 나머지 연산자를 가지고 있다.
int n1 = 20;
int n2 = 7;
int n3 = n1 + n2;
System.out.println("+연산 : " + n3); //syso Ctrl+space > System.out.println(); 단축키
n3 = n1 - n2;
System.out.println("-연산 : " + n3);
n3 = n1 * n2;
System.out.println("*연산 : " + n3);
n3 = n1 / n2; //정수끼리 나누기 연산자 사용시 몫만 가지고 옴
System.out.println("/연산 : " + n3);
n3 = n1 % n2; //정수끼리 나머지 연산자 사용시 두 수를 나눈 나머지만 가지고 옴
System.out.println("%연산 : " + n3);
float a1 = n1 / n2;
System.out.println(a1);
float a2 = (float)n1 / n2; //둘중 하나는 캐스팅을 해야 소숫점 아래자리까지 표기
System.out.println(a2);
System.out.println("--------------------");
//대입연산자 : 특정값을 변수에 전달하여 기억시킬때 사용하는 연산자
int i1 = 10;
int i2 = 7;
i1 += i2; //i1 = i1 + i2; 를 줄인것
System.out.println("+=연산자 : " + i1);
i1 -= 5;//i1 = i1 - 5;
System.out.println("-=연산자 : " + i1);
i1 %= i2;//i1 = i1 % i2;
System.out.println("%=연산자 : " + i1);
i2 /= 3;
System.out.println("/=연산자 : " + i2);
System.out.println("--------------------");
}//main
}
package ex1_operator;
public class Ex2_operator {
public static void main(String[] args) {
//비교연산자
//변수의 값을 비교하여 참과 거짓을 판단하는 연산자
int n1 = 10;
int n2 = 20;
boolean res = n1 < n2; // < 작다 lt(little than), > 크다 gt(greater than)
System.out.println("< 비교연산자 : " + res);
res = n1 >= n2;
System.out.println(">= 비교연산자 : " + res);
res = n1 == n2;
System.out.println("== 비교연산자 : " + res);
res = n1 != n2;
System.out.println("!= 비교연산자 : " + res);
System.out.println("--------------------");
//논리연산자
//비교연산자를 통한 연산이 두 개 이상 필요할때 사용
//&&(and) 연산자 : 앞쪽의 연산이 false라면 뒷쪽을 수행하지 않는다 (중요)
//true && true -> true
//true && false -> false
//false && true -> false
//false && false -> false
int age = 22;
int limit = 30;
boolean result = limit - age <= 5 && (age += 1) <= 25; //&&전 연산이 false면 뒷 연산은 아예 안함
System.out.println("age :" + age); //↑ &&전 연산이 false면 뒷 연산은 아예 안함 그래서 23이 아니고 22
System.out.println("&& 논리연산자 : " + result);
//|| (or) 연산자 : 앞쪽 연산이 true라면 뒷쪽을 수행하지 않는다(중요)
//true || true -> true
//true || false -> true
//false || true -> true
//false || false -> false
int i1 = 10;
int i2 = 20;
result = (i1 += 10) > 20 || i2 - 10 == 11;
System.out.println("|| 논리연산자 : " + result);
//!(not) 연산 : boolean 타입의 연산자 연산 값에 ! 를 붙이면 true-false 값이 바뀜
System.out.println(!result);//!은 일시적으로만 변경된 값을 제공
System.out.println(result);//없으면 원래 값으로 회귀
}//main
}
package ex1_operator;
public class Ex3_operator {
public static void main(String[] args) {
//증감연산자
//1씩 증가시키거나, 1씩 감소시키는 연산자
//선행증감과 후행증감의 차이점을 구별할 줄 알아야 함
int a = 10;
System.out.println("a :" + ++a); //선행증가
int b =10;
System.out.println("b : " + b++); //후행증가
System.out.println(b);
b++;//11 (12)
--b;//11 (11)
--b;
++b;
b--;
++b;
b++;
System.out.println(b--);
System.out.println(b);
System.out.println("---------------------");
//삼항(조건)연산자
//하나의 조건식을 주고, 그 결과가 참일때와 거짓일때에 따라 원하는 형태의 값을 언어내고자 할 때 사용하는 연산자
a = 10;
b = 15;
int res = ++a >= b ? 10 : 50; // a < b ? c : d; a가 b보다 작을때(참) c값, 클때(거짓) d값 //자료형은 연산결과에 따라 지정
System.out.println("res : " + res);
int n1 = 10;
int n2 = 20;
char res2 = (n1 += n1) == n2 ? 'A' : 'B';
System.out.println("res2 : " + res2);
}//main
}
package ex1_operator;
public class Ex4_operator {
public static void main(String[] args) {
int a = 10;
int b = 12;
char res = ++a >= b || 2 + (b - 5) <= b && a + 2 - b >= 0 && (a += b) - (a % b) > 10 ? 'O' : 'X';
//11 >= 12 || 9 <= 12 (true) && 1 >= 0 (true) && 23 - 11 > 10
System.out.println(res);
System.out.println("---------------------");
/* 연습문제
과수원이 있다.
배, 사과, 오렌지를 키우고 있는데
하루생산량은 5, 7, 5개
1) 과수원에서 하루에 생산되는 과일의 총 갯수를 출력
2) 시간당 전체 과일의 평균 생산 갯수를 출력
* 단, 평균값을 담을 변수는 float로 생성할 것
*/
int pear = 5; //처음부터 자료형을 int 말고 float로 해도 됨 (비추)
int apple = 7;
int orange = 5;
int dailyTotal = pear + apple + orange; //dailyTotal을 float 자료형 형태로 받아도 됨
System.out.println("일 전체 생산 갯수 : " + dailyTotal);
float dailyAvgPerHour = (float)dailyTotal / 24; //이렇게 예외적 캐스팅해도 되고, 24를 24f 타입으로 바꿔도 됨
System.out.println("일 평균 생산 갯수 : " + dailyAvgPerHour);
}//main
}
2. Control Statement (제어문)
1) if / else / else if
package ex2_control_statement;
public class Ex1_if {
public static void main(String[] args) {
//제어문 : 프로그램의 흐름을 제어하는 문장
//1) 분기문 : if, switch
//2) 반복문 : for, while
/*if문의 형태 : if( 조건식 ) {
조건식이 참일 때 수행되는 영역;
}*/
int n = 51;
//String - ""안에 여러 글자(문장, 문자열)를 입력할 수 있는 (자료)형
String str = ""; //가방은 있으나 안에 내용이 없음
//String str = null; 이런 형태는 담을 가방조차 없음
if( n == 50 ) {
str = "n은 50입니다";
}
if( n != 50 ) {
str = "n은 50이 아닙니다";
}
System.out.println(str);
}//main
}
package ex2_control_statement;
public class Ex2_if_else {
public static void main(String[] args) {
//if-else : 조건이 참일때만 결과를 만들어 낼 수 있는 if문과는 달리
//조건이 참일때와 거짓일때를 모두 커버할 수 있는 제어문
/* if( 조건식 ) {
조건식이 참일때 수행하는 영역;
}else {
조건식이 거짓일때 수행하는 영역;
}
*/
char gender = '여';
if( gender == '남') {
//조건식이 참일때 접근하는 영역
System.out.println("남자화장실로 가시오");
}else {
//조건식이 거짓일 때 반드시 수행되는 영역
System.out.println("여자화장실로 가시오");
}
System.out.println("--------------------");
int age = 20;
String str ="";
if(age >= 20) {
str = "합격";
}else {
str = "불합격";
}
System.out.println(str);
System.out.println("--------------------");
//age변수에 나이를 대입하고
//height 변수에 키를 대입
//나이가 15살 이상이면서 키가 150이상이면
//'롤러코스터 탑승가능'
//그렇지 않다면
//'롤러코스터 타지말고 회전목마나 타시지'
int height = 160;
String res ="";
if(age >= 15 && height >= 150) {
res = "롤러코스터 탑승가능";
//System.out.println("롤러코스터 탑승가능");
}else {
res = "롤러코스터 타지말고 회전목마나 타시지";
//System.out.println("롤러코스터 타지말고 회전목마나 타시지");
}
System.out.println(res);
System.out.println("--------------------");
//위의 회전목마 코드를 삼항연산자로 변경하시오
res = age >= 15 && height >= 150 ? "탑승가능" : "탑승불가능";
System.out.println(res);
}//main
}
package ex2_control_statement;
public class Ex3_else_if {
public static void main(String[] args) {
//else-if : 여러개의 조건 비교가 필요할 때 사용
int num = 75;
String res ="";
if ( num >= 90 ) {
res = "A";
}else if( num >= 80 ){
res = "B";
}else if( num >= 70) {
res = "C";
}else if( num >= 60) {
res = "D";
}else {
res = "F";
}
System.out.println(res);
}//main
}
2) switch
package ex3_control_statement;
public class Ex1_switch_case {
public static void main(String[] args) {
//switch-case문 : 비교값과 조건값을 통해 원하는 결과를 찾아내는 제어문
//switch문에서 사용가능한 비교값의 타입
//정수(byte, short, int)
//문자(char), 문장/문자열(String)
// 정수타입 중 *long은 안됨, 실수(float, double) 안됨 /boolean 안됨
/*
switch( 비교값 ){
case 조건값:
비교값과 조건값이 일치하면 실행되는 영역
break;
}
*/
int n = 2;
//비교값과 조건값의 valueType은 반드시 일치해야 한다
switch( n ) {//비교값
case 1 : //조건값
System.out.println("1.게임시작");
break;
case 2 :
System.out.println("2.게임소개");
break;
case 3 :
System.out.println("3.게임종료");
break;
default : //예를 들어 1~3까지의 값을 입력하지 않고 실수로 다른 수를 입력할 경우가 있을 수 있기 때문에 하나의 가이드를 주는 디폴트값을 높은 확률로 switch문 마지막에 넣는다.
//비교값과 조건값이 하나도 일치하지 않을 때
System.out.println("1~3까지만 입력하세요");
break;
}//switch
}//main
}
package ex3_control_statement;
public class Ex2_switch_case {
public static void main(String[] args) {
char sungjuck = 'B';
switch ( sungjuck ) {
case 'A' :
System.out.println("90 ~ 100");
break;
case 'B' :
System.out.println("80 ~ 89");
break;
case 'C' :
System.out.println("70 ~ 79");
break;
case 'D' :
System.out.println("60 ~ 69");
break;
case 'F' :
System.out.println("59점 이하");
break;
default :
System.out.println("해당성적은 존재하지 않습니다.");
break;
}//switch
}//main
}
package ex3_control_statement;
public class Ex3_switch_case {
public static void main(String[] args) {
String lastName = "경주김씨";
switch( lastName ) {
case "김해김씨" :
System.out.println("412만명");
break;
case "경주김씨" :
System.out.println("173만명");
break;
case "광산김씨" :
System.out.println("483만명");
break;
default :
System.out.println("죄송합니다. 데이터가 없습니다.");
break;
}//switch
}//main
}
예제1) switch 예제
package ex4_work;
public class Ex1_work {
public static void main(String[] args) {
//12월은 31일까지 있습니다. 를 Switch문으로 표현하세요.
int month = 12;
switch ( month ) {
case 1 :
System.out.println("1월은 31일까지 있습니다.");
break;
case 2 :
System.out.println("2월은 28일까지 있습니다.");
break;
case 3 :
System.out.println("3월은 31일까지 있습니다.");
break;
case 4 :
System.out.println("4월은 30일까지 있습니다.");
break;
case 5 :
System.out.println("5월은 31일까지 있습니다.");
break;
case 6 :
System.out.println("6월은 30일까지 있습니다.");
break;
case 7 :
System.out.println("7월은 31일까지 있습니다.");
break;
case 8 :
System.out.println("8월은 31일까지 있습니다.");
break;
case 9 :
System.out.println("9월은 30일까지 있습니다.");
break;
case 10 :
System.out.println("10월은 31일까지 있습니다.");
break;
case 11 :
System.out.println("11월은 30일까지 있습니다.");
break;
case 12 :
System.out.println("12월은 31일까지 있습니다.");
break;
default :
System.out.println("올바른 달을 입력하세요");
break;
}//switch
}//main
}
package ex4_work;
public class Ex2_work {
public static void main(String[] args) {
//아래 세개가 가진 변수를 보고 한줄로 표현 (계산기)
int su1 = 20;
int su2 = 5;
String op = "*";
switch ( op ) {
case "+" :
System.out.println(su1 + op + su2 + "=" + (su1 + su2));
break;
case "-" :
System.out.println(su1 + op + su2 + "=" + (su1 - su2));
break;
case "*" :
System.out.println(su1 + op + su2 + "=" + (su1 * su2));
break;
case "/" :
System.out.println(su1 + op + su2 + "=" + (su1 / su2));
break;
default :
System.out.println("올바른 식을 입력하세요.");
break;
}//switch
}//main
}
예제2) if 예제
package ex4_work;
public class Ex3_work {
public static void main(String[] args) {
//연도가 4로 나누어 떨어지면 윤년이다.
//연수가 100으로 나누어 떨어지면 평년
//4년 주기라도 100으로 나누어 떨어지면 평년
//100으로 나누어 떨어지더라고 400으로 나누어 떨어지면 윤년
int year = 2040;
String res = "";
if ( year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) {
res = "윤년";
}else{
res = "평년";
}
System.out.println(year+"년은 "+res+"입니다");
}//main
}
'develop > JAVA' 카테고리의 다른 글
JAVA study 05 (0) | 2024.03.05 |
---|---|
JAVA study 04 (0) | 2024.03.05 |
JAVA study 03 (1) | 2024.03.05 |
JAVA study 01 (4) | 2024.03.05 |
Prologue (0) | 2024.03.05 |