작성 : 2024. 4. 6. 13:49

 

자동 import : Command + Shift + o

배열을 이용한 프로그램 알아보기

배열의 복사 :

ex) arr1 → arr2 옮기기

  1. 반복문
  2. 메소드
// 반복문을 이용

배열의 한 자리 복사하는 코드:


//    (배열의 선언 = 초기화 방법들)
//		int[] arr1;  // 배열의 선언
// 		arr1 = new int[5];  // [] 안에다 배열의 크기를 정해 주기, 위와 세트
// 		int[] arr1 = {10, 20, 30, 40, 50};  // 안에 어떤 값이 있는지까지 정해 한번에 선언하는 방법

배열 선언 후 

for (int i = 0; i < arr1.length; i++) {
 arr1[i] = arr2[i];
}


배열의 여러 자리 복사하는 코드:

배열 선언 후

for (int i = 0; i < 3; i++) {
 arr2[i + 2] = arr1[i];
}


잘 들어갔는지 확인하기 위해 배열에 숫자를 넣어 실행해봄.

-------------------------------------------------------------------------------

배열의 한 자리 복사하는 코드:

 		int[] arr1 = {10, 20, 30, 40, 50};
 		int[] arr2 = {1, 2, 3, 4, 5};
		
 		for (int i = 0; i < arr1.length; i++) {
 			 arr1[i] = arr2[i];
 			}
 			
 		System.out.println(Arrays.toString(arr1));
 		System.out.println(Arrays.toString(arr2));


결과 :

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
-------------------------------------------------------------------------------
 
 배열의 여러 자리 복사하는 코드:
 		
 		for (int i = 0; i < 3; i++) {
 			 arr2[i + 2] = arr1[i];
 			}
 			
 	  System.out.println(Arrays.toString(arr1));
 		System.out.println(Arrays.toString(arr2));
 		
 			
결과 :

[10, 20, 30, 40, 50]
[1, 2, 10, 20, 30]
 		
 		
 		
 		// 강사님의 예시
		
		
		
		int[] arr1 = {1, 2, 3, 4, 5};
		int[] arr2 = new int[5];
 		
		for(int i = 0; i < 3; i++) {
			arr2[ i + 2 ] = arr1[i];
		}
		
		System.out.println(Arrays.toString(arr1));
 		System.out.println(Arrays.toString(arr2));
 		
결과 :

[1, 2, 3, 4, 5]
[0, 0, 1, 2, 3]



--------------------------------------------------------------------------------
    
    // 메서드를 이용한 배열의 복사 01.

    int[] arr1 = {1, 2, 3, 4, 5};
		int[] arr2 = new int[5]; 		
		
		System.arraycopy(arr1, 0, arr2, 2, 3);  
		// arraycopy (값을 가진 배열, 인덱스값, 값을 복사할 배열, 인덱스값, 크기)  
		System.out.println(Arrays.toString(arr2));
		
		
		결과 :
		
		[0, 0, 1, 2, 3]
		
--------------------------------------------------------------------------------		
	
		// 메소드를 이용한 배열의 복사 02.
	
		// arraycopy (값을 가진 배열, 인덱스값, 값을 복사할 배열, 인덱스값, 크기)
		
		System.arraycopy(arr1, 0, arr2, 0, arr1.length); //전체 복사
		System.out.println(Arrays.toString(arr2));
		
--------------------------------------------------------------------------------			
		
		// 메소드를 이용한 배열의 복사 03.
		
		// Arrays 객체 사용
		// copyof() 사용
		
		arr2 = Arrays.copyOf(arr1, 3);  // ( 위치, 몇 개 복사하고 싶은지 )
		System.out.println(Arrays.toString(arr2));
		
		
		// copyofRange() 사용
		
		arr2 = Arrays.copyOfRange(arr1, 2, 5);  
		// ( 위치, 시작인덱스 , 종료인덱스 (마지막은 포함이 안되기 때문에 포함하는 값 + 1 하기))
		System.out.println(Arrays.toString(arr2));
		
--------------------------------------------------------------------------------			
		
		
		값교환하는 방법
		// 'temp (동일한 타입)' 라는 임시저장공간에 옮겨줌. 
		
		int temp;
		int x = 10;
		int y = 20;
		
		System.out.println(x + ", " + y);
		
		temp = x;
		x = y;
		y = temp;
		
		System.out.println(x + ", " + y);
		
		결과 :
		
		10, 20
    20, 10
    
    
    
    중첩반복문 사용
    
    // 값을 오름차순으로 정렬하기

		int[] arr1 = { 2, 7, 3, 5, 1 };

		for (int i = 0; i < (arr1.length - 1); i++) { // (arr1.length - 1) 총 돌아야하는 횟수
			for (int j = (i + 1); j < arr1.length; j++) { // i와 비교하는 값 j
				int temp;
				if (arr1[i] > arr1[j]) {
					temp = arr1[i];
					arr1[i] = arr1[j];
					arr1[j] = temp;
				}
			}
		}

		System.out.println(Arrays.toString(arr1));
		
		결과 :
		
		[1, 2, 3, 5, 7]
		
		
		// 내림차순 정렬
		
		for (int i = 0; i < (arr1.length - 1); i++) {
			for (int j = (i + 1); j < arr1.length; j++) {
				int temp;
				if (arr1[i] < arr1[j]) {
					temp = arr1[i];
					arr1[i] = arr1[j];
					arr1[j] = temp;
				}
			}
		}
		
		System.out.println(Arrays.toString(arr1));
		
		결과 :
		
		[7, 5, 3, 2, 1]
		
		
		
		// Arrays.sort 를 이용해 오름차순 정렬
		
		Arrays.sort(arr1);
		System.out.println(Arrays.toString(arr1));
		
		결과 :
		
		[1, 2, 3, 5, 7]
		
		
		// Arrays.sort, Collections.reverseOrder 를 이용한 내림차순 정렬
		
		// 이때는 int 사용 불가 
		Integer[] arr2 = { 2, 7, 3, 5, 1 };
		
		Arrays.sort(arr2,Collections.reverseOrder());
		System.out.println(Arrays.toString(arr2));
		
		결과 :
		
		[7, 5, 3, 2, 1]

 

 

  • 2차원 배열

이상은 거의 쓰지 않음

행렬의 구조

// 2차원 배열
    // 행열의 구조 = 표의 형태
    // 행 = 세로, 열 = 가로
    
    //int[][] arr1; // 배열의 선언
    //arr1 = new int[5][3];  // 배열의 생성, [행][열] = [행] * [열] = 15의 인덱스를 가진 배열
		
		
		int[][] arr1 = new int[5][3];    // 한번에 선언과 생성
		
		arr1[0][0] = 1;  // 행렬의 순차적 처리
		arr1[0][1] = 2;
		arr1[0][2] = 3;
		
		arr1[1][0] = 4;
		arr1[1][1] = 5;
		arr1[1][2] = 6;
		
		arr1[2][0] = 7;
		arr1[2][1] = 8;
		arr1[2][2] = 9;
		
		arr1[4][0] = 13;
		arr1[4][1] = 14;
		arr1[4][2] = 15;
		
		// 이렇게 찍어보면 해당 위치에 있는 인덱스의 번호가 나옴.
		System.out.println(arr1[0][0]);
	  System.out.println(arr1[4][2]);
​

​

	// 문제 : 행의 크기가 2 이고 열의 크기가 5 인 이차원배열을 생성해라
	// 1부터 10까지 반복문을 사용해서 초기화한다
	// 홀수만 출력한다


// 풀이 1번 -> for문을 이용한 초기화가 아님

	int[][] arr1 = { // 선언 생성 초기화 동시에
			{ 1, 2, 3, 4, 5 }, // 한 행이 만들어짐
			{ 6, 7, 8, 9, 10 }, };

	for (int i = 0; i < arr1.length; i++) {
		for (int j = 0; j < arr1[0].length; j++) {
			if (arr1[i][j] % 2 != 0) {
				System.out.print(arr1[i][j] + " ");
			}
		}
	}
	
	
	// 풀이 2번
	
	int[][] arr1 = new int[2][5];

		for (int i = 0; i < arr1.length; i++) {
			for (int j = 0; j < arr1[0].length; j++) {
				arr1[i][j] = i * 5 + j + 1;
				if (arr1[i][j] % 2 == 1) {
					System.out.print(arr1[i][j] + " ");
				}
			}
		}

//		// deepToString 이차원 배열에서 출력
//		System.out.println(Arrays.deepToString(arr1));

결과 :

1 3 5 7 9 

// 결과는 둘 다 잘 나옴..

 

  • 배열을 초기화 한다는 것은?

배열을 초기화한다는 것은 배열의 각 요소에 값을 할당하거나 설정하는 것을 말합니다. 즉, 배열을 사용하기 전에 각 요소에 대해 값을 설정하는 것입니다. 배열을 선언하면 메모리에 공간이 할당되지만, 그 안의 각 요소는 초기화되지 않은 상태입니다. 이 때, 초기화를 수행하여 각 요소에 값을 설정해야 배열을 사용할 수 있습니다.

예를 들어, int 타입의 배열을 초기화한다고 할 때, 각 요소에는 정수 값이 할당됩니다. 자바에서는 배열을 선언한 후에 각 요소를 초기화하는 과정이 필요합니다. 이는 반복문이나 직접적인 할당을 통해 이루어집니다. 이것이 배열을 초기화한다는 개념입니다.

-GPT 참조..

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Bingo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 변수 <-> 상수 (상반된 개념)

//		int x;
//		x = 10;
//		x = 20;   // 변수는 계속 변할 수 있음. 
//		
//		// 상수는 final 를 쓰고 상수명을 대문자로 씀
//		final double PI = 3.14; // 상수는 변하지 않는 수, 상수선언을 한 것임. 
//		
//		System.out.println(PI);

		// 빙고게임 만들기
		// 가로 세로 5 X 5

		final int SIZE = 5; // 상수선언
		int x = 0, y = 0;
		int num = 0; // 입력받은 값을 가지고 판단하는 역할

		int[][] bingo = new int[SIZE][SIZE]; // 상수를 사용해서 이차원배열 만들기

		Scanner sc = new Scanner(System.in);

		// 빙고판 초기화
		for (int i = 0; i < bingo.length; i++) {
			for (int j = 0; j < bingo[i].length; j++) {
				// ********  bingo[i][j] 이 위치의 인덱스에 들어갈 값이 나오는 식이 'i * SIZE + j + 1'이다!
				// 잘 모르겠으면 표를 그려보기!
				bingo[i][j] = i * SIZE + j + 1;  
			}
		}

//		System.out.print(Arrays.deepToString(bingo));   // 1 ~ 25 까지 나옴

		// 빙고게임을 만들기 위해 숫자들의 위치를 바꿔야 함. 위치값 자체를 난수로 만들어야 한다.
		// 랜덤

		// 빙고판 랜덤값으로 섞기
		for (int i = 0; i < SIZE; i++) {
			for (int j = 0; j < SIZE; j++) {
				x = (int) (Math.random() * SIZE); // 0 ~ 4 크기의 인덱스에 SIZE * SIZE 까지의 랜덤값을 넣어라
				y = (int) (Math.random() * SIZE);

				// 교환
				int temp = bingo[i][j]; // 빈 자리에 수를 넣어줌
				bingo[i][j] = bingo[x][y];
				bingo[x][y] = temp;

			}
		}

//		System.out.println(Arrays.deepToString(bingo));

		// 5 x 5 빙고판을 화면에 출력해보기

		// for 문으로 표현
//		for (int i = 0; i < SIZE; i++) {
//			for (int j = 0; j < SIZE; j++) {
//				System.out.print(bingo[i][j] + " ");
//			}
//			System.out.println();
//		}

		// arr 배열
		// arr[] 행 -> 이렇게 나누는 이유는 실제 이차원배열에서 참조방식이 행 따로, 열 따로 이기 때문.
		// arr[][] 행렬

		// 향상된 for문 : 편하고 오류를 방지할 수 있다.
		// int[] , int 는 타입, []는 행
		
		
		// 빙고 게임 진행

		do {

			for (int[] a : bingo) {
				for (int n : a) {
					System.out.print(n + " ");
				}
				System.out.println();
			}
			System.out.println();

			System.out.printf("1 ~ %d 의 숫자를 입력하세요. (종료 : 0) > ", SIZE * SIZE);

			// 값을 입력받는 곳
			num = sc.nextInt();

			boolean flag = true;

			// 빙고 안에 들어있는 숫자와 입력받은 숫자가 같은지 보고 같으면 0을 넣어줘라.
			// 입력받은 값이 0이면 멈춰라!
			for (int i = 0; i < SIZE; i++) {
				for (int j = 0; j < SIZE; j++) {
					if (bingo[i][j] == num) {
						bingo[i][j] = 0;
						flag = false;
						break;
					}
				}

				if (!flag) {
					break;
				}
			}
			
			// 빙고인지 체크해주기

			int sum = 0;
			flag = true;

			for (int i = 0; i < SIZE; i++) {
				sum = 0;
				for (int j = 0; j < SIZE; j++) {
					sum += bingo[i][j];
				}

				if (sum == 0) {
					flag = false;
					break;
				}
			}
			
			// 위 조건이 만족되어 빙고가 되면 프로그램 끝내기, do-while문 끝내기
			
			if (!flag) {
				break;
			}
			

		} while (num != 0);
		
		// 다 끝나고 0으로 빙고가 된 화면을 한번 더 출력하기 위해 다시 코드를 한 번 더 넣어줌.
		for (int[] a : bingo) {
			for (int n : a) {
				System.out.print(n + " ");
			}
			System.out.println();
		}


		// 가로로 한 줄이 맞으면 "빙고! "라고 출력하고 종료해라 (추가적인 미션이었지만 미완..)
		System.out.println();
		System.out.println(" ===================== ");
		System.out.println(" ===== B I N G O ===== ");
		System.out.println(" ===================== ");

		}

	}

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0408  (0) 2024.05.29
UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0403  (0) 2024.05.29
UIUX _국비과정 0402  (0) 2024.05.29
UIUX _국비과정 0401  (0) 2024.05.28

작성 : 2024. 4. 3. 

 

개발블로그 운영하기

노션에 메모한 내용으로 TIL작성하기, 깃허브 알아보고 시도해보기

// 반복문 제어
	// break (반복문의 종료), continue


//break (반복문의 종료) 사용

	for (int i = 0; i <= 10; i++) {
		if (i >= 6) {
			break;   // 사용되는 순간 강제종료
		}
		System.out.println( i + ". hello");
	}
	
	결과 :
	
0. hello
1. hello
2. hello
3. hello
4. hello
5. hello


//continue 사용

for (int i = 0; i <=10; i++ ) {
			if (i % 2 == 0) {
				continue; // 홀수만 출력하고 싶을 때. 짝수가 나오면 다시 for문으로 올라가 돌려라.
			}
			System.out.println(i);
		}

결과 :

1
3
5
7
9



//키보드로 부터 데이터를 입력받고 어떤 값인지에 따라 반복문을 실행할지,안할지 결정하는 문제를 만들어보자.
// 점심메뉴 후보 중 1, 2, 3번을 선택할 수 있고 4번을 선택하기 전까지 계속 새로 선택할 수 있다.
		
		java.util.Scanner sc = new Scanner(System.in);
		System.out.println("1.짜장면 2.김치찌개 3.돈까스 4.종료");
		System.out.println("선택>>");
		int sel = sc.nextInt();

		// 무한반복이 필요한 경우 while문을 사용 
		// while문 조건이 참일때 계속 실행, 따라서 해당 코드는 제어문이 없으므로 무한반복
		while (true) {
			if (sel == 1) {
				System.out.println("오늘의 메뉴는 짜장면");
			} else if (sel == 2) {
				System.out.println("오늘의 메뉴는 김치찌개");
			} else if (sel == 3) {
				System.out.println("오늘의 메뉴는 돈까스");
			} else if (sel == 4) {
				System.out.println("종료");
			}
		}
		
		결과 :
		
		1.짜장면 2.김치찌개 3.돈까스 4.종료
    선택>> [키보드로 입력하는 칸]
    
    // 지금까지의 코드는 키보드로 선택 칸에 어떤 번호를 입력하던 무한루프
    
    // -> 내가 추가적으로 만들어보고 싶은 것은 랜덤으로 점심메뉴 정하기. 번호를 입력하면 그 번호에 해당하는 메뉴가 뭔지 보여준다. 위 문제를 해결하고 나면 간단하게 응용해서 바로 만들 수 있을 듯.
    
    
    무한루프를 제어하기 위해 수정된 코드 :
    
    	java.util.Scanner sc = new Scanner(System.in);

		// 무한반복이 필요한 경우 while문을 사용
		while (true) {

			System.out.println("1.짜장면 2.김치찌개 3.돈까스 4.종료");
			System.out.print("선택>>");
			int sel = sc.nextInt();

			if (sel == 1) {
				System.out.println("오늘의 메뉴는 짜장면");
			} else if (sel == 2) {
				System.out.println("오늘의 메뉴는 김치찌개");
			} else if (sel == 3) {
				System.out.println("오늘의 메뉴는 돈까스");
			} else if (sel == 4) {
				System.out.println("종료");
				break; // while문을 종료
			}

		}

		System.out.println("프로그램 종료");
		
		
		
		// break가 어디를 제어하는지 알아보기 위해 작성한 코드
		
		
				for (int i = 1; i <= 5; i++) {

			if (i == 3) {
				break;
			}
			System.out.println("out for ing");

			for (int j = 1; j <= 5; j++) {
				if (j == 2) {
					break; // break를 감싸고 있는 가장 가까운 반복문 제어!
				}
				System.out.println("hello");
			}
		}
		
		결과 :
		
out for ing
hello
out for ing
hello

// 4번 돌아가는 결과가 나옴 (i가 0부터 시작한다는 것 항상 기억)

// for문을 사용해서 로또번호 출력

 1~45 까지의 숫자, 6개를 추출 = 임의의 숫자 6개 -> 난수라고 함.
 난수
 Math.random()
 범위 : 0.0 <= r < 1
 System.out.println(Math.random());  // 찍히는 난수를 볼 수 있음



		System.out.println(Math.random() * 10);  // 0.xx ~ 9.xx 로 범위가 바뀜
		(int)(Math.random() * 10) // 0 ~ 9 로 바뀜
		(int)(Math.random() * 10) + 1 // 1 ~ 10
		(int)(Math.random() * 난수의 갯수) + 난수의 최소값
		난수의 갯수 => 난수의 최대값 - 난수의 최소값 + 1 => 10 - 1 + 1



	// 난수 구하는 공식
		for (int i = 1; i <= 20; i++) {
			System.out.println((int)(Math.random()* 10) + 1);
		}

 

배운 것을 응용해 만들어보고 싶은 것 하나씩 만들어보기!

// -> 내가 추가적으로 만들어보고 싶은 것은 랜덤으로 점심메뉴 정하기. 번호를 입력하면 그 번호에 해당하는 메뉴가 뭔지 보여준다. 위 문제를 해결하고 나면 간단하게 응용해서 바로 만들 수 있을 듯.

 

 1 ~ 45까지 난수 출력
 
			예시) 1 ~ 12까지의 랜덤 숫자 10가지 출력
           (int) (Math.random() * (12-1+1)) + 1
            = (int) (Math.random() * 12) + 1
            
            
	for (int i = 1; i <= 10; i++) {
				System.out.println((int)(Math.random()* 45) + 1);
			}
		}
		
		
		// 로또 번호 생성 -> 중복제거 아직 안함
		
		int lotto;
		
		for (int i = 1; i <= 6; i++) {
			lotto = (int)((Math.random()* 45) + 1) + 1;
			System.out.println(lotto);
		}

 

 

  • 가위바위보 게임 만들기
System.out.println("입력>>");
			me = sc.nextInt();
			
      // 컴퓨터가 보를 내고 사용자가 가위를 내면 컴퓨터가 이기는 조합이 빠져있다.
			if (com == 1 && (me == 1 || me == 3)) {
				System.out.println("다시하기");
			} else if (com == 1 && me == 2) {
				System.out.println("승!");
				break;
			} else if (com == 2 && (me == 1 || me == 2)) {
				System.out.println("다시하기");
			} else if (com == 2 && me == 3) {
				System.out.println("승!");
				break;
			} else if (com == 3 && (me == 3 || me == 2)) {
				System.out.println("다시하기");
				} else if (com == 2 && me == 1) {   // com == 2 가 아니라 3
				System.out.println("승!");
				break;
			}
			
--------------------------------------------------------------------------------
					
수정된 코드 :

		while (true) {
			com = (int) (Math.random() * 3) + 1;
			System.out.println("1.가위 2.바위 3.보");
			System.out.println("입력>>");
			me = sc.nextInt();

      // 내가 이기는 경우에는 종료니까 내가 이기는 경우의 수만 계산하면 됨.
			if ((com == 3 && me == 1) || (com == 1 && me == 2) || (com == 2 && me == 3)) {
				System.out.println("컴퓨터 : " + com);
				System.out.println("당신의 승!");
				break;
				
				// 컴퓨터와 비기는 경우와 나머지는 다시하기
			} else if (com == me) {
				System.out.println("컴퓨터 : " + com);
				System.out.println("다시하기");
			} else {
				System.out.println("컴퓨터 : " + com);
				System.out.println("다시하기");
			}

결과 :

예시) 

1.가위 2.바위 3.보
입력>>
1
컴퓨터 : 3
당신의 승!



--------------------------------------------------------------------------------
			
			// 강사님의 풀이 -> (com - me)의 값에서 규칙성을 찾아서 품.

		int com; // 컴퓨터의 값을 담을 변수
		int me; // 나의 답을 담을 변수
		Scanner sc = new Scanner(System.in);

		
		while (true) {
			com = (int) (Math.random() + 3) + 1;
			System.out.println("1.가위 2.바위 3.보");
			System.out.println("입력>>");
			me = sc.nextInt();

			int result = me - com;

			if (result == -2 || result == 1) {
				System.out.println("you win!");
				break;
			} else if (result == -1 || result == 2) {
				System.out.println("you lose");
			} else {
				System.out.println("비겼습니다");
			}
		}

 

 

  • boolean 을 이용한 제어문

- thread를 관리하는 것에 유용함.

// break 외의 boolean를 이용한 제어문

  // boolean를 이용해 flag를 true라고 지정해서 제어문에 사용하기
	boolean flag = true;    

	Scanner sc = new Scanner(System.in);

	while (flag) {  
		System.out.println("입력>>");
		int sel = sc.nextInt();
		if (sel == 1) {
			System.out.println("1번");
		} else if (sel == 2) {
			System.out.println("2번");
		} else if (sel == 3) {
			System.out.println("3번 프로그램 종료");
			flag = false;
		}
	}
	
	스레드같은 프로그램 사용할 때 이 방법을 자주 씀.

 

 

  • 배열

- 동일한 타입의 데이터를 여러개 저장하는 변수

- 1차원 배열, 다차원 배열(2차원)

- 배열은 인덱스번호를 이용, 인덱스번호는 0번부터 시작

- 자동초기화가 된다.

- 순차적인 데이터 처리

int x, y, z, k, f;  // 이렇게도 배열을 선언할 수 있지만 효율적이지 X
		
		// 배열선언 방법
		
		// 1번 방법)
		int[] arr;  // 연속된 형태의 배열 선언
		arr = new int[5];  // 배열의 생성 -> 저장공간 5개를 만들 수 있다
		// arr은 주소값을 가지고 있다, arr[인덱스번호] 이를 이용해 각 배열의 위치를 구분할 수 있다!
		
		
		// 2번 방법)
		int[] arr = new int[5];  //선언과 초기화 동시에.
		
		
		
		-> 값 찍어보기
		
		arr[0] = 10;  // 배열의 초기화
		arr[1] = 20;
		arr[2] = 30;
		arr[3] = 40;
//		arr[4] = 50;
		
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println(arr[3]);
		System.out.println(arr[4]);
		
		결과 :
		
10
20
30
40
0 // 초기화를 하지 않아 값을 찾을 수 X



// 1번과 2번 방법을 한번에

int x, y, z, k, f;
int[] arr = {10, 20, 30, 40, 50};



// 배열에 들어있는 값 출력

	int[] arr = new int[5];
		
		for (int i = 0; i < 5; i++) {  
			arr[i] = (i + 1)* 10;
		}
		
		for (int i = 0; i < 5; i++) {  
			System.out.println(arr[i]);
		}
		
		
	// 같은 코드 	=
		
		// arr.length -> 배열의 길이(크기)를 나타냄.
		
		int[] arr = new int[5];
		
		for (int i = 0; i < arr.length; i++) {  
			arr[i] = (i + 1)* 10;
		}
		
		for (int i = 0; i < arr.length; i++) {  
			System.out.println(arr[i]);
		}

 

 

 

// 문제 풀기!
// int 크기가 10인 배열을 만들어라
// 반복문을 사용해서 1~10 정수로 초기화
// 배열의 값의 총합을 구하는 프로그램을 작성
	
--------------------------------------------------------------------------------	
	// 내가 풀었을 때 코드가 실행되지 않음 -> 해결방법 추가 (완.)

	int[] arr = new int[10];
	int sum = 1; // sum변수의 초기값을 0으로 설정해야함. 1로 설정하는 것은 잘못된 설정. 잘못된 초기값으로 잘못된 결과가 나올 수 있음.

	for (int i = 1; i < arr.length; i++) { // 여기도 0부터 시작할 것.
		arr[i] = i + 1;
		sum += i; // 이게 들어갈 게 아니라,, 배열의 요소값을 더해야 함으로 i대신 arr[i]로 바꾸기
		System.out.println(i); // i를 출력할 것이 아니라 배열의 요소값을 더한 arr[i]를 출력
	}

	System.out.println(sum); // 배열 요소들의 합
	
	
	결과 :
	
1
2
3
4
5
6
7
8
9   
46  총합에서 9가 더해지지 않은 숫자가 나옴. -> 잘못된 코드

--------------------------------------------------------------------------------	

수정된 코드 :

int[] arr = new int[10];
		int sum = 0;  
		
		for (int i = 0; i < arr.length; i++) {
			arr[i] = i + 1;
			sum += arr[i];
			System.out.println(arr[i]);
		}
		
		System.out.println("배열의 요소들의 합: " + sum);
		
		
		결과 :
		
1
2
3
4
5
6
7
8
9
10
배열의 요소들의 합: 55
		
		
--------------------------------------------------------------------------------	
		

    // 강사님 풀이
		
		int[] arr = new int[10];
		int sum = 1;

		for (int i = 0; i < arr.length; i++) {
			arr[i] = i + 1;
		}
		
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}

		System.out.println(sum);
		
		결과 :
		
		55
		
		
		
		
		
--------------------------------------------------------------------------
		
	import java.util.Scanner;

  //스캐너를 사용해서 점수를 입력받을 예정.
  public class ExamTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 학생의 성적을 구하는 프로그램

		String[] subject = { "국어", "영어", "수학", "과학", "사회" };

		// 점수를 담는 배열
		int[] score = new int[5];

		// 총점
		int sum = 0;
		// 평균
		double avg = 0.0;

		// 다섯과목 점수입력, scanner를 쓸 때는 어떤 것을 입력하라는 것인지 메세지를 줘야 함.
		Scanner sc = new Scanner(System.in);

		for (int i = 0; i < score.length; i++) {
			System.out.println("[" + subject[i] + "] 점수를 입력하세요");
			score[i] = sc.nextInt();
		}

		// 총점
		for (int num : score) {
			sum += num;
		}

		// 평균
		// 소수점을 구하기 위해 (double)로 형변환
		avg = sum / (double) score.length;

		// 향상된 for문으로 나타내기
    //		int i = 0; 
    //		// i를 다시 선언
    //		for(String sub : subject) {
    //			System.out.println(sub + " 점수 : " + score[i++]);  // i만 선언해서 알아서 증가하는 게 아니므로 i++ 증가를 해줘야 함.
    //		}

		// 기존 for문으로 나타내기
		for (int i = 0; i < subject.length; i++) {
			System.out.println(subject[i] + " 점수 : " + score[i]);
		}

		// 총점과 평균 출력
		System.out.println("총점 : " + sum);
		System.out.println("평균 : " + avg);

		// 과목 중에 가장 점수가 높은 과목의 이름과 점수를 출력 (문제!)

		// 최고 점수는 구함(완.)
		int max = score[0];
		// 최고, 최저 점수의 과목 구하기(도움.)
		String sub = null;  // 초기화해서 들어오는 값이랑 비교
		// 최저 점수
		int min = score[0];

		for (int i = 1; i < score.length; i++) { // 0번부터 비교하는 것은 무의미함.
			if (score[i] > max) {
				sub = subject[i];
				max = score[i];
			}
			if (score[i] < min) {
				sub = subject[i];
				min = score[i];
			}
		}

		System.out.println(sub + "과목의 점수가 가장 높습니다. " + max + "점");
		System.out.println(sub + "과목의 점수가 가장 낮습니다. " + min + "점");
	}
}

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0404  (0) 2024.05.29
UIUX _국비과정 0402  (0) 2024.05.29
UIUX _국비과정 0401  (0) 2024.05.28
UIUX _국비과정 0329 첫 날!  (0) 2024.05.28

작성 :  2024. 4. 2. 

  • switch문

등가연산( ==, != ), 범위비교를 할 수 없음 실수 사용은 불가

switch(비교값) {
case 값1 : 실행문;
break;
}

		int select = 4;

		switch (select) {
		case 1:
			System.out.println("1번 선택");
			break;
		case 2:
			System.out.println("2번 선택");
			break;
		case 3:
			System.out.println("3번 선택");
			break;
			default : System.out.println("번호를 잘못 선택함");
		}
		
		
		
		
		
->  계산기 만들기
// 피연산자(문자), 연산자(숫자)
		
		Scanner sc = new Scanner(System.in);
		// 스캐너를 넘길 때 버퍼에 담아놓고 데이터를 보내줌, 버퍼에서 엔터값을 가지고 와 넘겨줌, 단위테스트를 꼭 해보기

		System.out.print("정수 하나 입력 : ");
		int num1 = sc.nextInt();

		sc.nextLine(); // 엔터값을 가지고 옴. 이렇게 해줌으로서 버퍼가 대기.

		System.out.print("연산자 입력 ( + , - , x , / ) : ");
		String op = sc.nextLine();

		System.out.print("정수 하나 입력 : ");
		int num2 = sc.nextInt();

		switch (op) {
		case "+":
			System.out.println(num1 + num2);
			break;
		case "-":
			System.out.println(num1 - num2);
			break;
		case "x":
			System.out.println(num1 * num2);
			break;
		case "/":
			System.out.println(num1 / num2);
			break;
		default:
			System.out.println("연산자가 잘못 선택됨");
		}

 

  • 반복문

만들어 놓은 실행문은 여러 번 출력하고 싶을 때 for, while, do-while

형태 :

for(초기값; 조건식; 증감식) {

반복할 실행문

}

for (int i = 0; i < 10; i++) {
		System.out.println( i + ". hello" );
	}
	
	
	결과 : 
	
0. hello
1. hello
2. hello
3. hello
4. hello
5. hello
6. hello
7. hello
8. hello
9. hello





int i;  // i를 for문 밖에서 선언하면 더 넓은 범위로 사용할 수 있음. 
           하지만 보통은 for문 내부에서 사용! i는 (지역변수)

	for (i = 0; i < 10; i++) {
		System.out.println( i + ". hello" );
	}
	
	
	
	-------------------------------------------------------------------------
	
	
	-> 감소하는 형태의 for문
	
	
	for (int i = 10; i >= 1; i--) {
			System.out.println( i + ". hello" );
		}
		
		결과:
		
10. hello
9. hello
8. hello
7. hello
6. hello
5. hello
4. hello
3. hello
2. hello
1. hello
		
		------------------------------------------------------------------------
		
		
		-> 증감식을 바꿔보자
		
		
		for (int i = 1; i <= 10; i+=2) {   // i = i + 2 증감식에 따라 반복회수 변경 가능.
			System.out.println( i + ". hello");
		}
		
		결과:
		
1. hello
3. hello
5. hello
7. hello
9. hello



  // 초깃값을 두 개 선언해서 활용할 수도 있음
		
		for(int i = 1, j = 10; i <= 10; i++, j--) {
			System.out.println("i: " + i + ". " + "j: " + j);
	}
	
	
	
	
	// for문 중첩반복문
		
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 3; j++) {
				System.out.println(i + "hello");
			}
		}
		
		
		
		
		// 반복문을 사용한 연산
		// 1 ~ 10 까지 정수를 모두 더해라
		// 규칙성이 있는 연산은 반복문을 사용할 수 있다. 
		
		int sum = 0;   // 값을 담는 곳, 기억하는 공간이라고 생각하면 됨
		
		for(int i = 1; i <= 10; i++) {
			sum = sum + i; 
		}
		
		System.out.println(sum);
		
		
		

-> 5! 를 계산하는 for문을 만들어라! (완.)
		
		int fac = 1;   // 0은 뭘 곱해도 0이므로 1부터 시작
		
		for (int i = 1; i <= 5; i++) {
			fac *= i;  //fac = fac * i;
		}
		
		System.out.println(fac);

 

  • while문

형태 :

초기값

while(조건식) {

실행문

증감식

}

int i = 1;
	while (i <= 10) {
		System.out.println(i + ". hello");
		i++;
	}
	
	
	
	 중첩 while문 

		int i = 1;
		while (i <= 5) { // 5
			int j = 1;  // 위치 중요, while문 밖에 있으면 j가 돌아가지 않음.
			while (j <= 3) { // 3
				System.out.println("hello");
				j++;
			}

			i++;
		}
		
		
		
		--------------------------------------------------------------------
		
		// do - while문  -> 조건을 비교하기 전에 무조건 한 번 돌아감.
		
		형태 :
		
		do {
			실행문
		}while (조건식);
		
		
		예) 
		
		int i = 1;
		
		do {
			System.out.println("hello");
			i++;
		} while (i <= 10);

 

 

이해했다고 착각하지 말 것.

수업 끝난 후 시간을 활용할 것.

하다보면 쌓여서 잘 되는 것.

 

// 별찍기
	
	for (int i = 1; i <= 5; i++) {   // 세로
		for (int j = 1; j <= 10; j++) {    // 가로
			System.out.print("*");
		}
		System.out.println();
	}
	
	
	
	결과 :
	
**********
**********
**********
**********
**********


// while 문으로 바꾸기

		int i = 1;

		while (i <= 5) {
			int j = 1;
			while (j <= 10) {
				System.out.print("*");
				j++;
			}
			System.out.println();
			i++;
		}
		
		
		
		결과 :
		
**********
**********
**********
**********
**********


// 별찍기 예)


for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5; j++) {
				if (i > j) {
					System.out.print(" ");
				} else {
					System.out.print("*");
				}
			}
			
			System.out.println();
		}
		
	
	결과 :
	
*****
 ****
  ***
   **
    *
    
    
    
    
    
    
    
    마름모 윗부분 문제풀이) (완.)
    
    
    for (int i = 1; i <= 5; i++) {
			for (int j = 0; j < (5 - i); j++) {
				System.out.print(" ");
			}
			for (int k = 1; k < (i * 2); k++) {
				System.out.print("*");
			}
			System.out.println();

		}
		
		
		결과 :
		
    *
   ***
  *****
 *******
*********
		
		
		
		// 강사님 풀이
		
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5 + i - 1; j++) {
				if (i + j < 6) {
					System.out.print(" ");
				} else {
					System.out.print("*");
				}
			}
			System.out.println();
		}

어쩔 땐 풀고 어떨 땐 못 푸는 걸 보니 이해를 못한듯..;;

→ 맥북으로 수업을 들으니 앞으로 설치할 프로그램들을 미리 알려주시길 부탁했는데 그냥 학원 컴퓨터로 하라고;;

맥북으로는 수업을 못듣는걸까..

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0404  (0) 2024.05.29
UIUX _국비과정 0403  (0) 2024.05.29
UIUX _국비과정 0401  (0) 2024.05.28
UIUX _국비과정 0329 첫 날!  (0) 2024.05.28

작성 : 2024. 4. 1. 

 

전 시간 내용 복습 :

+ 공부양이 많으니 스스로 정리 매일매일

+ 기사 자격증을 따면 좋겠지만 자격요건이 안되기 때문에 정보처리산업기사 자격증이라도 따기

변수는 기본적으로 자료형의 값을 가지게 된다.

변수는 모양에 맞게 만들어져야 한다.→ 타입! (기본형)

( byte, short, char, int, long ) → 정수

-128~+127 < < < <

차이점은 크기! 값의 범위가 있음.

정수의 기본타입 int형, 내부에서는 int형이 기본!

byte를 써도 내부에서 int형을 쓰기 때문에 처리 속도가 떨어짐.

int은 ‘-21억 4천~ +21억 4천’ 의 범위를 가짐

long은 19자리 숫자 ..


  • 변수명 규칙

  1. 숫자를 첫번 째 값으로 사용 불가 : int 2age; (x), int age2;
  2. 예약어 사용 불가 : int int; (x)
  3. 가능한 특수문자 : '_', '$' -> int a_b; (o) , int age@; (x)

 

작명해야 하는 경우 : 클래스명, 변수명, 메소드명 -> 낙타표기법
ex) 클래스명 : HelloWorld (파스칼 표기법)
ex) 변수명 : 소문자로 시작, helloWorld (카멜 케이스)
ex) 메소드명 : 소문자로 시작, helloWorld() -> 뒤에 ()가 붙음. (카멜 케이스)

 

파스칼 표기법 : 모든 문자의 첫 글자를 대문자로 작성

카멜케이스 표기법 : 두번째 문자부터 대문자로 작성

스네이크 표기법 : 문자 사이에 언더바 삽입 (background_color)

위 세개 중 하나로 통일해서 써야 함.

  • 형변환 (boolean 제외) 자동형변환, 강제형변환

크기 :

-----------------> 자동형변환
		                값을 표현하는 범위가 folat가 더 큼 (소수점 가능)
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
		  char(2)  <
	      (바이트)
		                              <----------------- 강제형변환

 

    byte b = 10;
	int i;

	i = b;   // byte -> int (자동형변환)

	int i2 = 10;
	byte b2 = (byte)i2;   // int -> byte (강제형변환)

 

 

  • 연산자
산술연산자 : + , - , *, / (몫) , % (나머지)

	int x = 5;
	int y = 2;

	System.out.println(x + y);         
	System.out.println(x * y);
	System.out.println("몫 : " + (x / y));
	System.out.println("나머지 : " + (x % y));
	System.out.println(x / (float)y); // 5 / 2 -> 5.0f / 2.0f 더 큰 단위로 형변환


증감연산자 (변수에만 적용 가능) : ++ , --
	
	 전치, 후치
	 변수의 값을 1 증가, 1 감소
	 
	 int x = 10;
		int result;
		
    // result = ++x + 10;  // x = 11 result = 21
		
		result = x++ + 10;  // x = 11 result = 20   -> 후치의 경우, 나중에 x가 증가 됨.
		// 전치, 후치로 연산에서의 우선순위에 참여 순위가 정해짐		
		
	  System.out.println(x);
	  System.out.println(result);


비교연산자 : == , != , < (초과), > (미만), <= (이하), >= (이상)
  
    결과 : true , false

	int x = 10;
	int y = 20;

	System.out.println(x == y);  //false
	System.out.println(x != y);  //true
	
	
논리연산자 : && , ||, ! 
	
		 true, false
		 조건1 && 조건2
		 결과 : true, false
		
		true && true  -> true
		true && false  -> false
		false && true  -> false
		false && false  -> false
		
		// && 조건1과 조건2가 만족해야만 true가 나옴
		
		true || true  -> true
		true || false  -> true
		false || true  -> true
		false || false  -> false
		
		// || 연산자는 조건1 이나 조건2 둘 중 하나만 충족해도 true
		
		!true = false
		!false = true
		
		// ! 는 부정
		
		int x = 10;
		int y = 20;
		
		System.out.println((x == 10) && (y == 20)); //true
		System.out.println((x == 10) && (y != 20)); //false
		
		System.out.println((x == 10) || (y == 20)); //true
		System.out.println((x != 10) || (y == 20)); //true 
		System.out.println((x != 10) || (y != 20)); //false
		
			
논리연산자의 범위 연산
		
		int x = 5;
		
		System.out.println(x > 1 && x < 10);  //true
		System.out.println(x < 1 || x > 10);  //false
		
			
최단평가
		
		true && true 
		false && 판단하지 않는다   -> 어차피 false
		
		true || 판단하지 않는다    -> 어차피 true
	 
	 
비트 연산자 (연산을 1과 0으로만 한다)
	 
		 &, | , ^ , ~ 
		 0,1
		 0 & 0 
		 >> , << 
		
		 (조건식) : 우선순위
	   (자료형) : 캐스팅(형변환)
		
		
조건연산자(삼항연산자)
		 
		 (조건식(true/false)) ? 값1 : 값2   -> true 면 값1이 결과 , false 면 값2가 결과
		
		int age = 10;
		String result = age >= 20 ? "성인" : "미성년자";
		System.out.println(result);
		
		
단항연산자 : ++ , --
이항연산자 : + , *
삼항연산자 : 조건식 ? 값1 : 값2 
			
		
대입연산자 : = 
	   
		 +=, -=, *=, /=, |= , >>= , ...
		
		int x = 10;
		int y;
		
		//y += x;  // y = y + x
		
		x += 10;   // x = x + 10
		System.out.println(x);

 

  • 메모리 구조에 대해 알아보기

컴퓨터의 메모리 구조는 매우 복잡한 구성 요소로 이루어져 있습니다. 이는 주로 다음과 같은 메모리 구성 요소를 포함합니다:

  1. 레지스터(Register): 이는 CPU 내부에 존재하며, 계산과 명령어 실행을 담당하는 가장 빠른 메모리입니다.
  2. 캐시 메모리(Cache Memory): CPU와 RAM 사이에 위치하며, 자주 사용되는 데이터를 빠르게 접근하기 위해 사용됩니다.
  3. 주 메모리(Main Memory 또는 RAM): 이는 컴퓨터의 주요 메모리로, 운영 체제, 응용 프로그램, 데이터 등이 로드되는 곳입니다.
  4. 보조 메모리(Secondary Memory): 하드 디스크나 SSD와 같은 저장 장치로, 컴퓨터가 전원을 끄더라도 정보를 저장할 수 있는 영구적인 메모리입니다.

컴퓨터는 이러한 메모리 계층 구조를 통해 데이터를 효율적이고 빠르게 처리할 수 있습니다.

-노션 AI 기능을 사용해 정리

 

 

값을 입력받고 조건에 만족하는지 알아보기

조건문 - 실행문을 실행하기 위한 조건

if, switch

if (조건식) { 
실행문
}

위와 같은 형태로 사용함.

-> 20살 이상이면 성인이라는 메세지를 띄워보자.

int age = 10;
		
		if (age >= 20) {
			System.out.println("성인 인증");
		} 
		
		if (age >= 20) {
			System.out.println("성인 인증");  //true
		} else {
			System.out.println("미성년자 입니다. ");  //false
		}
		
		
다중 if문

	if (조건식) {
			실행1
		} else if(조건식) {
			실행2
		} else if(조건식) {
			실행3
		} else {
			부합하는 조건이 없는 경우 머지막에 무조건 실행 
		}
		
		
		-> 스캐너로 키보드로 입력된 값을 받아 번호를 선택해보자.
		
		Scanner sc = new Scanner(System.in);  // 문자로 받아들임, 키보드로부터 받아들임.
		//sc.nextInt();                         // nextInt -> 숫자로 바꿔줌.
		System.out.print("정수 한 개를 입력하세요 : ");
    //int select = sc.nextInt();    		String str = sc.nextLine();  // -> 문자열을 숫자로 바꿔줘야 함.
		int select = Integer.parseInt(str);  // -> 문자열을 숫자로 바꿔줌.
		
		if(select == 1) {
			System.out.println("1번 선택");
		} else if(select == 2){
			System.out.println("2번 선택");
		} else if (select == 3){
			System.out.println("3번 선택");
		} else if (select == 4){
			System.out.println("4번 선택");
		} else {
			System.out.println("번호를 잘못선택했습니다");
		}
		
		
중첩 if문

if(조건문) {
			if (조건문) {
				실행문
			} else {
		  	}
			}
			
			
			
			-> x의 값이 공배수인지 알아보자
			
int x = 6;
		
		if (x % 2 == 0) {
			if (x % 3 == 0) {
				System.out.println("2와 3의 공배수 입니다.");
			} else {
				System.out.println("2와 3의 공배수가 아닙니다.");
			}
		} else {
			System.out.println("2와 3의 공배수가 아닙니다.");
		}
		
		
		-> 아래와 같이 나타낼 수도 있다.
	
		if (x % 2 == 0 && x % 3 == 0) {
			System.out.println("2와 3의 공배수 입니다.");
		} else {
			System.out.println("2와 3의 공배수가 아닙니다.");
		}
		
		
		-> Scanner 를 이용해 숫자를 입력받아 조건에 만족하는지 알아보기
		
		Scanner sc = new Scanner(System.in);
		System.out.print("양의 정수 하나를 입력하세요 (1 ~ 10) : ");
		int num = sc.nextInt();  //스캐너에서 입력된 문자를 숫자로 바꿔줌
		
		if (num >= 1 && num <= 10) {
			System.out.println("1 ~ 10 사이의 값입니다. ");
		} else {
			System.out.println("범위를 벗어난 값입니다. ");
		}

 

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0404  (0) 2024.05.29
UIUX _국비과정 0403  (0) 2024.05.29
UIUX _국비과정 0402  (0) 2024.05.29
UIUX _국비과정 0329 첫 날!  (0) 2024.05.28

작성 : 2024. 3. 29. 

 

앞으로 배울 것들

  • 자바 언어를 배웁니다. 자바와 c언어 연결하는 법 시도해보세요. 안드로이드 기반의 속도가 중요한 게임, 아이오티,블록체인 등 쓰이는 곳이 많아요.
  • 자바의 웹 관련 분야를 배웁니다. 파이썬은 ai에 특화,,
  • 자바의 단점은 무겁다는 것.
  • html, css, javascript(jquery,react,view,next.js)에 대해 배웁니다. javascript는 많이 알수록 좋아요. -> 프론트엔드
  • UI/UX 디자인(figma) 화면디자인을 해볼겁니다. pc,태블릿,컴퓨터화면 세가지로 꼭 해보기.
  • 반응형 웹을 만들어 볼 예정.
  • db 데이터베이스에 대해 배웁니다. (오라클, mysql, mogdb)
  • jsp(웹프로그래밍) 서버프로그램이라고도 합니다. 실제 웹프로그래밍을 합니다.
  • spring(프레임위크) 만들어진 틀을 가지고 더 나은 것을 만들어보기
  • 대망의 프로젝트

강사님의 말씀 : 다 해야하니까 해야합니다.

기분의 파형을 마인드컨트롤을 통해 조절하세요.

수업만 들어서 안되면 유튜브 보세요.

슬랙이나 노션을 사용해서 수업 내용을 꾸준히 메모하세요.

강사님의 팁 :

  • 자료구조, 알고리즘 공부해보기
  • 자료구조는 실제 프로그램을 짤 때 메모리 관리를 위해 꼭 알아야함.
  • 오늘 수업 끝나고 개인적으로 공부에 대한 스케줄을 짜보기.

노션의 용도 : 소스코드를 올리거나 개념 정리 등을 올려 확인해보기. 수업이 끝나고 복습하며 확인.

유튜브 강의 추천 : 생활코딩

공부 방법 : 강압적으로 두 개씩 들어보기

추가적으로 공부하면 좋은 것들 :

웹 view : 보여지는 화면

아래 모든 것들을 웹이라고 함.

AI (Artificial Intelligence) : 빅데이터를 만들어서 AI를 학습시키면 웹을 통해 보여줌

블록체인 : 변조가 불가능

IoT : 하이패스같은 것. 신호등 등

사물인터넷(Internet of Things, IoT)의 이해 IoT 뜻은 네트워크에 연결된 스마트 기기를 연결 구성하여 다른 기기와 데이터를 주고받는 것을 말합니다.


 

이클립스 설치 및 자바에 대하여..

자바의 새로운 버전은 인공지능 관련 패키지를 많이 지원. 하지만 무거워서 잘 쓰지 않음.

버전 상관 없이 구현이 되게 잘 만드는 것이 중요함.

자바 프로그래밍을 하기 위해 자바와 이클립스 설치 완.

프로그램을 만들 때 고려

  1. 구조
  2. 경량화
  3. 재사용

자바 → 객체지향언어

객체 : 모든 사물 (유형, 무형)

 

class Student {

메인함수 public ststic void main(String[] arg) {

하고 싶은 일

}

}

위와 같은 형태를 이용해 객체를 표현

클래스명 작명규칙 : 클래스명의 첫 글자는 무조건 대문자, 한글 쓰지 말기, 저장할 때 클래스명과 대소문자 똑같이 하기.

 

Student.java → 컴파일 → 바이트(Student.class) (기계가 이해하는 언어) → 로딩 → 실행엔진(JVM)

                            javac                    바이트로 바꿔주는 것 javac.exe

= "바이트로 바꿔주는 것"은 컴파일 과정입니다. 이 과정에서 코드는 컴파일러를 통해 바이트 코드로 변환되며, 이 경우 자바 컴파일러인 'javac.exe'가 이 작업을 담당합니다.

+ 컴퓨터 구조에 대해 공부해야 함.

컴퓨터 구조는 기본적으로 입력장치, 처리장치, 출력장치, 그리고 저장장치로 구성되어 있습니다.

  • 입력장치(Input Device): 키보드, 마우스 등 사용자로부터 데이터를 입력받는 장치입니다.
  • 처리장치(CPU, Central Processing Unit): 입력받은 데이터를 처리하는 장치입니다. CPU는 명령어를 해석하고 연산을 수행하는 등의 역할을 합니다.
  • 출력장치(Output Device): 처리된 결과를 사용자에게 보여주는 장치입니다. 예를 들어, 모니터, 프린터 등이 있습니다.
  • 저장장치(Storage): 데이터를 저장하는 장치입니다. 하드 디스크, SSD, 메모리 등이 있습니다.

이 외에도 컴퓨터는 여러 하드웨어와 소프트웨어로 복잡하게 연결되어 있습니다. 이 모든 것들이 결합하여 컴퓨터가 우리가 원하는 작업을 수행할 수 있게 합니다.

자바는 실행문 끝에 항상 세미콜론을 붙입니다. → ;

+ 실행되지 않았을 때 어떤 이슈가 있었고, 어떻게 해결을 했다. 이걸 꼭 기록해야 함.

+ 배운 문법을 활용하는 것이 관건!

주석을 처리하는 방법

  • // 한줄 주석
  • /* 여러 줄 주석 */

데이터 타입

  • 변수 : 데이터를 저장하는 공간
  • 숫자, 문자, 바이트 등의 데이터를 사용
  • 숫자 : 정수, 실수
  • 문자 : 한 문자(문자), 여러 문자(문자열)
  • 논리형 : 참(true) , 거짓(false)
  • 객체형(참조형) : 주소값

  • 자료형 - 기본형(8개) : boolean -> 논리형 , (byte, short, char, int, long) -> 정수 , (float, doble) -> 실수 - 참조형 자료형(데이터 타입) 변수명

자료형(데이터 타입) 변수명

/* 변수 * 데이터 값을 쓸 때 컴퓨터는 값을 어딘가에 저장해야 함. 메모리에 기억을 시켜놓고 cpu에게 보내 연산 * cpu에게 보내기 위해 변수를 사용 * 메모리에 값이 어디에 저장되어 있는지 주소를 통해 알아냄. * 변수를 알면 주소를 몰라도 메모리 값을 사용할 수 있음. */


개인적으로 추가 정리할 부분 :

데이터 타입을 '프로그래밍 작문 규칙'이라고 알려주셨는데 검색해보니 작문 규칙이라고 부르기엔 좀 헷갈린다.

데이터 타입의 정수형, 자료형 등의 분류와 자바의 작문 규칙을 이참에 찾아서 다시 정리해볼 예정이다.

 


일단 첫 날 배운 건 여기까지 였다. 추가적인 공부가 정말 많이.. 필요할 것 같다.

국비지원 카테고리에는 정말 수업에서 배운 내용까지만 올리고 java 기초정리 카테고리에 추가적인 공부 내용을 올릴 예정이다.

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0404  (0) 2024.05.29
UIUX _국비과정 0403  (0) 2024.05.29
UIUX _국비과정 0402  (0) 2024.05.29
UIUX _국비과정 0401  (0) 2024.05.28

+ Recent posts