X64 MSI 다운
파일 탐색기 > 내 pc + 우클릭 후 속성 > 고급 시스템 설정 > 환경변수 > PATH에서 편집 > jdk-21 파일 경로(위치) 붙여서 넣기
win + e = 파일 탐색기
ctrl + shift + n = 새 폴더
수업에서는 javastudy > java>Day1
나는 class > code>Day1
메모장 단축키 : ctrl + s 저장/ctrl + n 새로운 파일 생성
F2 = 파일 탐색기에서 이름 변경
목록 보는 명령어 = dir
. = 현재 디렉토리
.. = 상위 디렉토리
cd = change directory
cd . 을 치면 현재 디렉토리로 변경
cd ..을 치면 한단계 위에 있는 상위 디렉토리로 변경
cmd 에서 dir 파일 이름 키면 하위 파일들 나와야되는데 왜 안나오는지// (이유는 최상위 디렉토리로 이동하지 않아서 )
cd \ = 최상위 디렉토리
jdk는 혅안에 있는게 아니기 때문에 최상위 디렉토리로 이동 후에 찾아줘야한다.
오류가 나면 cmd에 표현된다.

메모에 class 변수 {} 생성해서 c:class\code\Day1에 ctrl +s 저장/ ctrl + n은 새로 생성
저장할때 tx---t가 아닌 모든 파일로 설정해서 이름.java로 저장해야한다.
cmd에서 javac(컴파일 시키는 명령어)를 이용해 확인할 수 있는데
ex)" javac Hello.java " 를 작성하면 파일탐색기에서 Hello.class가 생성된것을 눈으로 볼 수 있다.

class 이름은 Good이라고 하고 파일 명은 Nice라고 저장한 후 Nice로 컴파일하면 Class 파일은 class이름인 Good class가 생성된다.
위 사진에 보면 Nice.java를 입력했는데 탐색기를 확인하면 파일 안 변수명인 Good .class가 생성된것이 보인다.
메모장을 이용해서 .java를 만든다.(cmd에 notepad치면 )
class Hello
{
public static void main(String[]args)
{
System.out.println("Hello World");
}
}
파일에 저장한다.꼭 .java로 저장해야한다*(.txt안됌)
cmd를 켜서 상위 디렉토리로 변경해서 파일을 저장한 곳까지 이동시킨 후 저장한 파일명(=변수명)을 컴파일해준다
파일을 저장한 곳까지 이동할때는 'cd'를 꼭 사용해주기!
cd c:class\code\Day1 (몇단어만 작성하고 tap키 누르면 자동으로 첫번째 파일 나오게해준다.)
컴파일 하는 명령어는 javac 파일명.java, 출력하는 명령어 java
컴파일 후 java라는 명령어를 이용해 println안에 쓴 문장을 출력 해준다. (java Hello)

메모장을 이용해 .java를 만든다
파일을 저장한다
cmd를 켜 상위 디렉토리 > 메모장을 저장한 디렉토리로 이동한다.
메모장을 컴파일한다.
문장을 출력한다.
메모장에 쓴 문장
class New
{
public static void main(String[]args)
{
System.out.println("Hi, my name is HyunJi");
}
}
println - 줄 바꿈
print = 줄 바꿈 x ,이어져서
cmd에 컴파일 시키는 문장

키보드 화살표 위, 아래 해보면 최근에 작성했던 문장들이 자동으로 완성된다.
문자열 +int 는 자료형이 다르기 때문에 정수가 자동으로 문자열로 형변환된다.
"Hello" + 3 = X / "Hello" + "3" 으로 형변환
"Hello" + 5 + 3 > Hello53 이렇게 출력
변수
제일 위 몰아서 선언하는 것이 제일 좋음 (소스코드 파악 용이)
소문자로 시작
int num
변수 변수명
클래스 이름은 대문자(암묵적 약속) But 숫자로 시작할 수는 X
변수는 소문자로 시작한다
클래스, 변수등 은 모두 식별자 라고 한다.
이 식별자들은 숫자로 시작할 수 없고 _, $를 제외한 특수기호는 사용할 수 없다.
int num = 5
int num1 = 5, num2 = 10;
Class Test
{
public static void main(Strig[]args)
int i; //지역변수 (Local Variable)
System.out.println(i);
}
지역변수는 반드시 초기화해줘야한다.
int i = 0;
for(i = 0; i < 3; i++)
{
System.out.println(i + "Hi"); >
}
}
i = 0;
i < 3
for{System.out.println(i + "Hi"} > 중괄호 안에 조건문 실행
i++
i < 3
3번과 같이 중괄호 조건문 실행
0부터 시작해 3보다 작은 값을 출력해 2Hi 까지만 출력된다.
int i = 0;
for(i = 0; i < 8; i++){
System.out.println("Score" + i);
}

7까지 출력
class For2{
public static void main(String[]args){
int i = 0;
for(i = 0; i < 11; i++) {
System.out.println("Hello" + i);
}
}
}

각 합을 구한다.
각 항을 더한다.
class Test{
public static void main(String[]args){
int i = 0, sum = 0;
for(i = 1; i <= 5;i++){
sum = sum + i;
System.out.println("i=" + i + "sum=" + sum);
}
}
}

class T1{
public static void main(String[]args){
int i = 10;
for(i = 0; i < 3; i++)
System.out.pritnln("Hi");
System.out.println("Bye");
}
}
for문은 중괄호가 없어도 프로그램 진행 가능
대신 for문에 있는 문장은 하나로만 인식
그러므로 위 문장은 Hi만 3번 반복
Bye출력 문장은 들여쓰기 해줘야함(for문이 아니기에)
class T1{
public static void main(String[]args){
int i = 10;
for(i = 0; i < 3; i++);{
System.out.pritnln("Hi");
System.out.println("Bye");
}
}
}
1~100까지의 합
1~100까지 짝수의 합
1~100까지 4의 배수의 개수
7의 배수의 합이 최초로 1000을 넘는 수와 그 수가 몇번째 항인지
5 4 3 2 1 이 되도록 (5!)
class Test1{
public static void main(String[]args){
int i = 0, sum = 0;
for(i = 0; i <= 100; i++){
sum = sum + i;
System.out.println(sum);
}
}
}
class Test2{
public static void main(String[]args){
int i = 0, sum = 0;
for(i = 2; i <= 100; i = i+2){ //짝수의 배수 초기값이 2니까 2로 초기
sum = sum + i;
System.out.println("i = " + i + " sum = " + sum);
}
}
}

class Test3{
public static void main(String[]args){
int i = 0, cnt = 0;
for(i = 4; i <=100; i= i+4){
cnt = cnt + 1;
System.out.println("4의 배수" + i + " 개수" + cnt);
}
}
}

class Test4{
public static void main(String[]args){
int i = 0, sum = 0, cnt = 0;
for(i = 7; sum <= 1000; i = i+7){
sum = (sum + i);
cnt = cnt + 1;
System.out.println("현재 수: " + i +" / 7의 배수의 합: " + sum + " / " + count + "번째 항");
}
}
}
배수의 합이 1000이 넘어야 하지 않기 때문에 조건을 sum에 줘야한다.
for (i = 7; sum > 1000; i = i +7) 이렇게 사용하면 거짓이여서 for문이 수행되지 않는다.
sum <= 1000 으로 변환시켜서 sum 이 1000보다 작은동안 수행할 수 있도록 변경

class Test5{
public static void main(String[]args){
int i = 0, fac = 1;
for(i = 1; i <= 5; i = i + 1){
fac= (fac * i);
System.out.println("i= " + i + ", fac = " + fac);
}
}
}

조건이 참인동안 괄호 안 문장을 수행한다
괄호 안이 비어있으면 for과 마찬가지로 에러 발생while은 반복의 횟수를 알 수 없으며, 특정 조건이 충족하는 한 계속 루프를 돌리고 싶은 경우에 적당하다.
class Q1{
public static void main(String[]args){
int i = 0;
while(i < 3){
System.out.println(i);
}
}
}
이 식은 무한 루프다.(증감연산자가 없기때)
int i = 0; while( i < 3);
세미콜론을 붙이면 무한로프가 된다. 프로그램 오류 x
1~100까지의 합
1~100까지 짝수의 합
1~100까지 4의 배수의 개수
7의 배수의 합이 최초로 1000을 넘는 수와 그 수가 몇번째 항인지
5 4 3 2 1 이 되도록 (5!)
class Q1{
public static void main(String[]args){
int i = 0, sum = 0;
while(i <= 100){
System.out.println("i = " + i + " sum = " + sum);
i++;
sum = sum + i;
}
}
}
[틀린 문장]
int i = 0, sum = 0;
while(i < 100){
i++;
sum = sum + i;
System.out.println("i = " + i + " sum = " + sum);
}
i < 100으로 조건을 해놨지만 출력값은
i <= 100인것처럼 100까지 출력된다.증감연산자가 syso보다 앞에 있기 때문이다.
따라서 while문은 증감연산자를 제일 마지막으로 빼놓아야한다. (for문도 증감 연산자가 마지막에 수행되기 때문에)
class Q2{
public static void main(String[]args){
int i = 0, sum = 0;
while (i <= 100){
System.out.println("i = " + i + " / sum = " + sum);
i = i + 2;
sum = sum + i;
}
}
}
class Q3{
public static void main(String[]args){
int i = 0, cnt = 0;
while ( i <= 100){
System.out.println("4의 배수: " + i + " / 개수: " + cnt);
i = i + 4;
cnt = cnt + 1;
}
}
}
class Q4{
public static void main(String[]args){
int i = 7, sum = 0, cnt = 0;
while ( sum <= 1000){
sum = sum + i;
cnt = cnt + 1;
System.out.println("i = : " + i + " / sum = " + sum + " / cnt = " + cnt);
i = i + 7;
}
}
}
[틀린 문장]
int i = 7, sum = 0, cnt = 0;
while ( sum <= 1000){
System.out.println("i = : " + i + " / sum = " + sum + " / cnt = " + cnt);
i = i + 7;
sum = sum + i;
cnt = cnt + 1;
}
i 증감 연산자 뒤에 sum/cnt 증가값을 으면 결과값이 원하는것과 다르게 나온다.
sum/cnt는 누적값과 개수이기때문에 println전에 나와도 상관없고, 주요 변수 i는 마지막에 존재해야한다.
class Q5{
public static void main(String[]args){
int i = 1, multi = 1;
while(i <= 5){
multi = multi * i;
System.out.println("i = " + i + " / multi = " + multi);
i++;
}
}
}
4번 문제와 같이 주요 변수 i는 항상 마지막에!
먼저 실행 후 조건 확인
class T1{
public static void main(String[]args){
int i = 10;
do{
System.out.println(i);
i++;
}while(i < 3); //일반 while문과 다르게 세미콜론
} System.out.println("끝"); //while문장 종료 후 다은 중괄호인 문장 인식해 끝 이라는 문장 출력
}
int i;
// break; 사용
for(i=1; i<=7; i++) {
if(i==5) {
break;
}
System.out.println(i); //1234 > println
}
System.out.println();
// continue 사용
for(i=1; i<=7; i++) {
if(i==5) {
continue;
}
System.out.println(i); //1234567 > println
}
break 은 만나자마자 해당 반복문을 탈출함. i의 값이 5가 되면 5를 포함한 이후 값들은 아예 출력되지 않음.
continue 는 반복문안에서 어떤 조건을 충족하였을때 수행문을 수행하지 않고 다시 조건을 검토하게 하는 기능을 합니다
i의 값이 5가되어도 5를 제외한 나머지 값들은 정상적으로 출력됨.
while(true) > 이걸 더 선호(짧아서)
for(;;)
오늘 공부한 내용은 다음날 오전 학원에서 직접 손으로 코딩해본다.