Java 기초 ( 수업 중 배운 핵심 내용 위주로만 정리 ) ✍
객체 : 현실 세상에 존재하는 유형 또는 무형의 모든 것을 공통적인 특징만 가지고
컴퓨터 세상으로 옮긴 것
➡ 변수
와 메서드
로 구성
클래스 : 한 종류의 객체를 여러개 만들어 줄 틀
개발하는 순서 ( 오늘 배운 내용까지만 )
1) 클래스부터 만든다.
1-1) 변수를 만든다.
1-2) 메서드를 만든다.
2) 객체를 저장할 변수를 만든다.
3) 클래스로 객체를 생성해서 변수에 저장한다.
객체 ↔ 클래스 ↔ 변수 간의 관계
1) 클래스 안에는 변수와 메서드가 있다.
2) 객체 안에 있는 변수를 사용할 때는 [변수 이름] + "."
을 사용한다.
3) 변수를 저장할 때는 "="
을 사용한다.
class Student { Integer age; String name; } class School { public static void main(String[] args) { Student hong; hong = new Student(); hong.age = 16; hong.name = "홍길동"; } }
4) 위의 코드를 보면, hong
에는 Student
객체가 저장되어 있고, Student
객체 안에는
변수가 있다.
5) 그 변수에는 "age" 와 "name" 이 있고, "age" 와 "name" 을 사용하려면 "."
를
사용한다.
6) "age" 와 "name" 의 변수에 "16" 과 "홍길동" 이라는 값을 "="
를 사용해서 저장한다.
Java 기초 문법 ✍
클래스 : class 클래스이름 { 변수; 메소드(); })
객체 생성 : 객체 이름 = new 클래스이름();
변수 : [클래스이름] [변수이름];
연산자 우선순위 : 괄호 ➡ 산술 ➡ 관계 ➡ 논리 ➡ 대입
출력 : System.out.println(변수);
조건문
1) if 문 : if( "조건식1" ) {
"조건식1" 이 참일때 실행할 코드
} else if(조건식2) {
"조건식2" 이 참일때 실행할 코드
} else {
"조건식1, 2" 둘다 아닐때 실행할 코드
}
2) while 문 : while (조건) {
반복할 코드
조건을 변경시키는 코드를 실행
}
break 문 : 자신이 포함된 반복문을 빠져 나온다.
continue 문 : 자신이 포함된 반복문의 끝으로 이동한다. ( 다음 반복으로 넘어감 )
배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
➡ [배열 타입][ ] 배열명 = new 배열 타입[배열 크기];
➡ 배열이 저장된 변수의 이름 뒤에 [순서 번호]
를 쓰면 배열의 특정 번째의 변수에
접근하며, 순서 번호는 0번부터 시작
기초문법을 활용한 문제 풀어보기 ✍
Q1) num1=10, num2=20 일때 num1 과 num2 의 값을 서로 바꿔서 출력하시오 ✅
public class EX01 {
public static void main(String[] args) {
Integer num1;
num1 = 10;
Integer num2;
num2 = 20;
Integer num3;
num3 = num1;
num1 = num2;
num2 = num3;
System.out.println(num1);
System.out.println(num2);
}
}
Q2) 연금복권 번호 만들기 ✅
public class EX02 {
public static void main(String[] args) {
// 다음은 0부터 100까지 숫자 중 하나를 랜덤하게 생성해서
// num에 저장하는 코드이다.
//Integer num = (int)(Math.random()*100);
// 위 코드를 활용하여 연금 복권 번호를 생성해보시오.
// 다음 코드를 6번 반복
// 0부터 9까지 숫자 중 랜덤한 숫자를 하나 생성해서 저장
for(Integer i=0; i<6; i++) {
Integer num = (int)(Math.random()*9);
System.out.print(num + " ");
}
}
}
Q3) 예시와 같은 별(*)모양 만들기 ✅
public class EX03 {
public static void main(String[] args) {
// 1. 다음과 같이 정사각형을 출력하는 코드 작성
/*
----------
*****
*****
*****
*****
*****
----------
*/
for (Integer i = 0; i < 5; i++) {
System.out.println("*****");
}
System.out.println("------------");
// 2. 다음과 같이 삼각형을 출력하는 코드 작성
/*
----------
*
**
***
****
*****
----------
*/
for (Integer i = 1; i < 6; i++) {
for (Integer j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("------------");
// 3. 다음과 같이 삼각형을 출력하는 코드 작성
/*
----------
*
***
*****
********
**********
----------
*/
for(Integer i=1; i<6; i++) {
for (Integer j=6; j > i+1; j--) {
System.out.print(" ");
}
for (Integer k=0; k < (2 * i) - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
Q4) 두명의 사람이 가위, 바위, 보를 해서 이긴 사람의 이름 출력하기 ✅
class Player {
Integer rockPaper;
String name;
}
public class EX04 {
public static void main(String[] args) {
// 1은 가위, 2는 바위, 3은 보
// Player는 이름이 있고 가위 바위 보 중 하나를 저장할 수 있다.
// player01이 가위, 바위, 보 중 랜덤하게 하나를 선택
// player02가 가위, 바위, 보 중 랜덤하게 하나를 선택
// 둘 중에 이긴 사람 출력, 무승부면 계속 반복
Player player01;
player01 = new Player();
Player player02;
player02 = new Player();
player01.name="홍길동";
player02.name="임꺽정";
player01.rockPaper=(int)(Math.random()*3)+1;
player02.rockPaper=(int)(Math.random()*3)+1;
while(player01.rockPaper == player02.rockPaper) {
System.out.println(player01.rockPaper);
System.out.println(player02.rockPaper);
System.out.println("무승부");
player01.rockPaper = (int) (Math.random() * 3) + 1;
player02.rockPaper = (int) (Math.random() * 3) + 1;
}
System.out.println(player01.rockPaper);
System.out.println(player02.rockPaper);
if (player01.rockPaper == 1 && player02.rockPaper == 2 || player01.rockPaper == 2 && player02.rockPaper==3 || player01.rockPaper==3 && player02.rockPaper==1) {
System.out.println("임꺽정 승리");
} else {
System.out.println("홍길동 승리");
}
}
}
오늘의 느낀점 👀
오늘은 드디어 자바 프로그래밍을 시작한 날이었다. 역시나, 프로그래밍 지식이 없는 나에게는 쉽지 않았다. 위에서 정리한 문제들 중 마지막 2개를 못풀었는데, 이런 기초적인 문제도 풀지 못하는 나의 현재 수준을 다시 한번 깨닫고 마음을 다잡게 되었다.
기본적인 문법을 활용해서 생각하면 다 풀 수 있는 문제였지만, 생각이 조그만 공간에 갇혀있듯이 좁은 사고력을 바탕으로 문제를 풀게 되는 것 같다. 막상 해설을 들었을때는 왜 그 생각을 못했지... 라는 생각밖에 안들었다.
하지만, 프로그래밍 공부를 한번도 해보지 않은 나에게는 당연한 결과라고 생각한다. 그렇지만 나는 비전공자 사람들과만 경쟁하는것이 아니라고 생각하기 때문에, 전공자분들과 같이 실력을 겨뤄도 손색없을 정도로 실력을 키우고 싶다. 오늘 문제를 풀면서 해결하지 못한 내 자신에게 분노라는 감정을 느꼈고😡 의지가 다시 한번 불타올랐다.🔥🔥
시간은 나의 편이라고 생각한다. 오늘부터 매일매일 프로그래머스 문제를 꾸준히 5문제씩 풀 계획이다. 처음에는 당연히 못푸는 문제들이 많겠지만, 고민해보고 도저히 모르겠을때는 다른 사람이 푼 다양한 방법들을 보고 사용한 문법, 함수를 익혀서 내것으로 만들면서 풀어나가면 코딩 실력도 점차 나아지지 않을까 싶다. 노력하면 충분히 성장할 수 있다고 믿기 때문에 내일도 열심히 달려보겠다.😎