Programming/Java 23

[JAVA] 변수의 초기화

자바의 정석 강의를 기반으로 작성했습니다. - 변수의 초기화 * 지역 변수는 반드시 수동 초기화 해야한다. * 멤버 변수 (IV, CV)는 자동초기화 된다. public class InitTest { int x; int y = x; // 인스턴스 변수 void method1() { int i; int j = i; // error 발생 , 지역 변수는 반드시 초기화를 해줘야 한다. } } - 멤버 변수의 초기화 - 클래스 변수의 초기화 시점은 클래스가 처음 로딩될 때 단 한번 - 인스턴스 변수의 초기화 시점은 객체가 생성될 때마다 초기화 - CV 먼저 이후 IV 초기화 - 자동 -> 간단 -> 복잡 순서로 초기화 1. 명시적 초기화 (=) class Car { int door = 4; // 기본형(prim..

Programming/Java 2021.10.11

[JAVA] 생성자 this(), 참조변수 this

자바의 정석 강의를 기반으로 작성했습니다. - 생성자 this() * 생성자에서 다른 생성자 호출할 때 사용 * 다른 생성자 호출시 첫 줄에서만 사용 가능 * 같은 클래스의 다른 생성자를 호출할 때 사용합니다. - 참조변수 this * 인스턴스 자신을 가리키는 참조 변수 * 인스턴스 주소가 저장되어 있습니다. * 인스턴스 메서드(생성자 포함) 에서 사용가능 * LV 와 IV 를 구별할 때 사용한다. * 모든 인스턴스 메서드에 지역 변수로 숨겨진채로 존재합니다. ( 선언을 하지 않아도 사용이 가능 ) Car(String c, String g, int d) { // 같은 클래스 내에선 this 생략 가능 // color는 iv, c는 lv color = c; gearType = g; door = d; Car..

Programming/Java 2021.10.11

[JAVA] 생성자(constructor), 자바 생성자

남궁성님의 자바의 정석 강의를 기반으로 작성했습니다. - 생성자 (Constructor) * 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드 * 인스턴스 생성시 수행할 작업(IV(인스턴스 변수) 초기화)에 사용 - 생성자 규칙 * 이름이 클래스 이름과 같아야 합니다. * 리턴(return)값이 없습니다. 단, 생성자의 경우는 void를 붙이지 않습니다. 항상 반환값이 없기 때문입니다. * 모든 클래스는 반드시 한 개 이상의 생성자가 있어야 합니다. - 기본 생성자 (default constructor) * 매개 변수가 없는 생성자 * 생성자가 하나도 없을 때만, 컴파일러가 자동 추가 public class Constructor { public static void main(String[] arg..

Programming/Java 2021.10.11

[JAVA] 오버로딩(Overloading)

남궁성님의 자바의 정석을 기반으로 작성했습니다. - 오버로딩 (Overloading) : 과적하다. 한 클래스 안에 같은 이름의 메서드를 여러개 작성한 것. 대표적인 예로 Java의 println() 메서드가 있습니다. 아래의 코드처럼 println()이라는 이름으로 다양한 데이터 형에 따른 println() 로직처리를 할 수 있게 됩니다. void println() void println(boolean x) void println(int x) void println(float x) void println(double x) void println(String x) void println(Object x) void println(char x) void println(char[] x) void println..

Programming/Java 2021.10.11

[JAVA] 자바의 메서드(Method)

남궁성님의 자바의 정석 강의를 기반으로 작성했습니다. - 메서드란 작업단위로 문장을 묶어놓은 것 - 메서드와 함수의 차이 * 메서드는 반드시 클래스 안에 들어가있어야 하지만 함수는 클래스에 독립적입니다. 근본적으로 똑같긴 합니다. - 메서드의 장점 * 코드의 중복을 줄일 수 있습니다. * 코드의 관리가 쉽습니다. * 코드를 재사용할 수 있습니다. * 코드가 간결해서 이해가 쉬워집니다. - 메서드 작성 * 반복적으로 수행되는 여러 문장을 메서드로 작성 * 하나의 메서드는 한 가지 기능만 수행하도록 작성 - 메서드 구성 : 선언부 + 구현부 반환타입 메서드이름 (타입변수명, 타입변수명, ...) // 선언부 { // 메서드 호출시 수행될 코드 // 구현부 } int add (int a, int b) { in..

Programming/Java 2021.10.08

[JAVA] 클래스 변수와 인스턴스 변수

남궁성님의 자바의 정석 강의를 기반으로 작성했습니다. - 선언 위치 * 클래스 영역 : 인스턴스 변수, 클래스 변수 * 메서드 영역 : 지역 변수 - 클래스 변수 : 공통적인 사항 - 인스턴스 변수 : 개별적인 사항 예. 카드에서 공통적인 사항은 카드의 폭, 높이, 두께 등, 개별적인 사항은 카드의 문양, 숫자 등이 있습니다. 이를 코드화하면 아래와 같습니다. Class Card { // 개별 속성 : 인스턴스 변수 String kind; // 카드의 무늬 int number; // 카드의 숫자 // 공통 속성 : 클래스 변수 static int width; // 폭 static int height; // 높이 } * 위 코드를 사용하는 방법 Card c = new Card(); // 객체를 생성 c.k..

Programming/Java 2021.10.08

[JAVA] 자바의 클래스

남궁성님의 자바의 정석을 기반으로 작성했습니다. - 클래스의 정의 * 설계도 * 데이터 + 함수 * 사용자 정의 타입 1. 변수 : 하나의 데이터를 저장할 수 있는 공간 2. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 3. 구조체 : 서로 관련된 여러 데이터 (종류 관계 X)를 하나로 저장할 수 있는 공간 4. 클래스 : 구조체 + 함수, 즉 서로 관련있는 데이터 변수들과 관련있는 함수들의 묶음 // 비객체지향적인 코드 int hour = 12; int minute = 25; int second = 30; // 객체지향적인 코드 class Time { int hour; int minute; int second; } Time t = new Time(); t.hour = 12; t.mi..

Programming/Java 2021.10.08

[JAVA] 자바의 객체지향

남궁성님의 자바의 정석을 기반으로 합니다. * 객체지향 언어의 등장 배경 - 소프트웨어의 빠른 변화에 대응하지 못함 -> 해결책으로 객체지향언어 도입(절차형 -> 객체지향형) * 객체지향 언어의 특징 - 코드의 재사용성이 높다. - 유지보수가 용이하다. - 중복 코드 제거 * 핵심 개념 - 캡슐화, 추상화, 다형성, 정보은닉, 상속 * 클래스와 객체 - 클래스 : 객체를 정의해 놓은 것, 객체를 생성하는데 사용 - 객체 : 실제로 존재하는 것, 사물 또는 개념 - 속성(변수)과 기능(메서드)으로 이루어져있다. 예) 클래스-제품 설계도 , 객체-제품 / 클래스-붕어빵 기계, 객체-붕어빵 // 속성 예제 class Tv{ String color; // 색깔 boolean power; // 전원상태 int c..

Programming/Java 2021.10.08

[JAVA] 자바의 정석

* 자바를 배우는 이유, 자바의 특징 - 객체지향 개념을 이해하기 수월합니다. - 메모리 사용 후 반환해줘야 하는데, 자바의 가비지 콜렉터(GC)가 메모리를 알아서 정리해줍니다. - 멀티 쓰레드 지원 : 하나의 프로그램에서 여러가지 동작을 수행가능하게 해줍니다. 예) 채팅하면서 파일 전송 가능 - 라이브러리가 다양합니다. - 운영체제에 독립적입니다. 즉, 운영체제에 상관없이 프로그램이 실행가능합니다. 그 이유는 자바가상머신(JVM) 덕분입니다. 이 가상머신은 가상 컴퓨터를 의미하며, 일반 애플리케이션이 운영체제 위에서 동작하는 반면에 자바는 운영체제 위에 JVM이라는 가상 환경에서 동작하기 때문에 운영체제에 독립적일 수 있습니다. (Write Once, Run Anywhere) * 자바 API? - 자바..

Programming/Java 2021.10.05