주제 : 김영한님의 자바 입문 강의 총 정리
내용 : 이를 통해, 자바의 기본적인 코드를 작성할 수 있다!
최근 머신러닝, 딥러닝을 공부한다고 자바, 스프링 공부를 너무 소홀히해서 기록 및 정리도 할겸 올리려고 한다. 자바 ~ 스프링까지 꾸준히 올릴예정


자바 프로그램은 컴파일과 실행 단계를 거친다.

일반적인 프로그램은 다른 운영체제에서 실행할 수 없다.
예를 들어서 윈도우 프로그램은 MAC이나 리눅스에서 작동하지 않는다.
왜냐하면 윈도우 프로그램은 윈도우 OS가 사용하는 명령어들로 구성되어 있기 때문이다. 해당 명령어는 다른 OS와는 호환되지 않는다.
but, 자바 프로그램은 자바가 설치된 모든 OS에서 실행할 수 있다.
자바 개발자는 특정 OS에 맞추어 개발을 하지 않아도 된다.
자바 개발자는 자바에 맞추어 개발하면 된다. OS 호환성 문제는 자바가 해결한다.

Hello.class 와 같이 컴파일된 자바 파일은 모든 자바 환경에서 실행할 수 있다.
윈도우 자바는 윈도우 OS가 사용하는 명령어들로 구성되어 있다. MAC이나 리눅스 자바도 본인의 OS가 사용하는 명령어들로 구성되어 있다. 개발자는 각 OS에 맞도록 자바를 설치하기만 하면 된다.
변수를 선언하면 컴퓨터의 메모리 공간을 확보해서 그곳에 데이터를 저장할 수 있다. 그리고 변수의 이름을 통해서 해당 메모리 공간에 접근할 수 있다. 쉽게 이야기해서 데이터를 보관할 수 있는 공간을 만들고 그곳에 이름을 부여한다.

public class Var4 {
public static void main(String[] args){
int a;
int b;
int c,d;
}
}
변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것
**변수는 반드시 초기화 해주어야 한다!
정수
실수
불린형
public class VarEx3 {
public static void main(String[] args){
boolean booleanVar = true;
System.out.println(boolenanVar);
}
}
문자열
클래스는 대문자로 시작, 나머지는 소문자로 시작
예시: 클래스는 첫 글자 대문자, 나머지는 모두 첫 글자 소문자로 시작 + 낙타 표기법
- 클래스: Person , OrderDetail
- 변수를 포함한 나머지: firstName , userAccount
여기에 예외가 딱 2개 있다.
USER_LIMITorg.spring.bootif 문은 특정 조건이 참인지 확인하고, 그 조건이 참일 경우 특정 코드 블록을 실행
public class If1 {
public static void main(String[] args) {
int age = 20; // 사용자 나이
if (age >= 18) {
System.out.println("성인입니다.");
}
if (age < 18) {
System.out.println("미성년자입니다.");
}
}
}
if (condition) {
// 조건이 참일 때 실행되는 코드
} else {
// 만족하는 조건이 없을 때 실행되는 코드
}
if-else 코드**
if (condition1) {
// 조건1이 참일 때 실행되는 코드
} else if (condition2) {
// 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
} else if (condition3) {
// 조건2이 거짓이고, 조건3이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
switch문은 조건식에 해당하는 특정 값으로 실행할 코드를 선택한다.
(switch -> case -> break -> default)
반드시 break 적어줘야 한다!
switch (조건식) {
case value1:
// 조건식의 결과 값이 value1일 때 실행되는 코드
break;
case value2:
// 조건식의 결과 값이 value2일 때 실행되는 코드
break;
default:
// 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
}
예시
public class Switch2 {
public static void main(String[] args) {
//grade 1:1000, 2:2000, 3:3000, 나머지: 500
int grade = 2;
int coupon;
switch (grade) {
case 1:
coupon = 1000;
break;
case 2:
coupon = 2000;
break;
case 3:
coupon = 3000;
break;
default:
coupon = 5000;
}
System.out.println("발급받은 쿠폰 " + coupon);
}
}
while (조건식) {
// 코드
}

예시)
public class While1_2 {
public static void main(String[] args) {
int count = 0;
while (count < 3) {
count++;
System.out.println("현재 숫자는:" + count);
}
}
}
do {
// 코드
} while (조건식);
for (1.초기식; 2.조건식; 4.증감식) {
// 3.코드
}
public class ForEx1 {
public static void main(String[] args) {
for(int count=1; count<=10; count++){
System.out.println(count);
}
}
}
장점:
- 초기화, 조건 체크, 반복 후의 작업을 한 줄에서 처리할 수 있어 편리하다.
- 정해진 횟수만큼의 반복을 수행하는 경우에 사용하기 적합하다.
- 루프 변수의 범위가 for 루프 블록에 제한되므로, 다른 곳에서 이 변수를 실수로 변경할 가능성이 적다.
단점:
- 루프의 조건이 루프 내부에서 변경되는 경우, for 루프는 관리하기 어렵다.
- 복잡한 조건을 가진 반복문을 작성하기에는 while문이 더 적합할 수 있다.
장점:
- 루프의 조건이 루프 내부에서 변경되는 경우, while 루프는 이를 관리하기 쉽다.
- for 루프보다 더 복잡한 조건과 시나리오에 적합하다.
- 조건이 충족되는 동안 계속해서 루프를 실행하며, 종료 시점을 명확하게 알 수 없는 경우에 유용하다.
단점:
- 초기화, 조건 체크, 반복 후의 작업이 분산되어 있어 코드를 이해하거나 작성하기 어려울 수 있다.
- 루프 변수가 while 블록 바깥에서도 접근 가능하므로, 이 변수를 실수로 변경하는 상황이 발생할 수 있다.
한줄로 정리하자면 정해진 횟수만큼 반복을 수행해야 하면 for문을 사용하고 그렇지 않으면 while문을 사용하면 된다. 물론 이것이 항상 정답은 아니니 기준으로 삼는 정도로 이해하자
[문1] 문제 : 자연수 출력
# while문
public class WhileEx1 {
public static void main(String[] args) {
int count = 1;
while (count <= 10) {
System.out.println(count);
count++;
}
}
}
# for문
public class ForEx1 {
public static void main(String[] args) {
for(int count=1; count<=10; count++){
System.out.println(count);
}
}
}
[문2] 문제 : 짝수 출력
# while 문
public class WhileEx2 {
public static void main(String[] args) {
int num =2;
int count = 1;
while (count<=10){
System.out.println(num);
num += 2;
count ++;
}
}
}
# for 문
public class ForEx2 {
public static void main(String[] args) {
for (int num=2, count = 1; count<10; num+=2, count++){
System.out.println(num);
}
}
}
[문3] 문제 : 누적 합 계산
# while문 작성
public class WhileEx3 {
public static void main(String[] args) {
int max = 100;
int sum = 0;
int i = 1;
while (i<=max){
sum +=i;
i++;
}
System.out.println(sum);
}
}
# for문 작성
public class ForEx3 {
public static void main(String[] args) {
int max = 100;
int sum = 0;
for (int i=0; i<=sum; i++){
sum +=i;
}
System.out.println(sum);
}
}