일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 미국주식
- FCF
- etf
- 금리인상
- 자바
- 주린이
- 배당성장
- 그리디 알고리즘
- Java
- mco
- 잉여현금흐름
- 금리인하
- StringBuffer
- 알고리즘
- 객체지향
- 주식
- 인플레이션
- 현금흐름표
- S&P500
- 백준
- 오버라이딩
- 접근제어자
- object
- 제태크
- 기업분석
- 다형성
- javascript
- 프로그래머스
- 무디스
- XLF
- Today
- Total
목록JAVA (77)
오늘의하루
1. StringBuilder란? StringBuffer는 동기화되어 있으며 멀티 스레드에 안전하지만 싱글 스레드에 사용 시 불필요한 성능 저하를 가져온다. 싱글 스레드는 StringBuilder를 사용하게 성능면에서 좋다. class StringBuilderTest1{ // StringBuffer로 만들기 StringBuffer sb1 = new StringBuffer(); void Append1(){ sb1.append("abc"); } // ⭐StringBuilder로 만들기 StringBuilder sb2 = new StringBuilder(); void Append2(){ sb2.append("abc"); sb2.insert(2,'.'); // ab.c sb2.delete(1,3); // ac ..
StringBuffer의 특징 StringBuffer는 동기화(데이터 보호)되어 있고 멀티스레드에 안전하다는 특징이 있다. 스레드의 종류 및 특징 싱글 스레드는 한 번에 1개의 작업을 하는 것을 말합니다. 멀티 스레드는 한 번에 n개의 작업을 하는 것을 말합니다. 멀티 스레드의 경우 스레드끼리 데이터를 공유하는데 이때 데이터가 꼬일 수 있으며 이를 방지하기 위해서는 동기화로 작업해주어야 합니다. (데이터 보호 목적) StringBuffer() : 16 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다. StringBuffer(int length) : 지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성한다. StringBuffer(String ..
String(String s) : 주어진 문자열(s)을 갖는 String 인스턴스를 생성한다. (생성자) String s = new String("Hello"); // s = "Hello" String(char [] value) : 주어진 문자열(value)을 갖는 String 인스턴스를 생성한다. (생성자) char []를 String으로 변경하려면 String()을 사용하면 됩니다. String을 char []로 변경하려면 toCharArray()를 사용하면 됩니다. char[] c = {'H','e','l','l','o'}; String s = new String(c); // s = "Hello" String(StringBuffer sb) : StringBuffer 인스턴스의 문자열과 같은 내용의 ..
1. String 클래스 정보 문자열을 다루기 위한 클래스 데이터(char []) + 메서드(문자열 관련) 내용을 변경할 수 없는 불변(immutable) 클래스이다. class StringTest1{ String a = "a"; String b = "b"; void StringSum(){ a = a + b; // "ab" } } 어떻게 내용을 변경할 수 없는 불변의 String클래스가 변경이 되는지에 대해 알아보겠습니다. 참조 변수 a에는 문자열 리터널 "a"의 주소가 담깁니다. (예: 주소 : 0X100) 참조 변수 b에는 문자열 리터널 "b"의 주소가 담깁니다. (예: 주소 : 0X200) 문자열 리터널 "a"와 "b"를 합친 결과는 새로운 문자열 리터널 "ab"가 됩니다. (예: 주소 : 0X30..
1. Object Class Object는 모든 클래스의 최고 조상으로 11개의 메서드를 가지고 있습니다. protected Object clone( ) : 객체 자신의 복사본을 반환한다. 오버 라이딩을 통해 접근제어자를 public으로 바꿔줘야 한다. public boolean equals(Object obj) : 객체 자신과 객체 obj가 같은 객체인지 알려준다. 참조 변수에 저장된 주소를 비교한다. 오버 라이딩을 통해 주소가 아닌 멤버 비교도 할 수 있다. equals 메서드를 오버 라이딩하면 hashCode 메서드도 오버 라이딩해줘야 한다. (중요) equals 메서드의 결과가 true이면 두 객체의 해시 코드는 같아야 하기 때문입니다. protected void finalize( ) : (거의 ..
1. 에러의 종류와 정의 컴파일 에러(compile-time error) : 컴파일할 때 발생하는 에러 (고치기 전까지는 실행 불가) 컴파일러가 하는 일 구문 체크 번역 최적화 생략된 코드 추가 (예시 : 생성자 super) 런타임 에러 : 실행 시 발생하는 에러 (런타임 에러 발생 시 프로그램 비정상 종료) 에러(Error) : 실행 중 발생할 수 있는 심각한 오류 예외(Exception) : 실행 중 발생할 수 있는 미약한 오류 예외처리(try - catch)가 가능하다. 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지하는 것 예외(Exception)의 종류와 구분 Exception과 Exception의 자식 클래스들 (예외 처리 필수) 프로그램 외적인 요인으로 발생하는 예외 IOExcepti..
1. 추상 클래스(abstract class) 아직 사용할 수 없는 미완성된 클래스 인스턴스 생성 불가능하다. 추상 메서드를 포함하고 있는 클래스 선언 부만 작성된 메서드 꼭 필요하지만 자식마다 다르게 구현될 것으로 예상되는 경우에 사용 정상적인 메서드는 추상 메서드를 호출할 수 있다. 호출할 때 필요한 건 선언 부이기 때문이다. 다른 클래스가 상속을 통해 추상 메서드를 완성해서 사용할 수 있게 도움을 주는 목적으로 작성한다. 사용 목적은 여러 클래스에 공통적으로 사용될 수 있는 부분을 뽑아서 추상 클래스로 만든다. abstract class player{ // 추상 클래스 int x; player(){ // 추상 클래스도 생성자는 있어야 한다. x = 0; } abstract void play(int ..
1. 제어자 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. 제어자는 크게 접근 제어자와 그 외 제어자로 나뉜다. 접근 제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있지만 접근 제어자는 단 하나만 사용이 가능하다. 1-1. 그 외 제어자에 대해 알아보기 static - 공통적인 static이 사용될 수 있는 곳은 멤버 변수, 메서드, 초기화 블록이다. 멤버 변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다. 클래스 변수는 인스턴스를 생성..
1. 상속 기존 클래스를 재사용하여 새로운 클래스를 만드는 것이다. 상속으로 만들어진 클래스들은 부모 자식의 관계가 생긴다. 자식은 부모의 모든 멤버를 상속받게된다. 단, 생성자와 초기화 블록은 제외 해결방법 : 부모의 생성자를 호출할 수 있는 생성자 super() 사용 자식의 멤버개수는 부모의 멤버개수보다 작거나 많다. 부모 클래스의 변경은 자식 클래스에게 영향을 미치지만 자식 클래스의 변경은 부모 클래스에 아무런 영향을 미치지 못한다. Java는 단일상속만을 허용한다. 두개 이상의 클래스를 가져오고 싶다면 비중이 높은 클래스는 상속을 하고 나머지는 포함관계를 가지면 됩니다. 부모가 없는 클래스는 자동으로 (최상위 클래스)Object 클래스를 상속받고 있습니다. 이런 이유로 모든 클래스는 11개의 매서..
1. static class staticTest{ static int width; // 클래스(static) 변수 static int height; // 클래스(static) 변수 static { // 클래스 초기화 블록 (복잡) width = 100; height = 200; } static int max (int a, int b){ // 클래스(static) 매서드 return a > b ? a : b; } } 만약 이런 클래스가 있다면 여기 있는 모든 멤버는 인스턴스를 생성하지 않고도 사용할 수 있습니다. static의 경우 파일이 실행될 때 메모리에 올라가며 몇 개의 인스턴스를 생성하더라도 최초 1회만 초기화됩니다. static은 인스턴스 멤버에만 사용할 수 있습니다. 2. final final ..