본문 바로가기

분류 전체보기112

[JAVA] 객체와 클래스 - static 키워드 static 키워드는 클래스, 변수, 메소드의 지정자로 사용할 수 있습니다. 지금까지 main 함수를 만들 때 항상 보았던 static 키워드입니다. 자바 프로그램은 일반적으로 다음과 같은 과정을 거쳐서 결과값이 출력됩니다. 클래스가 로딩될 때 static 키워드를 사용한 static 변수와 메소드가 메모리에 자동으로 로딩됩니다. 이렇게 미리 만들어진 여러 static 메소드들 중에서 시작점 기능을 하는 main 메소드가 실행된 후, 필요에 따라 객체를 생성하여 인스턴스 변수와 메소드를 메모리에 로딩하고, 메소드를 호출하면 메소드 안에서 선언된 로컬변수가 생성됩니다. static 변수와 메소드는 프로그램이 실행될 때 단 한 번 생성되고 프로그램이 종료될 때 삭제됩니다. 프로그램이 실행될 때 자동으로 로딩.. 2022. 5. 25.
[JAVA] call by value 와 call by reference 메소드를 호출해서 특정 인자를 전달할 때 자바는 call by value 방식으로 전달됩니다. 즉, 값 복사를 통해서 인자가 전달됩니다. 그런데 이때 기본형 데이터인 경우와 참조형 데이터인 경우 각각 인자로 전달되는 값이 달라집니다. ◆ 기본형 데이터 - call by value 값에 의한 호출 기본형 데이터는 call by value 방식으로 값이 전달됩니다. 즉, 메소드를 호출해서 특정 값을 전달할 때 변수에 저장된 실제 데이터 값을 복사하여 전달합니다. 다음의 예시를 살펴보겠습니다. public class Test { private static void change(int x) {//xxx변수 값을 x(매개변수)가 받음 System.out.println("in change 함수 x= "+ x); x.. 2022. 5. 24.
[JAVA] 객체와 클래스 - 객체를 배열로 관리하기 학생을 모델링하여 만든 학생 클래스로 여러 학생 객체를 생성하고 정보를 저장할 수 있습니다. 그런데 이렇게 생성된 학생 객체를 다음과 같이 각각의 변수에 저장하면 관리하기도 어렵고 데이터를 조회하는 것도 번거로워집니다. Student stu1 = new Student("홍길동1", 10, "서울1"); Student stu2 = new Student("홍길동2", 10, "서울2"); ... 그래서 필요한 것이 배열입니다. 객체를 배열로 관리하면 다량의 데이터를 효율적으로 관리할 수 있게 됩니다. 기본형 데이터를 배열로 관리하는 것에 비해 처음 이해가 어려울 수 있지만, 매우 중요한 개념이므로 잘 정리해 놓는 것이 좋습니다. 학생 클래스를 만들고 이를 이용해 학생 객체를 생성한 후 배열로 저장하는 프로그.. 2022. 5. 23.
[JAVA] 객체와 클래스 - 정보 은닉화, 캡슐화(encapsulation) 정보 은닉화, 캡슐화(encapsulation)를 통해 데이터를 보호하고 은닉할 수 있습니다. 예를 들어 학생의 정보를 저장하는데, 나이를 150살 이상으로 입력할 수 없도록 하고자 합니다. ◆ 잘못된 해결 방법 우선 생성자에 나이가 150살 미만일 때만 값이 저장되도록 조건문을 작성하는 방법을 생각해 볼 수 있습니다. public class Student { String name; int age; String address; String ssn; public Student(String name, int age, String address, String ssn) { if(age 2022. 5. 22.
[JAVA] 객체와 클래스 - 메소드(method) 메소드(method)는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것입니다. 클래스의 구성요소 중 하나로서, 클래스의 기능적인 면을 표현할 때 사용합니다. 일반적으로 멤버변수에 저장된 데이터를 수정, 조회, 삭제하거나 중복코드를 처리할 때 사용합니다. 다음과 같은 형식으로 메소드를 정의합니다. [접근제한자] 리턴타입 메소드명([파라미터,...]) { //메소드가 처리하는 실행문 [return 리턴값;] } 메소드를 사용하려면 반드시 해당 메소드가 속한 클래스 객체를 생성한 후 메소드를 호출해야 합니다. 메소드를 호출하면 프로그램 제어가 호출한 곳(caller)에서 호출된 곳(callee, worker)으로 넘어가며, 호출된 곳에서 작업이 끝나면 다시 호출한 곳으로 복귀합니다. 리턴값을 가지고 복귀.. 2022. 5. 22.
[JAVA] 객체와 클래스 - 생성자, 생성자 오버로딩 생성자(Constructor)는 클래스의 구성요소 중 하나로서, 멤버변수를 초기화하는 역할을 합니다. 즉, 변수에 데이터를 처음 저장하는 역할입니다. 생성자 이름은 반드시 클래스명으로 지정해야 합니다. 파라미터(매개변수)를 이용해서 값을 받아 멤버변수에 초기값을 저장할 수 있습니다. [접근제한자] 클래스명([파라미터]) { } ◆ 기본생성자 (Default Constructor) 기본생성자는 매개변수가 없는 생성자로서, 개발자가 따로 작성하지 않은 경우 묵시적으로 자동 생성됩니다. 앞서 객체를 생성할 때 Student() 라는 표현을 사용한 적이 있습니다. 이는 Student 클래스의 기본생성자를 호출한 것입니다. 확인을 위해 Student 클래스의 기본생성자를 명시적으로 작성해 보겠습니다. public.. 2022. 5. 22.
[JAVA] 객체와 클래스 - 인스턴스변수 선언 후 객체 생성하기 ◆ 객체와 클래스 객체(object)란 실생활에서 주체(subject)가 파악할 수 있는 모든 존재하는 것으로서, 모든 객체는 속성과 동작으로 구성됩니다. 특정 객체의 속성과 동작을 적절하게 추출하여 정의하는 것을 '객체 모델링'이라고 하며, 현실 세계에서 추출한 객체를 자바와 같은 프로그래밍 언어에서 적절하게 표현하는 것을 '객체지향 프로그래밍(Object Oriented Programming: OOP)'이라고 합니다. ① 객체 모델링을 통해 얻은 객체를 ② 클래스로 설계한 후 ③ 클래스의 인스턴스를 통해 프로그램을 구현하는 것이 객체지향 개발의 과정이라고 할 수 있습니다. 예를 들어 10명의 학생 정보를 저장하고자 합니다. ① 객체 모델링 : 기본적으로 필요한 정보는 이름, 생년월일, 전화번호 등이 .. 2022. 5. 21.
[JAVA] 자바 배열 (Array) - 2차원 배열 지난 글에 이어 2차원 배열에 대해 알아보겠습니다. 2차원 배열 역시 세 가지 방법으로 생성 가능합니다. 차례대로 보도록 하겠습니다. (1) new 키워드 이용 ① 배열 선언 : 2개의 대괄호를 사용하여 배열을 선언합니다. 데이터형 [][] 배열명; ② 배열 생성 : new 키워드를 사용하고 크기를 지정하여 배열을 생성합니다. 행과 열 크기를 모두 지정하면 정방형의 2차원 배열이 생성되고, 열크기를 지정하지 않으면 비정방형의 2차원 배열이 생성됩니다. 이후 열 크기를 동적으로 지정할 수 있습니다. 배열 선언과 생성은 한 줄 또는 두 줄 작성 모두 가능 합니다. 생성된 배열의 각 방에는 초기값으로 기본값이 저장됩니다. 배열명 = new 데이터형[행크기][열크기]; ③ 배열 초기화 : 실제 원하는 값을 저장.. 2022. 5. 21.
[JAVA] 자바 배열 (Array) 지금까지는 데이터를 관리하기 위해 변수만 사용했습니다. 그런데 데이터가 많아질 경우에는 데이터 개수만큼 변수가 필요해지기 때문에 관리가 어려워집니다. 이때 필요한 것이 배열입니다. 배열을 사용하면 하나의 변수(배열명)로 많은 데이터 관리가 가능해집니다. 배열의 기본적인 특징은 다음과 같습니다. 기본 데이터 형과 참조 데이터 형 모두 배열로 저장 가능하지만, 하나의 배열에는 같은 데이터 형만 가능합니다. 배열의 각 방에 접근할 때는 인덱스(첨자)를 사용하며, 인덱스는 0부터 시작합니다. 배열의 크기는 length를 사용하여 구합니다. 배열이 생성되면 각 데이터 형에 맞는 기본값으로 초기화됩니다. 배열은 참조형 데이터이기 때문에 배열명에 저장된 데이터는 실제 데이터가 아닌, 실제 데이터가 저장된 주소입니다... 2022. 5. 19.
[JAVA] 자바 문장 - break 문, continue 문 break 문, continue 문을 사용하면 프로그램의 흐름을 다양하게 제어할 수 있습니다. break 문 프로그램의 일부를 수행하지 않고 코드블록을 빠져나옵니다. switch문, for문, while문, do-while문등과 함께 사용하며, 실행중인 반복문을 중지할 수 있습니다. while문을 예시로 들어보겠습니다. while(조건식) { 문장1; if(조건식) break; 문장2; } 문장3; while문에 따라 반복문을 수행하다가 if문 조건을 만족하여 break문을 만나면 문장2를 수행하지 않고 while문을 빠져나오게 됩니다. 다음은 Hello World 문자열을 10번 출력하는 while문에서, 중간에 n이 8이 되면 break문을 만나 반복을 중단하도록 만드는 프로그램입니다. int n =.. 2022. 5. 19.