StringBuilder 사용 이유 Java 프로그램을 작성하다 보면, String 객체와 String 객체를 더하는 등의 연산을 수행하는 일이 많을 것이다. 하지만, 2개의 String 객체를 더하는 연산을 수행한다면 새로운 String을 생성하고 이는 메모리 할당과 메모리 해제를 발생시킨다. 즉, 더하는 연산이 많아지며 성능적으로 좋지 않다. StringBuilder를 사용하여 문자열을 더하면, 새로운 객체를 생성하지 않고 기존 데이터에 더하는 방식으로 사용되기 때문에 속도도 빠르며 성능적인 측면에서도 좋다. StringBuilder는 긴 문자열을 더하는 상황에서 특히 유용하다. StringBuilder 사용법 StringBuilder sb = new StringBuilder(); sb.append(..
indexOf() ▶ int indexOf(char ch) 문자열 객체에서 ch 문자가 첫 번째로 발견된 위치를 반환한다. 없으면 -1을 반환한다. Strnig str = "apple"; int n = str.indexOf("l"); // n = 3 문자가 발견된 위치를 반환한다. ▶ int indexOf(String str) 문자열 객체에서 str을 찾아 str의 가장 앞에 있는 문자 위치를 반환한다. 없으면 -1을 반환한다. String str = "물품 가격은 $12"; int n = str.indexOf("$12"); // n = 7 문자열이 시작하는 위치를 찾아 반환한다. substring() ▶ String substring(int start) 문자열 객체의 start부터 끝까지 문자열을 반환..
자바의 for-each문은 for, while과 같은 반복문 중 하나이다. for-each를 사용하기 위해서 for 키워드를 사용하여 반복문 내 카운터 변수를 선언하고 콜론(:) 이후 배열이름을 선언한다. for-each 문은 배열이나 ArrayList와 같은 Collection 클래스를 반복하는데 사용한다. ▶ for문을 사용한 배열 탐색 int[] num = {0, 1, 2, 3, 4, 5}; for(int i=0; i
주요 패키지 java.lang 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 제공. import문을 사용하지 않아도 자동으로 호출. java.util 날짜, 시간 등 다양한 유틸리티 클래스와 인터페이스 제공 java.io 입출력하는 클래스와 인터페이스 제공 java.awt & javax.swing GUI 프로그래에 필요한 클래스와 인터페이스 제공 Object 클래스 java.lang 패키지에 속한 클래스. 모든 클래스에 강제로 상속. 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스. 주요 메소드 boolean equals(Object obj) obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴 Class getClass() 현 객체의 런타임 클래스를 리턴 ..
업캐스팅과 instanceof 연산자 캐스팅 : 타입 변환 업캐스팅 : 서브 클래스 → 슈퍼 클래스 : 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스의 타입으로 변환하는 것. : 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 한다. ▶서브 클래스는 슈퍼 클래스의 속성을 상속받아 서브 클래스의 객체는 슈퍼 클래스의 멤버를 모두 가진다. ∴ 서브 클래스의 객체를 슈퍼 클래스의 객체로 취급 가능. class Person{ String name; String id; public Person(String name){ this.name = name; } } class Student extends Person{ String grade; String department; public Student(Stri..
상속의 필요성 클래스의 간결화 - 멤버의 중복 작성 불필요 클래스 관리 용이 - 클래스들의 계층적 분류 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이 상속 선언 extends 키워드 사용 public class Person{//슈퍼클래스 ... } public class Student extends Person{//서브 클래스(Person을 상속받는 Student 선언) ... } 상속과 객체 상속 선언 : extends 키워드를 사용하여 상속을 선언한다. 서브 클래스 객체 생성 상속받는 클래스의 객체는 슈퍼 클래스의 멤버와 서브 클래스의 멤버를 모두 갖는다. 서브 클래스 객체 활용 서브 클래스의 public 멤버, 슈퍼 클래스의 public 멤버 모두 접근 가능. but, private으로 선..
static 멤버 객체를 생성하지 않고도 사용할 수 있는 멤버. 클래스당 하나만 생성되는 멤버로 동일한 클래스의 모든 객체들이 공유. main() 메소드가 실행되기 전에 이미 생성. static 멤버가 포함된 객체를 생성하기 전에 사용 가능. class Ex{ static int num; static void add(){ ... } } static 멤버 생성 클래스가 로딩되는 시점에 static 멤버는 생성되어 사용 가능. static 멤버 접근 non-static 멤버와 사용 방법이 동일. ( 객체.static필드 or 객체.static메소드 ) 클래스 이름으로 바로 접근 가능( static 멤버는 클래스 당 하나만 생성되기 때문) ( 클래스명.static 멤버 or 클래스명.static메소드 ) ※ ..
자바에서는 객체를 캡슐화하기 때문에, 객체에 다른 객체를 접근하는 것을 허용할지 여부를 지정할 필요가 있어 접근 지정자가 필요. 패키지 서로 관련있는 클래스 파일들을 저장하여 관리하기 위해 필요. 클래스 접근 지정 다른 클래스에서 이 클래스를 활용할 수 있는지 허용 여부 결정 public 클래스 public class Ex { ... } 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용. 디폴트 클래스(접근 지정자 생략) class Ex { ... } 같은 패키지 내의 클래스들에게만 사용이 허용. 멤버 접근 지정 멤버에 접근하는 클래스 멤버의 접근 지정자 private 디폴트 접근 지정 protected public 같은 패키지의 클래스 X O O O 다른 패키지의 클래스 X X X O 접근 가능 영..
객체 배열 객체에 대한 레퍼런스를 원소로 갖는 배열 객체 배열 만들기 1. 배열에 대한 레퍼런스 선언 Array []a; 변수 a만 선언한 것. 배열을 생성한 것은 아니므로 배열의 원소 개수를 지정하면 안된다. 2. 레퍼런스 배열 생성 a = new Array[5]; Array 객체에 대한 레퍼런스 5개 생성 Array 객체에 대한 레퍼런스 배열이 생성되고 변수 a가 이를 가리킴. 3. 객체 생성 for(int i=0; i
객체지향 언어 특성 캡슐화 : 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것. 자바에서 객체는 클래스라는 캡슐을 사용. 필드(멤버 변수)와 메소드(멤버 함수)로 구성. 상속 : 하위 개체가 상위 개체의 속성을 모두 가지는 관계. : 슈퍼 클래스의 필드와 메소드를 물려받아 코드를 재사용함으로써, 시간과 비용을 줄여준다. 자바에서 상속 : 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장하는 개념. 부모 클래스 = 슈퍼 클래스 자식 클래스 = 서브 클래스 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것. 오버라이딩 : 슈퍼 클래스의 구현된 메소드를 서브 클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현되는 것. 오버로딩 : 클래스 내에..
Back-End/Java 2023. 1. 4. 18:34
StringBuilder 사용 이유 Java 프로그램을 작성하다 보면, String 객체와 String 객체를 더하는 등의 연산을 수행하는 일이 많을 것이다. 하지만, 2개의 String 객체를 더하는 연산을 수행한다면 새로운 String을 생성하고 이는 메모리 할당과 메모리 해제를 발생시킨다. 즉, 더하는 연산이 많아지며 성능적으로 좋지 않다. StringBuilder를 사용하여 문자열을 더하면, 새로운 객체를 생성하지 않고 기존 데이터에 더하는 방식으로 사용되기 때문에 속도도 빠르며 성능적인 측면에서도 좋다. StringBuilder는 긴 문자열을 더하는 상황에서 특히 유용하다. StringBuilder 사용법 StringBuilder sb = new StringBuilder(); sb.append(..
Back-End/Java 2023. 1. 4. 16:50
indexOf() ▶ int indexOf(char ch) 문자열 객체에서 ch 문자가 첫 번째로 발견된 위치를 반환한다. 없으면 -1을 반환한다. Strnig str = "apple"; int n = str.indexOf("l"); // n = 3 문자가 발견된 위치를 반환한다. ▶ int indexOf(String str) 문자열 객체에서 str을 찾아 str의 가장 앞에 있는 문자 위치를 반환한다. 없으면 -1을 반환한다. String str = "물품 가격은 $12"; int n = str.indexOf("$12"); // n = 7 문자열이 시작하는 위치를 찾아 반환한다. substring() ▶ String substring(int start) 문자열 객체의 start부터 끝까지 문자열을 반환..
Back-End/Java 2023. 1. 4. 15:56
자바의 for-each문은 for, while과 같은 반복문 중 하나이다. for-each를 사용하기 위해서 for 키워드를 사용하여 반복문 내 카운터 변수를 선언하고 콜론(:) 이후 배열이름을 선언한다. for-each 문은 배열이나 ArrayList와 같은 Collection 클래스를 반복하는데 사용한다. ▶ for문을 사용한 배열 탐색 int[] num = {0, 1, 2, 3, 4, 5}; for(int i=0; i
Back-End/Java 2022. 3. 17. 18:21
주요 패키지 java.lang 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 제공. import문을 사용하지 않아도 자동으로 호출. java.util 날짜, 시간 등 다양한 유틸리티 클래스와 인터페이스 제공 java.io 입출력하는 클래스와 인터페이스 제공 java.awt & javax.swing GUI 프로그래에 필요한 클래스와 인터페이스 제공 Object 클래스 java.lang 패키지에 속한 클래스. 모든 클래스에 강제로 상속. 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스. 주요 메소드 boolean equals(Object obj) obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴 Class getClass() 현 객체의 런타임 클래스를 리턴 ..
Back-End/Java 2022. 3. 2. 14:48
업캐스팅과 instanceof 연산자 캐스팅 : 타입 변환 업캐스팅 : 서브 클래스 → 슈퍼 클래스 : 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스의 타입으로 변환하는 것. : 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 한다. ▶서브 클래스는 슈퍼 클래스의 속성을 상속받아 서브 클래스의 객체는 슈퍼 클래스의 멤버를 모두 가진다. ∴ 서브 클래스의 객체를 슈퍼 클래스의 객체로 취급 가능. class Person{ String name; String id; public Person(String name){ this.name = name; } } class Student extends Person{ String grade; String department; public Student(Stri..
Back-End/Java 2022. 2. 21. 16:56
상속의 필요성 클래스의 간결화 - 멤버의 중복 작성 불필요 클래스 관리 용이 - 클래스들의 계층적 분류 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이 상속 선언 extends 키워드 사용 public class Person{//슈퍼클래스 ... } public class Student extends Person{//서브 클래스(Person을 상속받는 Student 선언) ... } 상속과 객체 상속 선언 : extends 키워드를 사용하여 상속을 선언한다. 서브 클래스 객체 생성 상속받는 클래스의 객체는 슈퍼 클래스의 멤버와 서브 클래스의 멤버를 모두 갖는다. 서브 클래스 객체 활용 서브 클래스의 public 멤버, 슈퍼 클래스의 public 멤버 모두 접근 가능. but, private으로 선..
Back-End/Java 2022. 2. 18. 16:19
static 멤버 객체를 생성하지 않고도 사용할 수 있는 멤버. 클래스당 하나만 생성되는 멤버로 동일한 클래스의 모든 객체들이 공유. main() 메소드가 실행되기 전에 이미 생성. static 멤버가 포함된 객체를 생성하기 전에 사용 가능. class Ex{ static int num; static void add(){ ... } } static 멤버 생성 클래스가 로딩되는 시점에 static 멤버는 생성되어 사용 가능. static 멤버 접근 non-static 멤버와 사용 방법이 동일. ( 객체.static필드 or 객체.static메소드 ) 클래스 이름으로 바로 접근 가능( static 멤버는 클래스 당 하나만 생성되기 때문) ( 클래스명.static 멤버 or 클래스명.static메소드 ) ※ ..
Back-End/Java 2022. 2. 18. 15:27
자바에서는 객체를 캡슐화하기 때문에, 객체에 다른 객체를 접근하는 것을 허용할지 여부를 지정할 필요가 있어 접근 지정자가 필요. 패키지 서로 관련있는 클래스 파일들을 저장하여 관리하기 위해 필요. 클래스 접근 지정 다른 클래스에서 이 클래스를 활용할 수 있는지 허용 여부 결정 public 클래스 public class Ex { ... } 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용. 디폴트 클래스(접근 지정자 생략) class Ex { ... } 같은 패키지 내의 클래스들에게만 사용이 허용. 멤버 접근 지정 멤버에 접근하는 클래스 멤버의 접근 지정자 private 디폴트 접근 지정 protected public 같은 패키지의 클래스 X O O O 다른 패키지의 클래스 X X X O 접근 가능 영..
Back-End/Java 2022. 2. 18. 15:07
객체 배열 객체에 대한 레퍼런스를 원소로 갖는 배열 객체 배열 만들기 1. 배열에 대한 레퍼런스 선언 Array []a; 변수 a만 선언한 것. 배열을 생성한 것은 아니므로 배열의 원소 개수를 지정하면 안된다. 2. 레퍼런스 배열 생성 a = new Array[5]; Array 객체에 대한 레퍼런스 5개 생성 Array 객체에 대한 레퍼런스 배열이 생성되고 변수 a가 이를 가리킴. 3. 객체 생성 for(int i=0; i
Back-End/Java 2022. 2. 15. 16:03
객체지향 언어 특성 캡슐화 : 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것. 자바에서 객체는 클래스라는 캡슐을 사용. 필드(멤버 변수)와 메소드(멤버 함수)로 구성. 상속 : 하위 개체가 상위 개체의 속성을 모두 가지는 관계. : 슈퍼 클래스의 필드와 메소드를 물려받아 코드를 재사용함으로써, 시간과 비용을 줄여준다. 자바에서 상속 : 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장하는 개념. 부모 클래스 = 슈퍼 클래스 자식 클래스 = 서브 클래스 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것. 오버라이딩 : 슈퍼 클래스의 구현된 메소드를 서브 클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현되는 것. 오버로딩 : 클래스 내에..