[Java] 얕은 복사와 깊은 복사
·
Java
프로그래밍에서 자료구조는 매우 중요하다. 그중 배열은 자료구조의 기초이자 핵심이라고 볼 수 있다. 배열에 대해 더 상세하고 깊게 배우기 위해 얕은 복사와 깊은 복사에 대해 정리해 보겠다.   우선 코드를 보자.  import java.util.Arrays;public class arrayCopy { public static void main(String[] args) { String[] food = {"치킨", "피자"}; String[] shallowCopy = food; System.out.println("원본 배열: " + Arrays.toString(food)); System.out.println("복사 배열: " + Arrays.toStri..
[Java] 변수(지역, 인스턴스, 클래스)
·
Java/OOP
선언위치에 따른 변수의 종류    인스턴스 변수   각 인스턴스의 개별적인 저장공간 인스턴스마다 다른 값 저장이 가능하다.  인스턴스 생성 후 '참조변수. 인스턴스변수명'으로 접근  인스턴스를 생설할 때 생성되고, 참조 변수가 없을 때 가비지컬렉터에 의해 자동제거됨.  클래스 변수   같은 클래스에서 공유하는 변수이다. 즉, 같은 클래스의 모든 인스턴스들이 공유하는 변수.  인스턴스 생성없이 '클래스이름. 클래스변수명'으로 접근할 수 있다.  클래스가 로딩될 때 생성되고 프로그램 종료될 때 소멸한다. 지역 변수  메서드 내에 선언되며, 메서드의 종료와 함께 소멸한다. 메서드뿐만 아니라 반복문내의 변수들도 지역변수이다.  조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸한다.    인..
[Java] Method Signature
·
Java
메서드 시그니처는 자바에서 오버로딩된 메서드들을 구분하기 위해 사용되는 것이다. 메서드는 크게 메서드이름, 파라미터(매개변수), 파라미터(매개변수)의 타입으로 구분할 수 있다.  메서드 시그니처의 구성 요소이다.메서드 이름메서드 파라미터리스트메서드 파라미터리스트는 파라미터들의 타입, 개수, 순서에 대한 정보이다.  static int add(int a, int b){ return a+b;}static int add(int a, int b, int c){ return a+b+c;}  같은 이름의 add메서드이지만 메서드 시그니처가 다른 메서드이다.그로 인해 오버로딩이 가능해진 것이다. 만약 오버로딩이 없었다면 메서드의 이름을 조금만 다르게 해 구현했을 것이다.     오버로딩은 반환 타입은 인..
절차 지향 프로그래밍VS객체 지향 프로그래밍
·
Java/OOP
절차 지향 프로그래밍과 객체 지향 프로그래밍에 대해 정리해보겠다.  Java는 대표적인 객체 지향 프로그래밍 언어중 하나이다. Java가 탄생하기 이전 다른 컴퓨터 언어들은 객체 지향이 아닌 절차 지향 언어가 많았다. 절차지향 프로그래밍은 순차적인 처리 프로그램이다.절치지향 대표 언어는 C언어이다. 절차지향 프로그래밍은 컴퓨터의 처리구조와 유사해 처리속도가 빠르다. C언어같은 저급언어(컴퓨터 친화적 언어)가 속도가 빠른 이유중 하나가 절차 지향이기도 하다.   절차지향(Procedural Programming) 프로그래밍 패러다임의 일종으로서 명령형 프로그래밍과 동의어로 쓴다. 특징프로그램 구조: 프로그램을 단계적으로 해결해야 할 절차나 함수로 나눔데이터와 함수의 분리: 데이터를 저장하는 구조와 이를 조..
[Java] Stack Trace
·
Java
Java에서 스택 트레이스(Stack Trace)는 프로그램 실행 중 예외(Exception)가 발생했을 때, 해당 예외가 발생한 위치와 호출된 메서드의 순서를 보여주는 디버깅 정보이다. 스택 트레이스는 예외가 발생한 이유를 파악하고 해결하는 데 도움이 되는 도구이다.   public class StackTracePractice { public static void main(String[] args) { Generation g = new Generation(); try { g.checkStringLength(); } catch (NullPointerException npe) { npe.printStackTrace(); ..
[Java] Argument로 참조값을 보내면?
·
Java/OOP
**대원칙: 자바는 항상 변수의 값을 복사해서 대입한다.  (김영한 강의 중) 저 대원칙을 꼭 기억하고 계속 생각하자.    public class MethodChange { public static void main(String[] args) { DataA dataA = new DataA(); dataA.value = 10; System.out.println("메서드 호출 전 dataA의 값 = "+dataA.value); changeValueMethod(dataA); System.out.println("메서드 호출 후 dataA의 값 = "+dataA.value); } static void changeValueMethod(..
[Java] 기본형vs참조형
·
Java/OOP
기본형 vs참조형  자바는 데이터 타입을 크게 기본형과 참조형으로 분류할 수 있다.  기본형(Primitive Type): int, long, double, boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라고 한다.참조형(Reference Type): Car c, Account user, Student[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라고 한다. 참조형은 객체 또는 배열에서 사용된다.  다시 말해, 기본형은 변수에 사용할 값(숫자, true, false 등)을 직접 넣을 수 있는 타입을 기본형이라 하고 데이터에 접근하기 위한 주소를 가지고 있는 타입을 참조형이라 한다. 참조형 변수는 데이터 값에 바로 접근하는 ..