TIL 7 [ Java(조건/반복문, 배열 , 메소드) ]

2025. 2. 25. 21:38·[내일배움캠프-Sparta]/Spring 6기
반응형

1. 오늘 학습 키워드 : Java 프로그래밍 ( 조건/반복문, 배열, 메소드 ), 계산기 과제

2. 학습 내용을 나만의 언어로 정리
Java는 클래스,객체로 이루어진 언어이다.

 

3. 학습내용

10:00 ~ 12:00  프로그래밍 과제 발제 ( 계산기 과제 , 박성규 튜터님 )

14:00 ~ 15:00  프로그래밍 기초 발제 ( 박성원 튜터님 ) 

 

[1-7 조건문] 

컴퓨터는 스스로 조건/상태를 마주 할때, 사람처럼 스스로 판단을 할수가 없다.

// if-else 문 , 한가지 조건이 참이 될시, 그 조건식에 탈출된다.

if (조건식) {
	명령문;
} else if (조건식) {  // else if문은 여러개 작성 할수 있다.
	명령문;
} else {
	명령문;
}

// 예시

if ( 2 > 1 ) { // 2 > 1 은 true이므로 참이다.
	System.out.println("참입니다.") // 실행됨.
} else {
	System.out.println("거짓 입니다.");
}

 

// Switch문 ( 단일값과 일치한 조건에서 case가 시작된다. )
Switch (단일값) { 
	case 값1:
    	명령문;
        break; // 탈출 버튼을 의미하며, 없으면 다음case문이 실행된다.
    case 값2:
    	명령문;
        break;
    default: // 위의 값들과 일치하지 않을때 실행함.
    	명령문;

*실습 문제*

조건문 실습 문제 풀이 (if-else문)

[1-8 반복문] 

로봇에게 같은 동작을 10번 정도는 출력함수로 구현 가능하지만, 그 수가 100번 1000번등 너무많은 수를 요구하게 된다면, 비효율적인 코드가 작성이 된다.

for문 문법

break문 - 탈출버튼 ( 반복문을 빠져나온다 )

continue문 - 건너뛰기, Skip 버튼 ( 아래 반복으로 가지않고 바로 다음 반복으로 넘어간다 )

// for 반복문
int customers = 5;
for(int i=1; i<=customers; i++){
    if(i == 4) {
        break;
    }
    if (i == 2) {
        continue;
    }
    System.out.println(i +" 번째 손님 안녕하세요!");
}

 

이외에도 while문과 do-while문 반복문 구조도 존재한다.

// while 반복문 ( for문과 다른 반복문 )
int i = 1; // 초기조건
while(i <= 10) { // 종결조건
    System.out.println("안녕!");
    i++; // 증감식
}
// while(true) { ... } 로 작성시 무한루프가 발생한다.
// do-while 반복문 ( 한번은 무조건 실행하는 do-while문)
int j = 1; // 초기조건
do {
    System.out.println("아이고");
    j++; // 증감식
} while (j <= 10);  // 종결조건

*실습 문제*

반복문 실습문제 풀이 Q1 (for문)
반복문 실습문제 풀이 Q2 ( 중첩 for문 )

[1-9 배열] 

비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 것을 말한다.

 

정적배열 - 배열 생성시, 1번 크기를 정하면 변경할수 없다. 

// 배열 선언 
// 자료형[] 변수명 = new 자료형[배열길이];
int[] arr = new int[5]; // 5개의 데이터를 가진 정수형 배열이 생성됨. (정적배열, 20byte)

배열의 길이 메소드 (length) 

// 배열 선언과 동시에 배열의 요소 할당
int[] arr = {10, 20, 30, 40, 50};
		// [10] [20] [30] [40] [50]
        
// 배열의 길이 (length 메소드)
int arrlength = arr.length;
System.out.println("arrlength = " + arrlength); // 5가 출력됨.

배열의 요소 접근법 - 인덱스 활용

// 인덱스는 0부터 시작함.
int[] arr = {10, 20, 30, 40};
arr[0] = 20;

System.out.println(arr[0]); // 20
System.out.println(arr[1]); // 20
System.out.println(arr[2]); // 30
System.out.println(arr[3]); // 40
// System.out.println(arr[4]); // 인덱스 범위를 넘어서 BoundsofException 오류 발생 ! !

향상된 for문 (  ★ ★ ★ ) - 현업에서 많이 쓰인다.  ( 인덱스 개념 X )

int[] arr = {10, 20, 30, 40};

for (int n : arr) { // n은 인덱스 요소 값을 의미함.
	System.out.print(n + " ");
} // 10 20 30 40 출력됨

2차원 배열 - 가로(행, row) , 세로(열,column) 과 같이 좌표를 찍을때 등 사용된다.

// 2차원 배열
// boolean[][] board = new boolean[1][2];
// [] []
// 

boolean[][] board = {
        {true,false},
        {false,true},
};
System.out.println(board[1][1]); // true;

 

*실습 문제*

배열 실습문제 Q1 ( 배열 짝수만 출력 )

 

배열 실습문제 Q2 ( 배열 합 )
배열 실습문제 Q3 (검은돌 좌표 찾기)

[1-10 메소드] 

여러개의 작은 명령문을 한곳에 모아 사용하는 단위 ( 작업을 표현하는법  = 메소드, 함수, 기능 )

메소드는 항상 클래스 내부에 존재한다.

 

호출부 - 메소드를 사용하는곳 ( 매개변수를 통해 전달 )

선언부 - 메소드가 정의되어 있는곳 

메소드 기본적인 구조

 Calculator 클래스 에서 더하기 메소드 함수 정의

Calculator 클래스

 메인 클래스에서 객체를 생성후 함수 호출! ( 반환값을 받기 때문에 변수에 담을 곳이 필요함. )

메인 클래스

★ 여기서 반환 타입이 void 이면 반환값 (return)은 없다.  void는 비어있다 의미.

 

[2-1 클래스와 객체] 

클래스 : 객체를 만들때 필요한 청사진 ( 설계도 )  ○ 클래스명 첫글자는 대문자!!

객체 : 실제로 존재하는것,  객체를 만들때 new 키워드를 사용

인스턴스화 : 객체를 만드는 과정 , 인스턴스화가 되면 Java 메모리상에 객체가 만들어진다.

 

*실습문제*

요구사항 Car 클래스를 만든다. 속성 - 자동차의 속성을 저장할 변수를 만든다. 생성자 - 조립할 속성을 골라 객체화를 시켜주세요. 기능 - 다양한 기능을 만들어보고 활용해보세요. → drive() 주행 기능 → accelerate() 가속 기능 Q1 풀이

[2-2 JVM 메모리 영역] 

JVM에는 Method 영역, Stack영역, Heap 영역이 대표적으로 3개가있다. ( 그외에도 있긴함. )

 

Method(Static) 영역 - 클래스 정보 저장공간 ex) 책장

  • Static으로 선언된 변수와 메소드 이곳에 위치함. ( 공용으로 사용가능한 데이터 영역 )
  • 프로그램 실행시점 1번만 저장.

Stack (LIFO) 영역 - 메소드 실행시 사용되는 공간 ex) 접시쌓기

  • 지역변수, 호출정보

Heap 영역 - 객체가 생성되어 저장되는 공간 ex) 풍선

  • 객체는  Heap에 저장!!!
  • new키워드로 생성된 객체는 모두 Heap영역
  • Stack영역의 변수가 Heap영역의 객체를 참조하고 있음.

★ 가비지 컬렉터 ( Garbage Collector, GC )

Java의 사용하지 않는 객체들을 자동으로 제거하는 기능.

  • new 키워드로 생성된 객체 > Heap영역으로 저장
  • 사용이 끝난 객체는 메모리에 남아있으면 낭비.
  • 가비지 컬렉터가 불필요한 객체를 자동으로 정리해서 메모리를 확보함.

[2-3 래퍼클래스(참조형)]

래퍼 클래스  - 기본 자료형을 객체로 감싸는 클래스 ( 객체 O ) > 내부적으로 tostring()이 오버라이딩 되어 있다

Integer { int } < 이런 개념임.

참조형 변수 - 변수에 객체가 담긴것. 데이터가 저장된 메모리주소를 가리킨다. ( Heap 영역, 객체데이터는 Heap!! )

왜 사용 하는가? - 기본형을 감싼 객체를 만들어 기능을 제공하면, 편리하게 데이터 처리를 할수 있다.

 

오토박싱( 기본형 > 래퍼형 ) 

Integer num = 10; // 오토박싱
// Integer num = Integer.valueOf(10);
// 컴파일 내부적으로 자동으로 일어남.

오토언박싱( 래퍼형 > 기본형 )  

Integer num3 = 10;
int num = num3;  // 오토 언박싱
// int a = num.intValue();
// 컴퓨터 내부적으로 자동으로 일어남.

※ 기본형 vs 래퍼형 연산식 성능차이 : 래퍼형은 내부적으로 데이터를 감싸고 있기 대문에 연산시 불리함.

객체에서 기본형 값을 꺼내서 연산하는 추가작업이 발생하기 때문에 기본형을 쓰는게 좋다.

 

- 오류사항 : Intellj IDE 가 무한 빌드에 빠져서 작동이 안되는 현상 

- 해결: 튜터님과의 해결을 통해서, [settings] - [build] - [ builds tools ] - [gradle] - gradle로 다바꾸어서빌드하니 오류가 발생하지 않았다.


4. 내일 학습 할 것: 자바 2주차 완강, 개인 과제 해보기( 계산기 )

반응형

'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글

TIL 9 [ Java(예외처리, Optional, 제네릭, 컬렉션) ]  (0) 2025.02.27
TIL 8 [ Java(final, static, 인터페이스, 객체지향) ]  (0) 2025.02.26
TIL 6 [ Java( 개념,변수,입출력, 데이터타입, 연산자) ]  (0) 2025.02.24
TIL 5 [ Linux명령어, git 복습 ]  (0) 2025.02.21
TIL 4 [ 미니프로젝트 간단 웹 개발 / 배포 + TIL특강 ]  (0) 2025.02.20
'[내일배움캠프-Sparta]/Spring 6기' 카테고리의 다른 글
  • TIL 9 [ Java(예외처리, Optional, 제네릭, 컬렉션) ]
  • TIL 8 [ Java(final, static, 인터페이스, 객체지향) ]
  • TIL 6 [ Java( 개념,변수,입출력, 데이터타입, 연산자) ]
  • TIL 5 [ Linux명령어, git 복습 ]
dimenshun
dimenshun
한 소년의 개발 일기
    반응형
  • dimenshun
    Dev Life Notes
    dimenshun
  • 전체
    오늘
    어제
    • 분류 전체보기 (268)
      • CS (23)
        • 자료구조 (0)
        • 알고리즘 (0)
        • 컴퓨터 구조 (8)
        • 네트워크 (6)
        • 운영체제 (3)
        • DB ( + SQLD ) (5)
        • SW공학 (1)
      • 프로그래밍 (3)
        • Java (0)
        • Spring (0)
        • HTML,CSS (3)
        • JavaScript (0)
      • 개발 툴 (7)
        • Git(버전관리) (1)
        • Docker (3)
        • AWS (2)
        • JSP (1)
      • 코딩테스트(Algorithm) (125)
        • 백준 (6)
        • 프로그래머스 (119)
      • [내일배움캠프-Sparta] (110)
        • Spring 6기 (106)
        • KPT 회고 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    It
    web
    spring
    KPT
    트랜잭션
    배포
    개발자
    OS
    SQL
    CPU
    Java
    네트워크
    백엔드
    코딩테스트
    Python
    docker
    Testcode
    메모리
    세션
    Til
    내일배움캠프
    AWS
    운영체제
    network
    알고리즘
    웹
    SQLD
    db
    컴퓨터구조
    cs
  • hELLO· Designed By정상우.v4.10.3
dimenshun
TIL 7 [ Java(조건/반복문, 배열 , 메소드) ]
상단으로

티스토리툴바