~2023.02/Java

    [자바의 정석] 지네릭스(Generics)

    1. 지네릭스란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다. 2. 지네릭 클래스의 선언 지네릭 타입은 클래스와 메서드에 선언할 수 있다. // Box 클래스 정의 class Box { Object item; void setItem(Object item) {this.item = item;} Object getItem() {return item;} } // Box 클래스를 지네릭 클래스로 변경..

    객체지향 프로그래밍 정리

    1. 클래스 package JumpTo; class Animal { String name; // 객체 변수 = 인스턴스 변수 = 멤버 변수 = 속성 (클래스에 선언된 변수) public void setName(String name) { // setName 메소드 내부에 사용된 this는 // Animal 클래스에 의해 생성된 객체를 지칭한다. // 만약 Animal cat = new Animal()과 같이 cat이라는 객체를 만들고 // cat.setName("body")와 같이 cat 객체에 의해 setName 메소드를 호출하면 // setName 메소드 내부에 선언된 this는 바로 cat 객체를 지칭한다. // 따라서 this.name = "body"는 // cat.name = "body"로 해석된..

    자바 기초 _ [토픽2] 자바 객체 지향 프로그래밍 _ 객체 설계하기

    - 접근 제어자 정리 - 접근 제어자 연습 - 메소드 오버로딩 정리 - 계좌 이체 - 생성자 정리 - 생성자 연습 - this 정리 - 특가 할인 매장 접근 제어자 정리 우리가 쓰고 있는 Person 클래스의 매우 간소화된 버전이다: Person.java public class Person { int age; } Driver.java public class Driver { public static void main(String[] args) { Person p1 = new Person(); p1.age = 28; System.out.println(p1.age); } } 그런데 사실 이건 굉장히 위험한 코드이다. p1.age = 28; 을 p1.age = -10; 으로 바꾸어도 아무 문제 없이 실행된다. ..

    자바 기초 _ [토픽2] 자바 객체 지향 프로그래밍 _ 객체 만들기

    자바 기초 _ [토픽2] 자바 객체 지향 프로그래밍 _ 객체 만들기

    객체 지향이란? 더보기 객체지향프로그래밍(Object Oriented Programming) 김모씨가 은행 계좌에 입금을 하고 출금을 한다. 그리고 또 최모씨의 계좌에 2만 원을 이체해 주려고 한다. 이 상황을 프로그램으로 어떻게 표현할 수 있을까? 이런 문제를 쉽게 해결할 수 있는 프로그래밍 방법이 바로 객체 지향 프로그래밍이다. 이 경우에는 Person이라는 객체와 BankAccount라는 객체를 만들 수 있다. 객체는 속성들과 동작들의 묶음이라고 할 수 있는데, 속성은 변수로 표현되고 동작은 함수로 표현된다. Person과 BankAccount에는 어떤 속성들과 어떤 동작들이 있을 수 있을까? Person 객체에는 이름, 나이, 보유 현금, 소유 계좌 등의 속성이 있을 것이다. BankAccount..

    자바 기초 _ [토픽1] 자바 왕기초 _ 배열

    자바 기초 _ [토픽1] 자바 왕기초 _ 배열

    배열 정리 배열을 쓰면 변수 하나에 값을 여러 개 담을 수 있다. 자바의 배열을 만들고 사용하는 방법을 간단하게 살펴보자. 배열 생성 더보기 배열을 만드는 방법은 몇 가지가 있다. (1) 선언과 동시에 빈 배열 생성 int[] intArray = new int[5]; // 크기 5의 빈 배열 (2) 선언 후, 배열 생성 int[] intArray; intArray = new int[5]; // 크기 5의 빈 배열 위 두 개는 사실 거의 똑같다고 볼 수 있다. (3) 리터럴로 생성 int[] intArray = {1, 2, 3, 4, 5}; 이렇게 하면 5개의 원소가 있으니까 intArray는 자동으로 크기 5의 배열이 된다. 그런데 이 방식은 변수를 정의할 때만 할 수 있다. 밑에 코드처럼 두 줄에 나누..

    자바 기초 _ [토픽1] 자바 왕기초 _ 조건문과 반복문

    if, else if, else 정리 더보기 기본 문법(Syntax) if (조건부분 1) { // 수행 부분 1 } else if (조건 부분 2) { // 수행 부분 2 } else if (조건 부분 3) { // 수행 부분 3 } else { // 수행 부분 4 } 조건문의 기본 구조이다. 조건 부분 1이 true이면 수행 부분 1이 실행되고 수행 부분 2~수행 부분 4는 실행되지 않는다. 조건 부분 1이 false이면 수행 부분 1은 건너뛰고 조건 부분 2를 확인한다. 조건 부분 2가 true이면 수행 부분 2가 수행되고 조건문이 끝나게 된다. 조건 부분 1~조건 부분 3 모두 false이면 수행 부분 4가 실행된다. 예제를 몇 개 살펴보자. 예제 1 int number = 13; if (numb..

    자바 기초 _ [토픽1] 자바 왕기초 _ 변수와 연산

    변수 정리 더보기 변수 선언 변수 선언은 이렇게 type variableName; 앞에 자료형을 써주고 뒤에 변수 이름을 써주면 된다. 정수형을 담을 변수 a, 문자열을 담을 변수 s를 선언하기 위해서는 이렇게 써주면 된다. int a; String s; 변수 이름 규칙 변수의 이름을 지어줄 때 알아야할 규칙이 몇 가지 있다. 대소문자를 구분 합니다. codeit과 codeIt은 서로 다른 변수입니다. 숫자로 시작할 수 없습니다. 밑줄(_)과 달러 표시($)를 사용할 수는 있지만, 사용하지 않는 것이 좋습니다. $는 주로 자동 생성되는 변수명으로 쓰이고, _는 보통 상수 이름에 쓰입니다. class, public과 같은 자바의 예약어는 변수명으로 쓸 수 없습니다. 자바의 변수명은 '카멜 케이스(camel..

    자바 기초 _ [토픽1] 자바 왕기초 _ Hello, Java!

    자바와 객체 지향 자바와 객체 지향 더보기 자바와 객체 지향은 뗄 수 없는 개념이다. 자바는 처음부터 객체 지향 언어로 만들어졌다. 객체 지향 프로그래밍(Object Oriented Programming, OOP)은 프로그램을 작성하는 기법인데, 부품에 해당하는 객체를 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 말한다. 객체 지향이 잘 적용된 언어는 코드의 구조가 명확하기 때문에 코드를 이해하기 쉽고 관리와 유지 보수가 효율적이다. 언어와 함께 보기 더보기 객체 지향이 코드에 어떻게 드러날까? 다른 언어와 비교해 보자. 다음은 Hello라는 문구를 출력하기 위한 코드이다. Java버전 public class HelloWorld { public static void m..