public class HelloWorld {
public static void main(String[] args) { // 파라미터, 매개변수
System.out.println("Hello World"); // println 메소드 호출 = 명령문
}
}
프로그램 실행 시 파일명과 같은 클래스를 먼저 찾음
이후 메인 메소드를 찾아 진행하고
메인 메소드 내부 명령들을 실행 순서로 진행
전일 학습 내용 복기하기
public class HelloWorld {
public static void main(String[] args) { // 파라미터, 매개변수
System.out.println("Hello World"); // println 메소드 호출 = 명령문
// 변수 선언 정수 기본 타입으로 number 라는 이름의 변수 만들기
// 값은 리터럴 값을 저장
int number = 10;
System.out.println(number);
/*
기본 타입
정수 : byte, short, int, long
실수 : float, double
문자 : char
논리 : boolean
프로모션 : 작은 타입이 큰 타입에 자동으로 변환되는 것
캐스트 : 큰 타입을 작은 타입에 맞게 강제로 변환하는 것, (데이터 타입) 으로 작성, 값 절삭
*/
}
}
과수원의 과일 생산량 확인해보기
public static void main(String[] args) {
int apple = 5;
int pear = 7;
int orange = 5;
int total = apple + pear + orange;
float avg = (float) total / 24; // float 로 해보는 것으로 함
// float avg = total / 24F;
System.out.println("총 생산 갯수 : " + total);
System.out.println("시간당 생산 갯수 : " + avg);
}
0.1 을 10번 더하면 왜
1 이랑 다를까
0.1 을 변수에 선언 시 정확한 0.1 이 아닌 0.1 에 근접한 값으로 들어감 - 메모리의 한계
// 연산자 = 계산할 때 사용하는 기호, 연산 순서
/*
모든 프로그래밍에서는 데이터의 연산을 하기 위해 연산자를 사용
연산자는 자바 외 모든 언어에서 비슷하게 활용
주의할 점은 연산자의 기능과 순서
연산자의 종류가 많아 모두 외우기보단 자주 사용하며 익숙해지는게 좋음
1. 최우선 연산자
. - 닷, 점 : 클래스 또는 객체 소유의 변수, 메소드 호출 연산자
[] - 배열, 어레이
() - 괄호
2. 단항 연산자 - 등호(=)를 기준으로 한쪽에만 있는 기호
!(논리 부정, not), ~(비트 반전), +/-(부호 연산), ++/--(선행 증감)
캐스팅 (cast)
3. 산술 연산자
+, -, /, *, %(나머지)
4. 쉬프트 연산자
<<, >>, >>>
5. 관계 연산자
>, <, >=, <=, ==, !=
6. 비트 연산자
&, |, ^, !
7. 논리 연산자
&&, ||
8. 삼항 연산자
조건식 ? 참일 경우 : 거짓일 경우
9. 배정대입 연산자
=, +=, -=, *=, /=, %=, ...
10. 후행증감 연산자
++/--
*/
최우선 연산자 - ., [], ()
String name = "홍길동";
char first = name.charAt(0); // 문자열 해당 번지수 글자 추출
System.out.println(first);
System.out.println(name.length());
Math.random();
단항 연산자의 선행 증감
// 선행 증감
int num = 1;
int num2 = ++num; // num 에 1 을 먼저 더한 후 num 을 num2 에 대입
// ++num : num = num + 1; 과 같다, num 값에 변화가 생김
System.out.println(num); // 2
System.out.println(num2); // 2
int num3 = ++num + num2; // num 에 1 을 더한 후 num + num2 를 num3 에 대입
System.out.println(num); // 3
System.out.println(num2); // 2
System.out.println(num3); // 5
int num4 = --num + --num2 + --num3;
System.out.println(num); // 2
System.out.println(num2); // 1
System.out.println(num3); // 4
System.out.println(num4); // 7
num = 1; num2 = 1; num3= 1;
num2 = num--; // num 값을 먼저 num2 에 더한 후 num 값이 1 빠짐
System.out.println(num); // 0
System.out.println(num2); // 1
num4 = ++num - --num2 + num3--;
// int i = ++num - --num2;
System.out.println(num); // 1, 시작 값 num = 0
System.out.println(num2); // 0, 시작 값 num2 = 1
System.out.println(num3); // 0, 시작 값 num3 = 1
System.out.println(num4); // 2
10진법을 2진법으로 변환, 비트 변환
// 10진법을 2진법으로 변환
String result = Integer.toBinaryString(-2);
System.out.println(result);
// -7 : 11111111111111111111111111111001
// 7 : 00000000000000000000000000000111
// -1 : 11111111111111111111111111111111
// -2 : 11111111111111111111111111111110
// -3 : 11111111111111111111111111111101
// 비트 반전, 0 -> 1, 1 -> 0
System.out.println(Integer.toBinaryString(~-2));
// ~1 : 11111111111111111111111111111110
// -2 : 11111111111111111111111111111110
//~-2 : 00000000000000000000000000000001
산술 연산자
+, -, *, /, %(나머지)
num = 2;
num2 = 2;
num3 = num % num2;
System.out.println(num3); // 0
// 2 % 3 -> 2, 2 % 2 -> 0
쉬프트 연산자
4. 쉬프트 연산자
<<, >>, >>>
num = 10;
System.out.println(Integer.toBinaryString(num));
// 00000000000000000000000000001010
System.out.println(Integer.toBinaryString(num >> 2));
// 00000000000000000000000000000010, -> 방향으로 2칸 밀기
System.out.println(10 >> 2); // 2
System.out.println(Integer.toBinaryString(num >> 3));
// 00000000000000000000000000000001, -> 방향으로 3칸 밀기
System.out.println(Integer.toBinaryString(num << 2));
// 00000000000000000000000000101000, <- 방향으로 2칸 밀기
System.out.println(10 << 2); // 40
System.out.println(Integer.toBinaryString(-1 << 2));
// -1 >> 2 : 11111111111111111111111111111111, 음수는 채워지는 값도 1 로 채워짐
// -1 << 2 : 11111111111111111111111111111100, 값이 증가할 때에는 0 이 채워짐
// -1 <<< 2 : 00111111111111111111111111111111
비트 연산자
// 비트 연산자 &(and 논리곱), |(or, 논리합), ^ (XOR)
// & : 양쪽 모두 참일 경우 참
// | : 어느 한쪽이 참일 경우 참
// ^ : 한쪽이 참이고, 다른 한쪽이 거짓일 때 참, 참^참 = 거짓, 거짓^거짓 = 거짓
System.out.println(10 & 4);
// 10 & 2 : 1010 & 0010 -> 0010
// 10 & 3 : 1010 & 0011 -> 0010
// 10 & 4 : 1010 & 0100 -> 0000
System.out.println(-1 & -2);
// -1 & -2 : 1111 & 1110 -> 11...1110
System.out.println(11 | 7);
// 11 | 7 : 1011 | 0111 -> 1111
System.out.println(11 ^ 7);
// 11 ^ 7 : 1011 ^ 0111 -> 1100
논리 연산자
// 논리 연산자 &&, ||
System.out.println(1 + 1 == 2 && false); // false
true && true = true
true && false = false
false && true = false
false && false = false
System.out.println(1 > 0.5 || true); // true
true || true = true
true || false = true
false || true = true
false || false = false
삼항 연산자
// 삼항 연산자
num = 1;
if (num == 1){
System.out.println("1 입니다.");
} else {
System.out.println("1이 아닙니다.");
}
// 삼항 연산자로 변환
System.out.println(num == 1 ? "1 입니다." : "1이 아닙니다.");
배정 대입
// 배정 대입
int number = 10;
number += 1;
// number = number + 1;
number -= 1;
// number = number - 1;
number /= 2;
// number = number / 2;
number *= 3;
// number = number * 3;
제어문 = 조건문, 반복문
// 제어문 = 조건문, 반복문
/*
조건문 = if, switch
반복문 = for, while, do ~ while
*/
제어문이란 프로그램이 실행될 때 특정 조건, 반복을 수행 또는
멈추게 하기 위해 필요한 명령 구문
제어문은 조건에 따라 분기되는 조건문과
특정 구문을 반복하는 반복문으로 구성
if 조건문은 필요에 따라 구성할 수 있음
if 만 정의해도 되고, if ~ else if 로 구성 가능
if 와 else 로만 구성해도 문제 없음 ( 특별한 규칙이 없음 )
단, if 가 없는 else if, else 는 불가능
필요에 따라 각 구문 내부에 또 다시 조건을 중첩시킬 수 있음
if 문
조건문
if (조건식) {
조건식이 참일 때 실행할 문장
}
if (조건식) {
참일 때
} else {
거짓일 때
}
if (조건식1) {
조건식1 이 참일 때
} else if (조건식2) {
조건식1 이 거짓 조건식2 가 참일 때
} else {
조건식 1,2 가 모두 거짓일 때
}
if 문 예시
int num = 5;
if (num > 5) {
System.out.println("5 보다 큽니다.");
} else if (num < 5) {
System.out.println("5 보다 작습니다.");
} else {
System.out.println("5 입니다.");
}
짝수, 홀수 구하기
public static void main(String[] args) {
int number = 12;
if (number % 2 == 0) {
System.out.println("짝수");
} else {
System.out.println("홀수");
}
}
스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리
// 스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리
Scanner sc = new Scanner(System.in);
주민등록번호 뒷자리 첫 숫자를 입력받아 성별 확인하기
// 스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리
Scanner sc = new Scanner(System.in);
System.out.println("주민등록번호 뒤 첫 숫자를 적어주세요.");
int input = sc.nextInt();
System.out.println("입력한 숫자 : " + input);
if (input % 2 == 0) {
System.out.println("여자");
} else {
System.out.println("남자");
}
Scanner 변수 사용 후 닫아 줄 필요가 있음
Scanner sc = new Scanner(System.in);
sc.close; // 닫아주기
서로 다른 두 수의 값 바꾸기
int num1 = 90;
int num2 = 5;
int change;
change = num1;
num1 = num2;
num2 = change;
System.out.println(num1); // 5
System.out.println(num2); // 90
num1 의 값이 num2 보다 클 경우에만 값 바꾸기
int num1 = 90;
int num2 = 5;
// 정렬하기
int temp;
if (num1 > num2) {
temp = num1;
num1 = num2;
num2 = temp;
}
System.out.println(num1);
System.out.println(num2);
가위 바위 보 게임 만들기
public static void main(String[] args) {
// 1 가위, 2 바위, 3 보
Scanner sc = new Scanner(System.in);
int com = (int) (Math.random() * 3) + 1;
System.out.println("가위바위보 게임에 오신 것을 환영합니다.");
System.out.println("1번은 가위, 2번은 바위, 3번은 보");
System.out.println("원하는 값을 입력해주세요.");
System.out.print("입력 : ");
int input = sc.nextInt();
if ((input== 1 && com == 3) || (input == 2 && com == 1) || (input == 3 && com == 2)) {
System.out.println("이겼습니다.");
System.out.println("com : " + com);
} else if ((input == 1 && com == 2) || (input == 2 && com == 3) || (input == 3 && com == 1)) {
System.out.println("졌습니다.");
System.out.println("com : " + com);
} else if (input == com) {
System.out.println("비겼습니다.");
System.out.println("com : " + com);
}
sc.close();
}
가위바위보 간단하게 해보기
int win = input - com;
if (win == -2 || win == 1){
System.out.println("승리");
System.out.println("com : " + com);
} else if (win == 0){
System.out.println("비김");
System.out.println("com : " + com);
} else {
System.out.println("짐");
System.out.println("com : " + com);
}
입력된 글자 중 하나만 입력받는 명령어
System.in.read();
ASCII CODE 에 해당하는 숫자를 출력함
숫자 0 ~ 9 : ASCII CODE 48 ~ 57
알파벳 a : 97
알파벳 A : 65
원하는 숫자를 출력하기 위해서는 48 을 빼면 됨
int value = System.in.read() - 48;
'JAVA' 카테고리의 다른 글
231207 Java (0) | 2023.12.07 |
---|---|
231206 Java (2) | 2023.12.06 |
231204 Java (2) | 2023.12.04 |
231201 Java (0) | 2023.12.01 |
231130 Java (2) | 2023.11.30 |