국비

    [Java] day10. 클래스와 객체 / 캡슐화 / 생성자

    다들 객체까지는 예습하라고 했는데, 안했기 때문에 두렵다.. 객체지향언어 OOP 제발 이해할 수 있길. 클래스 클래스는 서로 다른 자료형의 데이터들 을 사용자 개발자 ) 정의로 하나로 묶어 새로운 타입을 정의 배열과 달리 다른 자료형들의 값을 하나로 묶을 수 있음 다른 곳에서 클래스의 필드에 접근하기 위해 '.' (참조연산자)를 활용. 클래스 내부에는 메소드를 작성하지 않고 바로 변수를 선언할 수 도 있다. 이것을 전역변수( 필드 == 인스턴스 변수 == 속성)라고 부른다. 필드에 접근하기 위해서는 레퍼런스명.필드명 으로 접근한다. ' . '은 참조연산자 라고 하는데, 레퍼런스 변수가 참조하고 있는 주소로 접근한다는 의미를 가진다. 각 공간을 필드명으로 접근한다. (배열은 인덱스로 접근, 객체는 필드명으..

    [Java] day9. 배열을 복사하는 방법 얕은복사/깊은 복사

    배열의 복사 배열의 복사에는 크게 두가지 종류가 있다. 1. 얕은 복사 (shallow copy) : 스택의 주소값만 복사 얕은 복사는 스택에 저장되어 있는 배열의 주소값만 복사한다는 것이다. 따라서 두개의 래퍼런스 변수는 동일한 배열의 주소값을 가지고 있다. 하나의 래퍼런스 변수에 저장된 주소값을 가지고 배열의 내용을 수정(값 변경)을 하게되면 다른 레퍼런스 변수로 배열을 접근했을 때도 동일한 배열을 가리키고 있기 때문에 변경된 값이 반영되어 있다. /*얕은 복사를 확인할 원본 배열 생성*/ int[] originArr = {1,2,3,4,5}; /*카피할 배열*/ int[] copyArr = originArr; /* hashcode를 출력해보면 두 개의 래퍼런스 변수는 동일한 주소를 가지고 있는 것을..

    Java 문제풀이 4-4. 학생들 분단 나누기. 다차원 배열 문제

    문제 /* 길이 12의 문자열 배열을 생성하여 12명의 학생들을 출석부 순으로 1차원 배열에 할당하고, * 2열 3행 2차원 배열을 2개 할당하여 각 1분단 2분단이라고 칭한다. * 순차적으로 1분단 부터, 왼쪽부터 오른쪽, 1행에서 아래 행으로 번호 순으로 자리를 배치하고 출력하세요*/ * -- 출력 예시 -- * == 1분단 == * 홍길동 이순신 * 유관순 윤봉길 * 장영실 임꺽정 * * == 2분단 == * 장보고 이태백 * 김정희 대조영 * 김유신 이사부 */ 작성한 코드) String[] sarr = {"홍길동","이순신","유관순","윤봉길","장영실" ,"임꺽정","장보고","이태백","김정희","대조영","김유신","이사부"}; String[][] student1 =new String[2..

    Java 문제풀이 4-3. 이차원 배열로 랜덤 영문자 출력하기.

    문제 /* 가로와 세로 길이를 정수형으로 입력 받아 입력받은 가로 세로 길이를 이용하여 * 이차원 배열을 할당하고 각 인덱스에는 랜덤으로 알파벳 대문자 넣어서 출력 * * 단, 가로 행 혹은 세로 열은 반드시 1~10 까지의 정수를 입력해야 하고 그렇지 않은 경우에는 * "반드시 1~10까지의 정수를 입력해야 합니다. 다시 입력하세요." 출력 후 * 가로 행 또는 세로 열을 다시 입력받을 수 있도록 한다. * * -- 입력 예시 -- * 가로 행의 수를 입력하세요 : 5 * 세로 열의 수를 입력하세요 : 4 * * -- 출력 예시 -- * F H Z G * W F O T * O R X V * W H J X * W S S J */ 작성한 코드) while(true) { Scanner sc = new Sca..

    Java 문제풀이 4-2. 주민등록번호 뒷자리 숨기기

    문제 /* 주민등록번호를 스캐너로 입력 받고 문자 배열로 저장한 뒤, * 성별 자리 이후부터 *로 가려서 출력하세요 * * -- 입력 예시 -- * 주민등록번호를 입력하세요 : 990101-1234567 * * -- 출력 예시 -- * 990101-1****** */ 작성한 코드 ) char[] carr = sc.nextLine().toCharArray(); 구문을 사용하여 출력하였음. Scanner sc = new Scanner(System.in); System.out.print("주민등록번호를 입력하세요 : "); char[] carr = sc.nextLine().toCharArray(); String sum =""; for (int i = 0; i ..

    Java 문제풀이 4-1. 문자열을 입력받아 배열에 저장하고 문자 검색하기.

    문제) /* 문자열을 하나 입력받아 문자 자료형 배열로 바꾼 뒤 * 검색할 문자를 하나 입력 받아 * 입력 받은 검색할 문자가 문자열에 몇개 있는지를 출력하세요 * * -- 입력 예시 -- * 문자열을 하나 입력하세요 : helloworld * 검색할 문자를 입력하세요 : l * * -- 출력 예시 -- * 입력하신 문자열 helloworld에서 찾으시는 문자 l은 3개 입니다. * */ (String Class의 toCharArray() : char[] 메소드 활용 가능 char[] carr = 문자열변수.toCharArray(); 와 같이 사용 작성한 코드) Scanner sc = new Scanner(System.in); System.out.print("문자열을 하나 입력하세요 : "); Strin..

    [Java] day8. 배열

    배열 ( Array ) 같은 자료형의 변수들을 하나의 묶음으로 다루는 것 배열은 저장된 값 마다 인덱스 번호가 부여됨. (0부터 시작) 배열은 heap 영영에 new 연산자를 이용하여 할당한다. 배열의 사용 이유 만약 배열을 사용하지 않는다면 변수를 여러 개 사용해야한다. 연속된 메모리 공간으로 관리할 수 없다. (모든 변수의 이름을 사용자가 관리해야 한다.) 반복문을 이용한 연속 처리가 불가능하다. 배열 선언 - 선언은 stack에 배열의 주소를 보관할 수 있는 공간을 만드는 것이다. 자료형[] 배열명; 자료형 배열명[]; 선언한 래퍼런스 변수에 배열을 할당하여 대입할 수 있다. new 연산자는 heap영역에 공간을 할당하고 발생한 주소값을 반환하는 연산자이다. 발생한 주소를 래퍼런스 변수 (참조형변수..

    Java 문제풀이 3-3. 문자열에 문자가 몇개 포함되어 있는지 판별하기

    문제 /* 문자열을 하나 입력 받고, 검색할 문자를 입력 하여 * 입력받은 문자열에서 검색할 문자가 몇 개 포함되어 있는지를 출력하는 프로그램을 만드세요 * * 단, 문자열에 영문자가 아닌 문자가 섞여 있는 경우에는 * 검색할 문자를 입력받지 않고 "영문자가 아닌 문자가 포함되어 있습니다." 출력 후 프로그램을 종료하세요 * * 또한 일치하는 문자의 경우 대소문자를 구분합니다. * * -- 프로그램 예시 -- * * -- 정상 동작의 경우 -- * -- 입력 예시 -- * 문자열 입력 : apple * 문자 입력 : p * * -- 출력 예시 -- * 포함된 갯수 : 1개 * * -------------------- * -- 영문자가 아닌 문자 포함된 경우 -- * -- 입력 예시 -- * 문자열 입력 ..

    Java 문제풀이 3-2. 랜덤숫자 맞추기 게임

    문제 /* 1부터 100 사이의 난수를 발생시키고 * 정수를 입력 받아서 입력받은 {정수가 발생한 난수보다 큰 경우 "입력하신 정수보다 큽니다." 출력, * 입력받은 정수보다 난수가 작은 경우 "입력하신 정수보다 작습니다." 를 출력하며 * 입력한 정수와 난수와 같은 경우까지 난수 맞추기를 반복하는 프로그램을 만드세요. * * 단, 입력한 정수와 난수가 같은 경우 "정답입니다. 4회 만에 정답을 맞추셨습니다." 하고 * 정답을 입력한 횟수도 함께 출력되도록 해야 합니다. * 처음부터 바로 난수를 맞추는 경우는 1회만에 정답을 맞춘 것입니다. * * 정답을 맞추는 경우 위 내용을 출력하고 프로그램이 종료되도록 작성하면 됩니다. * * -- 프로그램 예시 -- * 정수를 입력하세요 : 5 * 입력하신 정수보..