모니터로 변수값 출력하기
println(내용); : 괄호안의 내용을 출력하고 행을 바꿔라
print(내용); : 괄호 안의 내용을 출력만 해라
printf(내용); : 괄호 안의 첫 번째 문자열 형식대로 내용을 출력해라
printf("형식문자열", 값1, 값2, '''')
%형는 형식 문자열의 시작을 뜻함
conversion에는 제공되는 값의 따라 d(정수), f(실수), s(문자열)
형식 문자열에 포함될 값이 2개 이상일 경우 값의 순번을 알려줘야함
System.out.printf("전화: %1$s-%2$s-%3$s", "010", 123, 4567);
flags는 빈 자리를 채우는 방법, 생략되면 왼쪽 공백으로 채워지고, -가 오면 오른쪽 공백으로 채워짐
0은 공백 대신 0으로 채움
%6d : 6자리 정수, 왼쪽 빈 자리 공백 =123
%-6d : 6자리 정수, 오른쪽 빈 자리 공백 = ___123
%06d : 6자리 정수, 왼쪽 빈 자리 공백 0 채움 = 000123
%10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈 자리 공백 : ___123.45
Scanner
package chap02_2;
import java.util.Scanner;
public class scanner_01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inputData;
System.out.println("입력>");
while(true) {
inputData = scanner.nextLine();
System.out.println("입력된 문자열: \"" + inputData + "\"");
boolean result = inputData.equals("김씨");
System.out.println(result);
//
if (inputData.equals("q")) {
break;
}
}
System.out.println("종료");
}
}
연산자와 연산식
연산에 사용되는 표시나 기호를 연산자, 연산되는 데이터 피연산자, 연산의 과정 기술 한 것은 연산식
산술 연산자일 경우는 숫자 타입 ( byte, short, int, long, float, double ) 으로 결과값
비교 연산자와 논리 연산자는 논리 타입(boolean)으로 결과값
연산식은 반드시 하나의 값을 산출
*, /, % 는 같은 우선순위 왼쪽에서 오른쪽 방향으로 연산
단항 연산자(++, --, ~, !), 부호 연산자(+, -), 대입 연산자(=, +=, -=, ..)는 오른쪽에서 왼쪽 방향으로 연산
( ) 괄호 부분의 연산은 최우선순위 필요할 때 사용
연산자의 종류
단항 연산자
부호 연산자(+, -), 증감 연산자(++, --), 논리 부정 연산자( ! )
int x = -100;
int result1 = +x;
int result2 = -x;
result1은 음수 -100이 그대로 저장
result2은 양사 100이 저장
byte 타입 변수를 부호연산하면 int 타입으로 변환
증감 연산자
package sec02.exam01;
public class SignOpEx {
public static void main(String[] args) {
int x = 10;
int y = 10;
int z;
System.out.println("-----------------");
x++;
++x;
System.out.println("x=" + x);// 12
System.out.println("-----------------");
y--;
--y;
System.out.println("y=" + y);// 8
System.out.println("-----------------");
z = x++;
System.out.println("z=" + z);//12
System.out.println("x=" + x);//13
System.out.println("-----------------");
z = ++x;
System.out.println("z=" + z);//14
System.out.println("x=" + x);//14
System.out.println("-----------------");
z = ++x + y++;
System.out.println("z=" + z);//23
System.out.println("x=" + x);//15
System.out.println("y=" + y);//9
boolean play = true;
System.out.println(!play);//false
boolean play2 = !true;
System.out.println(!play2);//true
float f1 = 0.1f;
System.out.printf("%1.20f\n", f1);//0.10000000149011612000
// 소수점 이상 1, 소수점 이하 20
// ( float은 소수점 이하 7자리까지 맞음 )
double d1 = 0.1;
System.out.printf("%1.20f\n", d1);//0.10000000000000000000
// 소수점 이상 1, 소수점 이하 20
// ( double은 소수점 이하 15자리까지 맞음 )
}
}
이항 연산자
/ 나누기, %나머지
long타입을 제외한 정수 타입 연산은 int타입으로 산출되고
피연산자 중 하나라도 실수 타입이면 실수 타입으로 산출
byte + byte -> int + int = int
int + long -> long + long = long
int + double -> double + double = double
package sec02.exam01;
public class sjh {
public static void main(String[] args) {
// 잘못된 코딩 예
byte byte1 = 1;
byte byte2 = 1;
// byte byte3 = byte1 + byte2; 컴파일 에러
// 올바른 코딩 예
int result3 = byte1 + byte2;
}
}
package sec02.exam01;
public class sjh {
public static void main(String[] args) {
int int1 = 10;
int int2 = 4;
int result2 = int1 / int2;
double result3 = int1 / int2;
double result4 = (double)int1 / int2;
System.out.println(result2); // 2
System.out.println(result3); // 2.0
System.out.println(result4); // 2.5
}
}
int1 / int2 연산 후의 결과가 2이므로 2를 실수화해서 2.0이 저장됨
2.5 결과를 얻고 싶다면 int1과 int2 중 하나를 (double) 강제 타입 변환해야 됨
문자열 결합 연산자(+)
package sec02.exam01;
public class sjh {
public static void main(String[] args) {
String str1 = "JDK" + 6.0;
String str2 = str1 + "특징";
System.out.println(str1); // JDK6.0
System.out.println(str2); // JDK6.0특징
System.out.println("JDK" + 3 + 3.0); // JDK33.0
System.out.println(3 + 3.0 + "JDK"); // 6.0JDK
}
}
비교연산자
피연산자가 char 타입이면 유니코드 값으로 비교 연산을 수행,
'A'의 유니코드는 65이고, 'B'의 유니코드는 66이므로 비굔 연산자는 65와 66을 비교
('A' < 'B') -> (65 < 66)
비교 연산자에서도 연산을 수행하기 전에 피연산자의 타입을 일치 시킴
'A' == 65 -> 65 == 65 -> true
3 == 3.0에서 3이 double 타입으로 변환되어 3.0 == 3.0 비교
3 == 3.0 -> 3.0 == 3.0 -> true
한 가지 예외는 0.1 == 0.1f와 같은 경우에는 false가 됨
0.1f는 0.1의 근사값(0.100000223234) 표현되기 때문에
해결법은 모두 float타입은 바꾸거나 정수로 변경
논리 연산자
&&, || 는 앞의 피연산자가 true, false면 뒤의 피연산자를 평가하지 않고 바로 결과 내림
대입 연산자
package sec02.exam01;
public class Ex002 {
public static void main(String[] args) {
int result = 0;
result +=10;
System.out.println("result=" + result);
result -=5;
System.out.println("result=" + result);
result *=3;
System.out.println("result=" + result);
result /=5;
System.out.println("result=" + result);
result %=3;
System.out.println("result=" + result);
}
}
//결과
//result=10
//result=5
//result=15
//result=3
//result=0
삼항 연산자
조건식을 연산하여 true가 나오면 삼항 연산자의 결과는 피연산자2가 됨
반대로 조건식을 연산하여 false가 나오면 삼항 연산자의 결과는 피연산자3
실습
scanner
package chap02_2;
import java.util.Scanner;
public class scanner_01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inputData;
System.out.println("입력>");
while(true) {
inputData = scanner.nextLine();
System.out.println("입력된 문자열: \"" + inputData + "\"");
boolean result = inputData.equals("김씨");
System.out.println(result);
//
if (inputData.equals("q")) {
break;
}
}
System.out.println("종료");
}
}
package chap02_2;
import java.util.Scanner;
public class scanner_02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 수:");
String strNum1 = scanner.nextLine();
int num1 = Integer.parseInt(strNum1);
System.out.print("두번째 수:");
String strNum2 = scanner.nextLine();
int num2 = Integer.parseInt(strNum2);
int result = num1 + num2;
System.out.println("합계"+result);
}
}
package sec02.exam01;
import java.awt.GraphicsDevice;
import java.util.Scanner;
public class study {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int kor, math, eng, tot, grade;
double avg;
int score = 100;
System.out.print("국어");
kor = Integer.parseInt(scanner.nextLine());
System.out.print("수학");
math = Integer.parseInt(scanner.nextLine());
System.out.print("영어");
eng = Integer.parseInt(scanner.nextLine());
System.out.print("학생");
String name = scanner.nextLine();
tot = kor + math + eng;
avg = tot / 3.0;
grade = (kor >= 90 ) ? 'A' : ((kor >=80) ? 'B' : 'C');
System.out.printf("국어점수: %d (%c)\n", kor, grade);
grade = (math >= 90 ) ? 'A' : ((math >=80) ? 'B' : 'C');
System.out.printf("수학점수: %d (%c)\n", math, grade);
grade = (eng >= 90 ) ? 'A' : ((eng >=80) ? 'B' : 'C');
System.out.printf("영어점수: %d (%c)\n", eng, grade);
System.out.println("학생이름:" + name);
System.out.println("국어점수:" + kor);
System.out.println("수학점수:" + math);
System.out.println("영어점수:" + eng);
System.out.println("총점:" + tot);
System.out.printf("평균:%3.2f\n:" , avg);
}
}
package sec02.exam01;
import java.util.Scanner;
public class study2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int kor, math, eng, tot, grade;
double avg;
int score = 100;
System.out.print("국어");
kor = Integer.parseInt(scanner.nextLine());
System.out.print("수학");
math = Integer.parseInt(scanner.nextLine());
System.out.print("영어");
eng = Integer.parseInt(scanner.nextLine());
System.out.print("학생");
String name = scanner.nextLine();
tot = kor + math + eng;
avg = tot / 3.0;
if (kor >= 90) {
grade = 'A';
}else if(kor >= 80) {
grade = 'B';
}else {
grade = 'C';
}
System.out.printf("국어점수: %d (%c)\n", kor, grade);
if (math >= 90) {
grade = 'A';
}else if(math >= 80) {
grade = 'B';
}else {
grade = 'C';
}
System.out.printf("국어점수: %d (%c)\n", kor, grade);
if (eng >= 90) {
grade = 'A';
}else if(eng >= 80) {
grade = 'B';
}else {
grade = 'C';
}
System.out.printf("국어점수: %d (%c)\n", kor, grade);
}
}
나머지 실습
package sec02.exam01;
public class tests {
public static void main(String[] args) {
String name = "감자바";
int age = 25;
String tel1="010", tel2="123", tel3="4567";
System.out.println("이름:" + "감자바");
System.out.print("나이: 25\n");
System.out.printf("전화: %1$s-%2$s-%3$s", "010", 123, 4567);
int x11 = 10;
int x12 = 3;
System.out.println(x11/x12); // 몫
System.out.println(x11%x12); // 나머지
}
}
//삼항
package sec02.exam01;
import java.awt.desktop.ScreenSleepEvent;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;
public class Ex003 {
public static void main(String[] args) {
int score = 85;
char grade = (score > 90) ? 'A' : ((score > 80) ? 'B' : 'C');
System.out.println(score + "점은" + grade + "등급입니다.");
}
}
package sec02.exam01;
public class Ex001 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 10;
boolean result1 = (num1 == num2);
boolean result2 = (num1 != num2);
boolean result3 = (num1 <= num2);
System.out.println("result1" + result1);
System.out.println("result2" + result2);
System.out.println("result3" + result3);
char char1 = 'A';
char char2 = 'B';
boolean result4 = (char1 < char2);
System.out.println("result4" + result4);
}
}
//결과
//result1true
//result2false
//result3true
//result4true
'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글
2023-05-23 6일차 (0) | 2023.05.23 |
---|---|
2023-05-22 5일차 (0) | 2023.05.22 |
2023-05-18 3일차 (0) | 2023.05.18 |
2023-05-17 2일차 (0) | 2023.05.17 |
2023-05-16 1일차 (0) | 2023.05.16 |