티스토리 뷰

<오늘 수업내용>

새로운 프로젝트 파일로 넘어감.

JavaAPI  앞으로 API프로젝트만 업로드하기.

깃허브에서 그동안의 JavaBasic , JavaObject 파일 과 별도로 공유작업 폴더에 있던 Qize폴더 빼고 
나머지 자료들 다 삭제해서 최종본만 남도록 하기.


자바교안 19강 API – java.lang패키지

참고 : api.lang.object

API – java.lang패키지 -> 미리 만들어져 있는 유용한 기능들 
* JAVA API(Application Programming Interface)
- API는 라이브러리라고 부르며 프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음을 말합니다.
- 자바 표준 API 문서 주소: https://docs.oracle.com/javase/8/docs/api
(자바는 상용화가 이미 많이 되어있어서 굳이 문서를 안 봐도 구글링하면 많이 나옴.)
* java.lang 패키지
- java.lang 패키지는 자바 프로그램의 기본적인 클래스들을 담고 있는 패키지입니다. 
- 그렇기 때문에 java.lang 패키지에 있는 클래스와 인터페이스는 import 구문 없이 사용할 수 있습니다.
- java.lang 패키지 주요 클래스
1. Object: 자바 클래스의 최상위 클래스
2. System: 표준 입력장치(키보드)로부터 데이터를 입력받거나 표준 출력장치(모니터)로 출력하기 위해 사용
3. Class: 클래스를 메모리에 로딩할 때 사용
4. String: 문자열을 저장하고 문자열의 여러 가지 정보를 얻을 때 사용
5. StringBuffer, StringBuilder: 문자열을 저장하고 내부 문자열을 조작할 때 사용
6. Math: 수학 함수를 이용할 때 사용
7. Wrapper(Byte, Short, Integer, Long, Float, Double, Boolean, Character)
: 기본 데이터 타입의 객체를 만들 때 사용

Object클래스
*Object 클래스 : 모든 클래스의 부모 클래스.
- 클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 묵시적으로 Object 클래스를 상속
하게 됩니다. 따라서 모든 자바의 클래스는 Object 클래스의 자식이거나 자손클래스입니다.
- 모든 클래스가 Object를 상속하기 때문에 Object의 메서드는 모든 클래스에서 사용이 가능합니다

System 클래스
참고: api.lang.system
*System 클래스 -> 잘 사용하는 클래스는 아님.★
- System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있습니다. 프로그램 종료, 키보드로 입
력, 모니터로 출력, 메모리 정리, 현재 시간 읽기 등이 가능합니다.
- System 클래스의 모든 멤버는 static으로 구성되어 있어 클래스 이름으로 바로 접근이 가능합니다.
*System 클래스 주요 메서드
1. exit(): 현재 실행하고 있는 프로세스를 강제 종료시킵니다. 정상 종료일경우 매개값으로 0을 주고, 
비정상 종료인경우 0 이외에 다른 값을 줍니다.
2. currentTimeMillis()
: 컴퓨터의 시계로부터 현재 시간을 읽어서 밀리세컨드(1/1000초) 단위와 나노세컨드(1/10^9초)단위
의 long값을 리턴합니다. 주로 프로그램의 실행 소요 시간 측정으로 성능을 테스트할 때 사용합니다.
3. getProperty(): JVM이 시작할 때 자동 설정되는 시스템의 속성값을 구합니다.
4. gc(): Garbage Collector를 실행시킵니다.

String 클래스 - 문자열
참고 : api.lang.string.StringEx , Quiz17(실습)
* String 클래스
- String은 생성자를 사용해서 객체를 만들 필요 없이 기초 데이터를 사용할 때처럼 바로 초기화해서 사용
할 수 있습니다.
- String 클래스의 주요 메서드
1. charAt(): 특정 인덱스의 글자를 리턴.
2. indexOf(): 특정 문자열의 시작 인덱스 값을 반환합니다. 만약 주어진 문자열이 포함되어 있지 않으면 -1
을 리턴합니다.
3. length(): 문자열의 길이를 알려줍니다.
4. replace(): 특정 문자열을 변경합니다. (repalce - 원본문자는 유지.)
5. substring(): 인덱스를 기준으로 그 앞의 문자열을 잘라줍니다. 만약 매개값으로 인덱스를 2개 주면 처음
매개값 이상 두 번째 매개값 미만의 문자열을 제외하고 나머지를 삭제합니다.
6. toUpperCase(): 문자열을 대문자로 치환합니다.
7. toLowerCase(): 문자열을 소문자로 치환합니다.
8. trim(): 문자열의 앞, 뒤 공백을 제거합니다.
9. equals(): 문자열의 값을 비교합니다.
10. valueOf(): 기본 데이터 타입의 값들을 문자열로 변환합니다.
11. ★★★ split(): 특정 문자열 기준으로 잘라서 배열에 리턴. (split은 정말 많이 씀.)
+ 알파 
-String.copyValueOf()  

String의 단점을 보완한 StringBuilder
참고 : api.lang.sb.StrBufferEx , StringTest
* String 클래스의 단점
- String 클래스는 아주 많이 쓰이고 좋은 기능들을 많이 가지고 있지만 메모리를 과소비한다는
문제점이 있습니다.
- String 객체는 처음 초기화된 데이터에 변화가 생기면 기존 객체를 재활용하지 않고 새로운 객
체를 생성합니다.
* StringBuilder
-String 클래스의 단점인 새로운 객체를 생성하는 문제로 인해 속도가 느려지는 현상이 발생하
기 때문에 이 문제를 해결하기 위해 속도적인 측면에서 개선된 클래스 입니다
- StringBuilder 클래스의 주요 메서드
1. append(): 기존 문자열의 뒤에 문자열을 추가합니다.
2. insert(): 특정 위치에 문자열을 추가합니다.
3. delete(): 문자열을 삭제합니다.
4. deleteCharAt(): 특정 인덱스의 문자 하나를 삭제합니다.
5. replace(): 문자열의 일부분을 다른 문자열로 대체합니다.
6. setCharAt(): 문자열에서 주어진 index의 문자를 다른 문자로 대체합니다.
7. toString(): StringBuilder 객체의 값을 문자열로 반환합니다.
8. reverse(): 문자열을 거꾸로 뒤집습니다.
-string build보다 string buffer를 쓰기.
-string 클래스는 매번 작업할 때마다 새롭게 객체를 만들어서 사용하기 때문에 작업횟수나 값이 커질수록
 속도가 느려진다는 단점이 있는데. string build나 string buffer는 원래의 객체를 계속 변경해서 사용하기 때문에
 속도가 느려지는 스트링 클래스의 단점을 보완해준다.



Math클래스 - 수학관련
* Math 클래스의 메서드는 대부분 스태틱. 그래서 클래스.메서드명 이렇게 씀.
- Math 클래스는 수학 계산에 사용할 수 있는 메서드들을 제공합니다.
- Math 클래스가 제공하는 메서드는 모두 정적 메서드이므로 Math 클래스 이름으로 바로 사용이 가능합
니다.
- Math 클래스 주요 메서드
1. abs(): 절대값을 구함.
2. ceil(): 올림값을 구함.
3. floor(): 내림값을 구함.
4. max(): 수를 비교하여 최대값을 구함.
5. min(): 수를 비교하여 최소값을 구함.
6. random(): 랜덤값을 구함(0.0 <= 값 < 1.0)
7. rint(): 현재 수에서 가까운 정수를 실수형태로 구함.
8. round(): 반올림값을 구함.

Wrapper 클래스
참고 : api.lang.wrapper
★★★★★아주아주아주 중요★★★★★!!!!
* Wrapper 클래스 

--다양한 기능을 변수에 . 을 찍음으로서 쓰기위해서 랩 클래스가 있게된 것.
- 자바는 기본 타입의 값을 갖는 객체를 생성할 수 있습니다.
- 이러한 객체를 포장(Wrapper) 객체라고 하는데 그 이유는 기본 타입의 값을 객체 내부에 두고 포장하
기 때문입니다.
- 포장 객체의 특징은 포장하고 있는 기본 타입의 값은 외부에서 변경할 수 없습니다. 만약 변경하고 싶
으면 새로운 포장 객체를 생성해야 합니다.
다양한 Wrapper클래스
- Byte, Short, Integer(인트의 객체형), Long, Float, Double, Boolean, Character
-int a =1 과 같은 기본형을 Intheger라는 타입에 담는 것을 boxing .
 반대상황을 unboxing이라고 함.
 그리고 이 과정이 자동으로 되는것을 autoboxing이라고함.

wrapper 클래스의 타입변환을 두고 쓰는 용어들.



wrapper클래스에서 가장 많이 활용되는 애들.



<오늘 기억할 내용>

-https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html
 1.필드 2. 생성자 3. 메서드 이렇게 3가지가 기술되어있음. (주요 보고 참고할 포인트가 이 3가지라는것.)
-메서드의 기능이 뭔지 모르겠으면 메서드 위에 마우스커서를 올리면 설명이 나옴.
 영어라 못 알아보겠으면 복사해서 구글번역기 돌리기. 그래도 모르겠다 ?
 그러면 메서드를 키워드로 구글에서 그냥 검색하기.
-equals() -> 다른 개체가 이 개체와 "동일한"지 여부를 나타냅니다.
-자바에서는 주소를 컨트롤 할 수 없음. 그래서 토스트링 메서드는 멤버변수의 값을 찍어내는 역할을 많이 하게됨.
-toString 사용방법 중 하나. 
 alt + shift + s 해서 나오는 것중 generate toString 을 써서 toString구문을 오버라이딩 할 수 있다.
-API의 내용은 정말 많음. 우리가 필요할 때 API에서 필요한 문법을 찾아서 쓰는것이 바로 실력.
-static final이 앞에 붙은것은 상수. 
-메서드를 사용했다면 그 메서드가 뭔지 항상 읽어보는 습관을들이기. 
 메서드 위에 마우스 커서를 올리면 설명나오고 더 자세히 설명 보고싶으면 메서드를 컨트롤을 누른상태에서 누르면
 메서드 설명 클래스가 새로 나옴.
-CharSequence 이거는 그냥 문자열이라고 보면된다.
-메서드를 처음봐서 뭔지 모르겠다 구글링해서 하루를 알아보고도 모르겠다 센세한테 바로 ㄱ. 센세가 해석해주신다고함.
-처음에는 어떻게 만들어져가는지 머리로만 하는게 당연히 어려움. 그러니 메서드 같은 경우에 
 만들면서 꼭 중간중간 출력해서 제대로 만들어져가고 있는지 확인하기.
  public static void main(String[] args) {}
이 중괄호 안에 넣어서 값을 출력해보며 꼭꼭 점검하기.
-프로그래머스에서 문자열 문제 많음. 그만큼 중요하다는거 그러니 꼭 풀어보면서 실력을 키우기.

 

이 사진에서 저 초록색은 종류별로 접근제어자가 무엇인지를 나타내 주는것.
메서드가 있는데 무슨 기능을 하는지 모르겠으면 마우스커서를 메서드 위에 올리면 설명이 나옴.

#오버라이딩을 해야하는데 무엇을 오버라이딩 해야하는지 모르겟을 때!

alt + shift + s 누르면 나오는 화면에서 빨간줄 친 부분 클릭
이곳에서 오버라이딩이 필요한 목록들을 보고 작업진행  하면됨.

-오버라이딩이 필요할 시에 무엇을 오버라이딩할지 모르곘으면 
alt + 시프트+ s 눌러서 실행해서 위에 2개 사진처럼 작업하면됨.

★숙제하기 문자열에 있음.
Quiz17 2번문제

<오늘 하루 중 반성할 점>
-수업 시간에 선생님이 말씀하실 때 딴 생각하지말고 선생님 하시는 말씀에 집중하기.

댓글