본문 바로가기
반응형

프로그래밍 언어/Java28

[Java] [예제] 객체 배열 객체 배열 객체에 대한 레퍼런스를 원소로 갖는 배열 public class Person { public int age; public Person() {} public static void main(String[] args) { Person[] pArr; pArr = new Person[5]; for(int i=0; i 2021. 3. 7.
[Java] [예제] 값에 의한 복사 vs 참조에 의한 복사 값(Value) 복사 public class Main { public static void main(String[] args) { int val = 10; // 값 복사 int copyVal = val; copyVal = 100; // 복사본 값 변경 System.out.println("원본: " + val); System.out.println("복사본: " + copyVal); } } 참조값(Reference) 복사 import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = {10}; // 참조값 복사 int[] copyArr = arr; copyArr[0] = 100; // 복사본 값 .. 2021. 3. 7.
[Java] 형 변환 형 변환 Java에서 형 변환은 두 가지로 나눠 볼 수 있는데, 자동(묵시적)형 변환과 명시적 형변환 [자동 타입 변환] 작은 데이터 타입 → 큰 데이터 타입 타입 변환을 하면 원본 데이터의 손실 없이 그대로 보존 되기 때문에 자동 타입 변환이 일어난다. byte >> short/ char >> int >> long >> float >> double 자동 형변환은 개발자가 별도의 작업을 하지 않아도 알아서 처리됩니다. 즉, JVM 내에서 알아서 해석되는 변환 작업이라고 생각할 수 있습니다. ex) 1G 메모리 카드에 있는 데이터를 2G 용량의 메모리 카드로 옮기는 작업을 할 때는 특별히 별도의 작업을 하지 않아도 되는 것과 비슷한 원리입니다. (작은 것 → 큰 것) [강제 타입 변환] 큰 데이터 타입 →.. 2021. 3. 7.
[Java] Class와 Instance (객체 형태) Class와 Instance 클래스 = 객체를 만들기 위한 설계도 :: 정의 인스턴스는 = 설계도에 의해 만들어진 제품 :: 호출 public class Person { private String name; public int age; // 이름없이 생성 public Person() { } // 이름을 가지고 생성 public Person(String s) { name = s; } public String getName() { return name; } } (1) 클래스 접근권한 접근 권한을 표시하는 것으로, public 접근 권한은 다른 모든 클래스들이 이 클래스에 대해 사용 혹은 접근이 가능함을 뜻한다. ex) 비워놓거나 public / protected / private 등이 존재 (2) 클래스명 .. 2021. 3. 7.
[Java] this & this() Java에서 this는 현재 실행되는 메소드가 속한 객체에 대한 레퍼런스 this는 컴파일러에 의해 자동으로 생성되며 개발자는 별도로 this를 선언할 필요 없이 사용하기만 하면됩니다. public class Person { public int age; public Person(int age) { this.age = age; } } 현재 위에는 인자의 변수와 멤버 변수의 이름이 동일합니다. 이는 인자의 목적을 그대로 표현하기 위해 이름을 동일하게 사용한 경우입니다. 하지만 이런 경우에는 어느 소속의 age 변수인지 확인할 수 있어야 하기 때문에 this 키워드를 사용. 실제 실무에서는 생성자를 작성할 때 다음과 같이 만들어 주는 것이 관례입니다. public class Shape { private cha.. 2021. 3. 6.
[Java] Java 언어 특징 및 실행과정 Java 언어 특징 - 객체 지향 언어로서 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원 - Garbage Collection을 통한 메모리 관리 : 개발자 스스로 메모리를 관리하지 않기 때문에 코드가 간결해지거나 Business Logic에 좀 더 집중하여 개발과정 속도나 프로그램 안정성 측면에서 효과적. - 패키지(Package)를 통해 관련 있는 Class 파일들을 묶어서 관리할 수 있다. : 패키지를 디렉터리 계층 구조화를 통해 추후 같거나 유사한 기능을 재작성할 필요가 없으며 패키지별 접근 제한 기능도 있기에 회사의 자산이 될 수 있다. - JVM을 통한 플랫폼 독립성 Java 프로그램 생성 과정 (1) .java (Java로 작성된 소스파일) 파일 생성 : 텍스트 편집기나 Eclips.. 2021. 3. 4.
[Java] Setter vs 생성자 Setter vs 생성자 개발자마다 선호하는 것이 다르며, 두 가지 모두 활용하기도 합니다. 예를 들면, 생성할 때 인스턴스 변수를 초기화하고, 그 후에 추가 설정이 필요 없으면 생성자로도 충분하겠지만, 객체 생성 이후 자유롭게 데이터를 추가 및 변경하고 싶은 경우에는 setter 메소드가 선호됩니다. 계산기 예제 class Calculator { int left, right; public void setOprands(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.right); } } public class Main { public stat.. 2021. 3. 4.
[Java] 유효범위 대규모 프로젝트에서는 코드가 길어지며 복잡해지면서 변수와 함수명이 여러 가지 이유로 이름 충돌. 이를 해결하기 위해서 고안된 것이 유효범위입니다. Scope라고도 부릅니다. [무한 반복으로 빠지는 예시] public class Main { static int i; static void a() { i = 0; } public static void main(String[] args) { for (i = 0; i < 5; i++) { a(); System.out.println(i); } } } 메소드 a()가 실행될 때 메소드 내부의 변수 i의 값이 반복문의 변수 i의 값을 덮어씌워 반복문이 호출될 때마다 변수 i의 값이 0이 되어 반복문은 무한 반복에 빠지게 된다. 이런 상황을 해결하기 위해서는 메소드 a의.. 2021. 3. 4.
[Java] 배열 관련 함수 arraycopy() 분석 System.arraycopy() 가끔은 배열을 이용하다가 복사를 해야 하는 경우도 발생합니다. 물론 반복문을 통해서도 처리할 수는 있지만, 속도의 측면이나 복잡함 때문에 System.arraycopy() 이용할 수도 있다. arraycopy(Object src, int srcPos, object dest, int destPos, length) src: 원본 배열 srcPos: 원본의 복사 시작 인덱스 번호 dest: 대상 배열 destPos: 대상 배열의 복사 시작 인덱스 번호 length: 개수 (※ 인덱스 번호는 0에서부터 시작) import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr.. 2021. 3. 4.
[Java] 배열 개념 (선언 및 초기화) 배열 개념 (선언 및 초기화) 여러 개의 데이터를 한 번에 계산하거나, 한 번에 루프를 이용해서 처리하는 경우가 종종 있는데 이럴 때는 여러 개의 변수를 선언하는 대신에 배열을 활용합니다. 배열 생성 방법 좌항이 레퍼런스 변수를 선언하는 단계이고 / 우항이 배열 공간을 실제 할당하는 생성 단계이다. (배열 공간을 할당하지 않으면 null값이 할당된다.) // 배열을 선언하는 동시에 배열 안의 내용물도 같이 선안하는 방식 - 중괄호{} 사용 int[] arr = ; int[] arr = int arr[] 모두 가능하다. // 배열을 선언해서 공간만 확보하고, 나중에 내용물을 채우는 방식 - 대괄호[] 사용 int arr[] = new int[3]; arr[0] = 1; arr[1] = 2; arr[2] =.. 2021. 3. 4.
반응형