본문 바로가기

개발 일지

[TIL]이노베이션 캠프 5일차

1. 개발 진행 상황

2. 개발 중 발생한 이슈와 해결

3. 새로 배운 것

  • JAVA 개발 순서: 코드 작성 -> 코드 컴파일 -> JVM으로 실행
  • 컴파일: 코드를 기계언어로 변환 해주는 것
  • 코드작성 방법

1) txt로 작성 -> 명령 프로프트로 컴파일(javac 파일명.java) -> 파일명.class 파일 생성 됨 // 실행은 java 파일명 프롬프트에 입력

2) eclips class 생성 -> 소스코드 저장(저장 시 자동으로 컴파일 됨) // class파일, java파일 생성 됨, 실행은 

  • 주석: 프로그램의 코드와 실행에 영향을 주지 않는 문장

1) 행 단위 주석 : //code , 단축키 cmd+/

2) 블럭단위 주석: /* code */

3) 문서화 주석: 클래스, 인터페이스 그리고 멤버 당 하나씩 가질 수 있고, 선언 바로 전에 작성

                         /**

                         * code

                          */ 

  • 변수: 값을 저장할 수 있는 메모리의 공간이며 값이 변할 수 있는 수
  • 상수: 변하지 않는 값을 저장, 형식: final 자료형 상수명 = 값;
  • - 상수명은 대문자로 지정하며 중간에 _(언더바)사용하여 띄어쓰기
  • 데이터 타입
자료형 키워드 크기 표현 범위 사용 예
논리형 boolean 1byte true or false boolean is Fusn - true;
문자형 char 2byte 0~65,535 char c = 'f';
정수형 byte 1byte -128 ~ 127 byte b = 89;
short 2byte -32,768 ~ 32,767 short s = 32760;
char 2byte 0 ~ 65,535 char c = 64;
int 4byte -2147483648 ~ 2147483647 int x = 59;
long 8byte ... long big = 3456789L;
실수형 float 4byte -3.4E038 ~ 3.4E038 float f = 32.5f
double 8byte -1.7E308 ~ 1.7E308 double d = 23.34
  • 리터럴

- 컴퓨터 과학 분야에서 리터럴이란, 소스 코드의 고정된 값을 대표하는 용어

- 리터럴은 일종의 값이다. true, false, 10, 11.1, a 등 이런 값 자체 

 

//boolean선언
int age = 20;
boolean isAdult = age > 19;
boolean isKid = age <= 19;

// 같은지는 == 으로 확인, 다른지는 != 으로 확인
boolean isEq = 20 == 20;
boolean isDiff = 20 != 20;

//숫자 int, float, Long
int a = 1;
float b = 1.2f;

System.out.println("a: " + a);
System.out.println("b: " + b);

//문자 String
String e = "자바 스프링, 5주 안에 끝낸다!";
  • boolean 타입을 활용하여 특정 경우일 때 명령 내리기
// 미성년자 여부 판별
int age = 20;
if (age > 19) {
	System.out.println("성인입니다.");
} else {
	System.out.println("미성년자입니다.");
}

// 감 개수 세는 반복문
int count = 0;
for (int i=0; i<fruits.size(); i++) {
	String fruit = fruits.get(i);
	if (fruit.equals("감")) { // if (fruit == "감") {
		count += 1;
	}
}
System.out.println(count);
  • 연산자 우선순위
최우선 연산자 . [] ()
단항 연산자 논리부정, 비트부정 ! ~
부호 + -
증감 ++ --
이항 연산자 산술 연산자 *  /  %
+ -
비교(이동)연산자 << >>
관계연산자 < <= >= >
== !=
비트논리 연산자 && ^ !
논리 연산자 && ||
삼항 연산자 조건 연산자 ? :
대입 연산자 대입 연산자 = += <=
  • 제어문

- if 문

- switch문

- while문

- do while문

- for문

for (시작조건; 계속하는조건; 더하기) {
	명령
}

for (int i=0; i<fruits.size(); i++) {
    String fruit = fruits.get(i);
    System.out.println(fruit);
}

//연습 문제
//주어진 연예인 목록을 차례대로 하나씩 인쇄하는 반복문을 작성해보세요.
List<String> celebs = new ArrayList<>();
celebs.add("아이유");
celebs.add("린다G");
celebs.add("은비");
celebs.add("금비");
celebs.add("비");
celebs.add("차은우");
celebs.add("남주혁");
celebs.add("수지");
celebs.add("정우성");
celebs.add("제니");
celebs.add("정국");

// 정답
For (int = 0; i < celebs.size(); i++) {
String celeb = celebs.get(i);
System.out.println(celeb);
}
  • 조건문과 반복문을 이용해서 주어진 과일의 개수 세고 그 수를 반환하기 연습 문제
// 주어진 과일 목록
public static int countFruit(String fruit) {
	List<String> fruits = new ArrayList<>();
	fruits.add("감");
	fruits.add("배");
	fruits.add("감");
	fruits.add("딸기");
	fruits.add("수박");
	fruits.add("메론");
	fruits.add("수박");
	fruits.add("딸기");
	fruits.add("메론");
	fruits.add("수박");
	fruits.add("메론");
	fruits.add("수박");
	fruits.add("감");	
}

// 정답
int count = 0;
for (i = 0; i < fruits.length(); i++) {
	String fruit = fruits.get(i);
	if (fruit.equals(fruit) {
    count += 1;
    }
}
return count;
}
  • 배열: 정보를 묶을 때 List사용, 같은 자료형만 넣을 수 있음
List<String> newList = new ArrayList<>();
newList.add("웹개발의 봄 Spring"); // 값을 넣을 때 add
newList.add("프론트엔드의 꽃 React");
System.out.println(newList);
System.out.println(newList.get(0)); //조회할 때 get
System.out.println(newList.get(1));
newList.remove(0); //제거할 때 remove
System.out.println(newList);
  • 클래스와 객체

- 객체지향 언어: 프로그램을 구성하는 요소는 개체이며 이것이 상호작용 하도록 프로그래밍 함

- 클래스: 객체를 만들기 위한 틀

- 클래스 선언 public class 클래스명; { }

 

4. 참고 레퍼런스

https://school.programmers.co.kr/learn/courses/5

 

자바 입문

자바 입문 가장 널리 쓰이는 프로그래밍 언어 Java로 프로그래밍의 기초를 다져보세요. 이 강의의 내용을 책으로 만나고 싶으시면 여기를 눌러 책 정보를 확인하세요. 강의를 다 들었는데, 지금

school.programmers.co.kr

5. 오늘 한 일 / 회고

  • 이노베이션 캠프 2주차 과제 알고리즘 담당 문제 해결

6. TO-DO LIST

  • 알고리즘 담당 문제 해결 및 조원들과 공유
  • Java 개인 공부

 

7. 특이사항

  • 2주차 조장이 되었다. 1주차 때는 홈페이지 구현하는거라 시간도 촉박하고, 팀원들끼리 의견공유가 많아야해서 조장이 힘들겠다 싶었는데 이번주 과제는 알고리즘 스터디고 개별과제에 집중하는게 더중요해서 조장의 역할이 크지 않아도 되서 다행이면서도 아쉽기도 하고 그렇당
  • 알고리즘 문제는 예전에 공부할 때 조금 다뤄봐서 1주차 보다 어려운 느낌은 적지만 Java가 익숙하지 않아서 문법익히고 적용하는데 초점을 둬야 할 듯

'개발 일지' 카테고리의 다른 글

[TIL]이노베이션 캠프 7일차  (0) 2022.08.07
[TIL]이노베이션 캠프 6일차  (0) 2022.08.07
[TIL]이노베이션 캠프 4일차  (0) 2022.08.05
[TIL]이노베이션 캠프 3일차  (0) 2022.08.03
[TIL]이노베이션 캠프 2일차  (0) 2022.08.02