클래스명은 대문자 시작이 관례
변수는 소문자 시작이 관례
RAM = 데이터 저장 공간
변수는 하나의 값을 저장할 수 있는 메모리 번지
정수에는 정수, 실수에는 실수 데이터 값만 저장이 가능하다
변수를 선언하고, 이름을 정하고, 값을 저장한다.
int a;
a = 90
또는
int a = 90;
int형인 a라는 변수에 90이라는 값을 저장한다 라는 뜻
= 는 수학에서의 이퀄이 아니라 이걸 저장하겠음! 이라는 뜻
타입 | 메모리 크기 | 분류 |
byte | 1 byte | 정수 |
short | 2 byte | 정수 |
char | 2 byte | 정수 |
int | 4 byte | 정수 |
long | 8 byte | 정수 |
float | 4 byte | 실수 |
double | 8 byte | 실수 |
boolean | 1 byte | 논리(true/false) |
1 byte = 8bits (8칸의 공간)
1 byte -> byte, boolean
2 byte -> char, short
4 byte -> int, float
8 byte -> long, double
byte < short, char < int < long < float < double
값의 허용 범위가 작은 타입이 큰 타입으로 자동 타입 변환된다
예)
byte byteValue = 10;
int intValue = byteValue; // 자동 타입 변환
정수가 실수로 대입되면, 자동으로 타입 변환이 된다
->실수가 정수보다 허용 범위가 더 크기 때문
long longValue = 5000000000L;
float floatValue = longValue; //5.0E9f
double doubleValue = longValue; //5.0E9
char 가 int로 변환되면 유니코드 타입이 int에 입력된다
char a = 'A';
int b = a; //A의 유니코드 65가 저장됨
강제 타입 변환
int는 byte보다 큰 허용 범위를 가지기 때문에
int가 byte로 타입을 변환한다면? 강제 변환을 시켜야 한다
int a = 10;
byte b = (byte)a; //강제 타입 변환
그러나, 강제 타입 변환은 거의 사용하지 않음
강제로 타입변환하며 오류가 생길 수 있기 때문
String(문자열)을 타입 변환할 경우
----.parse---- 해주면 됨
String str = "30";
int value = Integer.parseInt(str); (int만 Integer로 들어감)
String str1 = "12.3";
double value1 = Double.parseDouble(str1);
String str2 = "true";
boolean value2 = Boolean.parseBoolean(str2);
요런 느낌
기본 타입 값을 문자열로 변환하는 경우
String.valueOf(기본타입값);
int a = 10;
String str = String.valueOf(a);
a의 값은 "10" 이 된다(숫자 아닌 문자열이 됨)
변수값을 출력할 때 사용하는 System.out.~~~
메소드 | 의미 |
println(); | 괄호 출력 후 행을 바꿔라(엔터) |
print(); | 괄호 출력하라(엔터X) |
printf("형식 문자열",값1,값2...); | 형식 문자열에 맞춰 뒤에 값 출력 |
printf() 사용할 때
%d(정수),%f(실수), %s(문자열)... 등이 있음
키보드 입력 데이터를 변수로 저장
Scanner scanner = new Scanner(System.in);
scanner 변수 선언, Scanner 객체 생성
입력받은 값을 타입별로 저장이 가능한데
int a;
a = scanner.nextInt();
문자열의 경우
next(), nextLine() 으로 나뉜다
next의 경우 \n 이 포함되지 않아서
엔터를 아무리 쳐도 문자열이 포함되기 전까지는 입력받지 않음
nextLine()의 경우 \n이 포함되어서
아무것도 안 치고 엔터만 해도 값을 입력 받음
기본 타입 값이 동일한지 비교할 때는 == 를 사용하지만
String 타입 값이 동일한지 알려면 equals()를 사용한다
String a = "가나다";
System.out.println(a.equals("가나다"));
값->true
System.out.println(a.equals("가가가"));
값->false
+ 피연산자 부호 유지
- 피연산자 부호 변경
++ 피연산자 값 1 증가
-- 피연산자 값 1 감소
++i // i의 값에 1을 더함
i++ // 다른 연산 수행 후 1증가
int i = 1;
i++ + 10 = 11;
i = 2;
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나눈 것의 나머지 (num%3 <-num을 3으로 나눈 나머지 값 출력)
산술 연산은
정수 타입은 결과는 int
단, 정수 타입인데 하나가 long 타입이라면 결과는 long
산술 중 하나라도 실수가 포함되어 있으면 결과는 실수 타입
오버플로우, 언더플로우
최대값에서 +1 하면 최소값으로 넘어감(오버플로우)
최소값에서 -1 하면 최대값으로 넘어감(언더플로우)
byte(-128~127)
byte value = 127;
value++;
byte value 출력하면 -128
정확한 계산은 정수 연산으로 하는 것이 좋다
나눗셈(/)이나 나머지값(%) 계산할 때
우측이 0 이라면 예외가 발생한다
5/0
5%0 //예외(에러)
하지만,
0.0으로 하면 연산 결과는
5/0 //Infinity 무한대
5%0 //Nan Not a number
여기서 더 계산하면 안된다요
비교 연산자
연산식 | 설명 |
== | 두 값이 같은가 |
!= | 두 값이 다른가 |
> | 왼쪽이 더 큰가 |
>= | 왼쪽이 크거나 같은가 |
< | 오른쪽이 큰가 |
<= | 오른쪽이 크거나 같은가 |
단, 문자열 비교는
equals() 또는 !equals() 를 사용한다
(AND) && 피연산자 결과가 전부 true일 경우에만 true
(OR) || 피연산자중 하나라도 true면 true
(XOR) ^ 하나는 true, 하나는 false라면 true
(NOT) ! 논리값을 바꿈, true는 false, false는 true
삼항(조건) 연산자
조건식 ? 값또는연산식1 : 값또는연산식2
조건식이 맞을 경우true 1을
조건식이 틀릴 경우false 2를 선택한다
int score = 85;
char grade = (score>90)? 'A' : 'B'
grade는 B
int score = 60;
char grade (score>90)? 'A' : ((score>80) ? 'B' : 'C');
grade 는 C
if문
if (조건식) {
실행문;
실행문;
}
실행문이 하나라면 중괄호 생략해도 좋으나
버그 발생할 수 있으니 그냥 한 줄 이어도 붙이는 것이 좋다
if(조건식) {
실행문;
} else {
실행문
}
조건식이 맞지 않다면
else 문을 실행
if(조건식) {
실행문;
} else if(조건식) {
실행문
} else {
실행문
}
if(조건식이 false일 경우) {
실행안됨;
}
else if(얘가 true면 얘가 실행되고) {
실행문;
} else {
모든 조건문이 false면 else의 실행문 실행;
}
주사위 번호 뽑기를 할 때
int num = (int)(Math.random()*6)+1
에서 +1을 하는 이유는 -> 0을 안 뽑게 하기 위해 +1을 더해줌
switch문
switch는 괄호 안의 변수 값에 따라
해당 case로 가서 실행문을 실행시킨다
해당하는 case가 없다면 default 를 실행시킨다(default 생략 가능)
break;가 안 쓰이면 해당 case 아래의 실행문을 쭈르르 실행시키기 때문에
실행문 뒤에는
break를 써준다
switch(변수) {
case 변수값:
실행문
break;
case 변수값:
실행문
break;
case 변수값:
실행문
break;
default:
실행문
}
switch 괄호에는 정수와 문자열이 올 수 있으며
case 변수:
case 변수:
실행문
이렇게 여러 변수가 해당할 때 실행시키는 것도 가능하고
switch(변수) {
case 'A','a' -> {
실행문;
}
case 'B','b' -> {
실행문;
}
이렇게도 가능하다,
if문과 마찬가지로 실행문이 하나라면 중괄호 생략도 가능하다
switch 예제1 == 예제2
switch 예제1
String grade = "B";
int score = 0;
switch(grade) {
case "A":
score = 100;
break;
case "B":
score = 80;
break;
defulat:
score = 70;
}
switch 예제2
String grade = "B";
int score = switch(grade) {
case "A" -> 100;
case "B" -> 80;
defulat -> 70;
}
둘 다 score의 값은 80으로 출력 된다
if문 예제(점수 입력해서 등급 받기)
package sesond;
import java.util.Scanner;
public class ElseIf {
public static void main(String[] args) {
int jumsu;
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 :");
jumsu = sc.nextInt();
if(jumsu>=90) {
System.out.println("A");
} else if(jumsu>=80) {
System.out.println("B");
} else if(jumsu>=70) {
System.out.println("C");
} else if(jumsu>=60) {
System.out.println("D");
} else {
System.out.println("F");
}
}
}
switch문 예제) 계산기 만들기
package sesond;
import java.util.Scanner;
public class SwitchTest3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a,b;
String c;
System.out.print("숫자를 입력하세요 :");
a = sc.nextInt();
System.out.print("숫자를 입력하세요 :");
b = sc.nextInt();
System.out.print("부호를 입력하세요");
c = sc.next();
switch(c) {
case "+" :
System.out.println(a+b);
break;
case "-" :
System.out.println(a-b);
break;
case "*" :
System.out.println(a*b);
break;
case "/" :
System.out.println((float)a/b);
break;
default:
System.out.println("계산 불가");
}
}
}
if문 예제) 계산기 만들기
package sesond;
import java.util.Scanner;
public class El {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a;
int b;
String c;
System.out.print("첫번째 숫자 : ");
a=sc.nextInt();
System.out.print("두번째 숫자 : ");
b=sc.nextInt();
System.out.print("부호를 입력하세요 : ");
c=sc.next();
if(c.equals("+")) {
System.out.println(a+b);
} else if(c.equals("-")) {
System.out.println(a-b);
} else if(c.equals("/")) {
System.out.println((float)a/b);
} else if(c.equals("*")) {
System.out.println(a*b);
} else {
System.out.println("계산 불가");
}
}
}
'국비 학원 가서 개발새발' 카테고리의 다른 글
혼자 공부) 오버로딩 외... (0) | 2022.10.02 |
---|---|
국비학원 5일차) 변수의 종류와 호출 스택, 메소드 (1) | 2022.09.30 |
국비학원 4일차) 클래스와 객체(자바의 정석 기초편으로 복습) (0) | 2022.09.29 |
국비학원 3일차) 2중 for문, if문 등등 코드 나열 (0) | 2022.09.28 |
국비학원 2일차) 반복문(for, while) Array(배열) (0) | 2022.09.27 |