상 수 : 변하지 않는 값 (final를 선언, 리터럴도 포함)
변 수 : 변하는 값 (갑을 저장하는 그릇-데이터를 담아둘 메모리 공간) //맨 마지막에 담는 것이 남아있음
변수이름은 알파벳, 숫자, '_', '$' 만 조합 (공백, 특수문자 제외)
첫글자는 알파벳(대소문자) 또는 '_'와 '$' 시작할 수 있다. (숫자시작은 X)
대소문자 구분, 예약어 사용 제외 (int, boolean, return, if 등)
자료형 : Data Type
- 기본자료형 - 문자형 (char<2byte>) (c/c++은 1이지만 자바는 2바이트이기 때문에 자바는 한글로 한글자가 가능하다.)
- 숫자형 (정수형<byte(1byte), short(1), int(4), long(8)> / 실수형 <float(4), double(8)>)
- 논리형 (boolean) -> true / false ( 0 / 1 아니다 )
- 참조자료형 - 클래스 (String, ...)
- 인터페이스 (Collection, ...)
- 배열 ( [ ] )
------------------------------------------------------------------------------------------------------------------------------------------------------
**실습**
//새클래스 만들기 = src -> default package -> new -> class -> 이름 MySample1031
//변수
int year = 0; // int 자료형 / year 변수명 / = : 초기값세팅 (오른쪽에는 값, 왼쪽에는 값을 담는 변수명)
int age = 15;
System.out.println("year : " + year);
System.out.println("age : " + age);
year = age + 2000; // =는 가장 마지막에 계산 / 이번 line 이후로 year은 2015
age = age + 1; // 이번 line 밑으로는 age는 16
System.out.println(year);
System.out.println(age);
//------------------------------------------------------------------------------------------------------//
int x, y, z; // 자바에서는 변수선언과 동시에 초기값을 설정해야 사용가능함. -> x,y,z 출력 안됨
int a = 1, b = 2, c = 3;
x = 10;
y = 20;
z = 30;
System.out.println(x);
System.out.println(y);
System.out.println(z);
/*
출력예) x : 10 y : 20
x : 20 y : 10
단, x y 변수로만 출력가능 System.out.println("x : " + x + " y : " + y);
x, y 변수 값으로 교환하여 출력
*/
int x = 10, y = 20;
int tmp = 0; // 변수 두개 값을 바꾸는 방법 -> 임시로 변수만듬 (항상 삼각형을 생각해보기)
System.out.println("x : " + x + " y : " + y);
tmp = x;
x = y;
y = tmp;
System.out.println("x : " + x + " y : " + y);
------------------------------------------------------------------------------------------------------------------------------------------------------
* Scanner 화면에서 입력받기
Scanner 클래스를 사용하려면 : import java.util.*;
Scanner 객체 생성 : Scanner scn = new Scanner(System.in); -> Scanner (데이터타입이 클래스) / scn (변수명) / new 뒤의 Scanner는 메서드 아니고 생성자
nextLine() 메서드를 호출하여 입력대기상태에 있다가 엔터키를 누르면 입력내용이 문자열로 반환됨
String input = scn.nextLine(); -> String (문자형데이터) / input(변수명) / scn안에있는 nextLine메소드를 사용해 input에 담는다.
int num = Integer.parselnt(input); -> 입력받은값을 정수형으로 변환
// 두자리 정수를 하나 입력받아 출력하는 프로그램
import java.util.Scanner;
Scanner scn = new Scanner(System.in);
System.out.print("정수를 하나 입력하세요.>");
String input = scn.nextLine(); // >뒤에 엔터칠때까지 기다렸다가 치면 문자열로 반환
int num = Integer.parseInt(input); //Integer.parseInt 문자열을 정수형을로 바꾸는 것
System.out.println("입력바든 값 : " + input);
System.out.printf("num = %d \n", num);
결과
정수를 하나 입력하세요.>2
입력바든 값 : 2
num = 2
------------------------------------------------------------------------------------------------------------------------------------------------------
// 상수(final) - 상수는 바꿀수 없다. 상수는 선언과 동시에 초기값 세팅한다. MAX_VALUE 처럼
// 룰 : 변수는 소문자로 시작, 단어와단어 연결할때 두번째 단어부터 첫자대문자로 사용
but 상수는 모두 대분자로 쓰되 단어와 단어 사이 언더바를 사용한다.
//상수(final) - 상수는 바꿀수 없다. 상수는 선언과 동시에 초기값 세팅한다. MAX_VALUE 처럼
// 룰 : 변수는 소문자로 시작, 단어와단어 연결할때 두번째 단어부터 첫자대문자로 사용
// BUT 상수는 모두 대분자로 쓰되 단어와 단어 사이 언더바를 사용한다.
final int MAX_SPEED; //상수 선언시 초기값 설정도 같이하도록함. (1.6이하)
final int MAX_VALUE = 10; // 상수선언 후 첫번째 값 대입가능 (jdk 1.6 이후부터)
MAX_SPEED = 20;
System.out.println(MAX_SPEED);
System.out.println(MAX_VALUE);
------------------------------------------------------------------------------------------------------------------------------------------------------
* 연산자
특정한 연산을 수행하기 위해 사용하는 기호
산술, 단항, 비교, 논리, 쉬프트, 기타 연산자로 구분
˙ 산술연산자 → +, -, *, /, %
˙ 단항 연산자 → - (부호연산자)
→ ! (논리부정 연산자)
→ ++, -- (증감 연산자)
˙ 비교 연산자 → >, <, >=, <=, ==, != (양변을 비교하는 연산)
˙ 논리 연산자 → &&, ||, ^ (AND, OR, XOR 연산)
˙ 쉬프트 연산자 → <<, >>, >>> (비트를 이동하는 연산)
˙ 기타연산자 → (조건) ? 참 : 거짓 (삼항 연산자)
→ =, +=, -=, *= (대입 연산자)
* 연산자 우선순위
* 제어문자 : 문자형에서 특별한 의미를 갖는 문자
** 실습 (산술연산자) **
//산술연산자
int a = 5;
int b= a + 2;
a = 7;
b = 5;
int plus = a + b;
int minus = a - b;
int multi = a * b;
int div = a / b;
int rest = a % b;
System.out.printf("%d + %d = %d \n", a, b, plus);
System.out.printf("%d - %d = %d \n", a, b, minus);
System.out.printf("%d * %d = %d \n", a, b, multi);
System.out.printf("%d / %d = %d \n", a, b, div);
System.out.printf("%d %% %d = %d \n", a, b, rest);
** 실습 **
// 증감연산자 (++, --)
// ++a, a++ => a + 1 * a 잔신에 1 증가 ++a 전치 : 먼저 증가 후 명령실행 / a++ 후치 : 명령실행 후 다음줄 내려가기 전 증가
// --a, a-- => a - 1 * a 잔신에 1 감소
a = 5;
System.out.println("a = " + a); // 5
a++; // 후치증가연산자
System.out.println("a1 = " + a); // 6
++a; // 전치증가연산자
System.out.println("a2 = " + a); // 7
a = 5;
System.out.println("a = " + a); // 5
System.out.println("a++ = " + a++); // 5
System.out.println("++a = " + ++a); // 7
// 감소연산자
a = 5;
System.out.println("a = " +a);
a--; // 후치감소연산자
System.out.println("a1 = " +a);
--a; // 전치감소연산자
System.out.println("a2 = " +a);
a = 5;
System.out.println("a = " + a); // 5
System.out.println("a = " + a--); // 5
System.out.println("a = " + --a); // 3
** 실습 **
/*
* 출력예) a++ = 10, ++b =11
* 실행후 a = 11, b = 10
* a-- = 10, --b =11
* 실행후 a = 10, b = 10
* 단, 최초 값은 a = 10, b = 10로 설정후 적용
*
*/
a = 10;
b = 10;
System.out.println("a++ = " + a++ + ", ++b = " + ++b);
System.out.println("실행후 a = " + a + ", b = " + b);
System.out.println("a-- = " + a-- + ", --b = " + --b);
System.out.println("실행후 a = " + a + ", b = " + b);
System.out.printf("a++ = %d, ++b = %d \n", a++, ++b);
System.out.printf("실행후 a = %d, b = %d \n", a, b);
System.out.printf("a++ = %d, ++b = %d \n", a--, --b);
System.out.printf("실행후 a = %d, b = %d \n", a, b);
** 실습 **
/*
* 문제) 정수 변수 첫번째 정수a와 두번째 정수b를 입력받아서 a는 전치증가연산자를 사용하고 b는 후치감소연산자를
* 사용하여 두 수의 합을 c에 저장한 후 각가 출력하는 프로그램 작성
* 입력예) 첫번째 정수>5
* 두번째 정수>6
* 출력예) a = 6, b = 5, c = 12
* 단, 입력받을때 nextInt() 로 처리하여 정수로 받아 처리함.
*/
int a, b, c;
Scanner scn = new Scanner(System.in); // 키보드로 입력받을땐 무조건이렇게 쓴다고 일단 외우기
System.out.print("첫번째 정수>");
a = scn.nextInt();
System.out.print("두번째 정수>");
b = scn.nextInt();
c = ++a + b--;
System.out.printf("a = %d,b = %d, c = %d \n", a, b, c);
** 실습 (비교연산자) **
// 비교연산자 => 결과가 true / false 중 하나
int a = 10;
int b = 20;
int c =20;
System.out.println("a == b : " + (a == b)); //false
System.out.println("b == c : " + (b == c)); //true
System.out.println("a != b : " + (a != b)); //true
System.out.println("b != c : " + (b != c)); //false
System.out.println("a > b : " + (a > b)); //false
System.out.println("b >= a : " + (b >= a)); //true
System.out.println("a <= c : " + (a <= c)); //true
System.out.println("b < c : " + (b < c)); //false
** 실습 **
/*
* 문제) 3개의 정수를 각각 a,b,c 변수에 입력을 받아 a와 b, b와 c를 각각 비료하여 같으면 true, 같지 않으면 false 출력하는 프로그램
* 입력예)a값을 입력하세요.>10
* b값을 입력하세요.>20
* c갑을 입력하세요.>2-
*
* 출력예)a == b : false
* b == c : true
* a != b : true
* b != c : false
*/
int a, b, c;
Scanner scn = new Scanner(System.in);
System.out.print("a값을 입력하세요.>");
a = scn.nextInt();
System.out.print("b값을 입력하세요.>");
b = scn.nextInt();
System.out.print("c값을 입력하세요.>");
c = scn.nextInt();
System.out.println("a == b : " + (a == b));
System.out.println("b == c : " + (b == c));
System.out.println("a != b : " + (a != b));
System.out.println("b != c : " + (b != c));
** 실습 **
* 논리 연산자 (&&, ||) => 왼쪽과 오른쪽의 결과가 true/false 나옴 (&&는 양쪽모두 true일때 true)(||는 둘중하나가 true이면 true)
int a =1;
int b =2;
int c = 3;
System.out.println("(a > b && b < c) : " + (a > b && b < c));
System.out.println("(a > b && b < c) : " + (a > b || b < c));
** 실습 **
/*
* 문제) 3개의 정수를 각각 a, b, c 를 선언하고 각각 10, 20, 30 으로 초기화 한후
* 비교연산과 논리연산자를 이용하여 참이면 true, 거짓이면 false를 출력하는 프로그램
* 출력예) a > b && a<=b : false
* a > b || a <= b : true
* b < c && a < c : true
* !(a > b && a <= b) : true
*/
int a = 10;
int b = 20;
int c = 30;
System.out.println("a > b && a<=b : " + (a > b && a<=b));
System.out.println("a > b || a <= b : " + (a > b || a <= b));
System.out.println("b < c && a < c : " + (b < c && a < c));
System.out.println("!(a > b && a <= b) : " + (!(a > b && a <= b)));
** 실습 (삼항연산자) **
* 삼항 연산자 (항이 세개) 앞의 조건이 참이면 콜론전 실행 , false면 콜론 후 실행
int x = 10, y = 5;
int result = (x >= y) ? x : y;
System.out.println("x와 y값 중 큰값은 " + result + "입니다.");
** 실습 **
/*
* 문제) 정수변수 a에 나이를 입력받아 19 보다 큰 값을 입력 받았으면 '성인입니다.'로 출력하고
* 19보다 자그면 '청소년입니다.; 라고 출력하는 프로그램.
* 입력예) 나이를 입력하세요.>15
* 출력예) 청소년입니다.
* 단, 삼항연산자를 이용하여 출력에 사용할 변수는 String memo로 정의함.
* 예. String memo = "";
* memo = "청소년입니다."
*/
int a;
Scanner scn = new Scanner(System.in);
System.out.print("나이를 입력하세요.>");
a = scn.nextInt();
String memo = ""; // memo 선언
memo = (a < 19) ? "청소년입니다." : "성인입니다."; // String memo = = (a < 19) ? "청소년입니다." : "성인입니다."; <선언과 동시에 값입력>
System.out.println(memo);
** 실습 **
/*
문제) 시험점수 3과목을 입력받아 평균을 구한후 통과유무를 출력하는 프로그램작성.
평균점수가 70점 이상이면 통과, 미만이면 미통과로 처리하는 프로그램.
입력예)국어 점수를 입력하세요.>80
영어 점수를 입력사세요.>70
수학점수를 입력하세요.>90
출력예)당신의 평균은 80점이고 통과하셨습니다. (70점 이상인 경우)
당신의 평균은 65점이고 미통과하셨습니다. (70점 미만인 경우)
단, 국어 kor / 영어 eng / 수학 math / 평균 avg / 통과여부 memo
String 타입의 printf 서식문자는 %s
평균 : (국어+영어+수학)/3
*/
int kor, eng, math, avg;
Scanner scn = new Scanner(System.in);
System.out.print("국어 점수를 입력하세요.");
kor = scn.nextInt();
System.out.print("영어 점수를 입력하세요.");
eng = scn.nextInt();
System.out.print("수학 점수를 입력하세요.");
math = scn.nextInt();
avg = (kor+eng+math)/3;
String memo = (avg>=70) ? "통과하셨습니다." : "미통과하셨습니다.";
System.out.printf("당신은 평균은 %d점이고 %s", avg, memo);
'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글
11/07 수업 (7일차) (1) | 2023.11.07 |
---|---|
11/06 수업 (6일차) (0) | 2023.11.06 |
11/02 수업 (4일차) (0) | 2023.11.05 |
11/01 수업 (3일차) (0) | 2023.11.05 |
10/30 수업 (1일차) (0) | 2023.11.05 |