2주차는 양도 양이지만, 이해를 동반해야 하는 부분이 많아졌다. 구글링 전에 공식 문서 먼저 뒤져보는 습관을 길러야할 것 같다. 추가로 HTML,CSS도 같이 나가고 있다. 기초부분은 알아야하니. 프론트를 찍먹해보면서 느낀건 얘들은 오류를 안 알려준다..... 뭐가 어디가 틀린지 모르니까 오타나도 한참 헤멜수 있다....
이해해도 까먹는다 역시 초반에는 깊은 이해보다 얕은 반복이 최고다.
클래스심화,object,wrapper,enum,math,string, 추상클래스, 인터페이스, 접근제어자,기타제어자,초기화블록,innerclass
interface,디자인패턴,SOLID 원칙
실전 부분?
- Integer.parseInt(String ) - 숫자형태 문자열을 int형으로 변환해줌. 문자열에 문자들어가있으면 오류나더라..
- Integer.toString(int ) -반대겠지?? 신기한게 int형에 +""하면 문자열로 변해버린대.
- Integer.valueOf(String ) , String.valueOf(int ) -?
- nextInt(), nextLine(), nextLong()... close는 종료할때 쓴다는데 정확히 어떤 의미인지 모르겠음.(안써도 닫히던데?)
- 배열에 입력받으려면 for문돌려서 입력받는 중. 다른 편리한 방법 있을까(?) 나중에 찾아보자
- string.charAt(0~) - 문자열 순서대로 하나씩 char형으로 가져올수 있음.0부터 시작인건 알지?
- double 형 변수랑 숫자랑 연산할때 1.0 , 2.0 이렇게 알려줘야 됨.
- int->double 에 넣어버리는건 문제가 안되는데 double->int 일때 강제 형변환(캐스팅) 필요. 자료 일부 소실가능.
- 이중포문 안쪽 for문 break는 첫 for문으로 이동, while에 true넣고 사용 많이 함.
- 배열길이확인.length 문자열 길이확인 .length()
- 향상된 for문 익숙해지자 ,,,마치 for( [ i ] : arr ){ } 느낌~ 거꾸로 출력하려면 리스트로 뒤집고 출력하나보다.
- 2차원 배열 이중for arr[ ].length 와 arr[ i ].length는 다르다.
2중 향상된 for문으로 설계하는거 익숙해지자 다음에.. - 반올림하기 Math.round(double ~) 소수점이하 버리고 1자리 반올림임.
- while(cnt <=5) 식으로 이용하면 기회 5번 입력받는 형태 만들수있음 오!
- 선택정렬 - min값을 지정하고 비교해서 앞으로 이동
- 싱글턴 private static Singleton instance; private Singleton(){}, public static Singleton getInstance(){ if null~ instance= new Singleton} return instance;
이론 부분?
- java.base모듈에 우리가 주로 사용하는 패키지들이 구현되어있다(?) 이 표현이 맞는지 모르겠다.
- import 하지 않아도 사용할 수 있는 패키지들이 있다. 잘 쓰는 것은 object,wrapper,enum,math,string
- lang.Object - 자바 클래스들의 조상클래스, 필드가 없고 메소드로만 구성.
- lang. Object - Exception 클래스는 컴파일 에러가 나는 것들 등 오류처리를 담당한다. try catch로 처리한다는데 아직 써보진 못했다.
- lang. Object - toString() Class 인스턴스를 토대로 문자열을 만들어 반환하는데 모든 정보를 담도록 하는것이 좋단다. 기본적으로 객체 인쇄를 하면 문자열 표현을 가져온다는데 다양하게 쓰이는 것 같은데 아직 조금 붕떠있다. 객체의 주요정보를 싹 담아서 알려주는 용도로 사용하는 것 같다. 오버라이딩해서.
- lang. Object - hashcode() - 객체를 식별할 수 있는 하나의 정수 리턴 equals와 hashcode 중에 뭐라도 바꿔버리면? 뭔가 잘못된다...?
- lang. Object - equals() - 두 객체가 동일한지 확인하는데 쓰는데 이게 참조 동등성을 확인한다고 한다. 즉 동일한 객체를 가리키면 true, 아니면 false. 문자열 비교같은데서 쓰는건 재정의된 거다
아마도? - lang. Object - clone()
- lang. String -자바 문자열 다루기 위한 class
- lang. String - equals(), length(), indexOf(" ") - 특정 문자가 시작하는 문자열의 인덱스를 반환한다. 0부터 시작 없으면 -1반환 ,toLowerCase(),toUpperCase(),isEmpty() - 비었는지 확인 true false로 반환 ,contains(" ") - 마찬가지 포함되어있는지 확인 true false로 반환
- lang. String - 문자열 검색을 효과적으로 빠르게 하기위해 등장 StringBuffer, StringBuilder(더 늦게 나옴. 동기화제공X 스레드에 안전하지 않음, 그러나 더 빠름. 단일 스레드 환경에서 문자열 추가수정삭제 등 작업할때 사용,멀티 스레드 환경에선 주의)
- lang.Math - 수학연산. Static 필드값과 메소드만이 존재. min,max,sin,cos,floor,ceil,E,PI,round,pow(a,b),random(), toDegrees,toRadians <각도
- lang.System - 잘아는 프린트
- *math - BigInteger,BigDecimal //엄청 큰 수를 다루기 위해 사용. precision 전체자리자리수(소수점포함), scale 소수점 이하 자리수 (일단 이런게 있다고 알고 넘어가자)
- *Wrapper - 기본 데이터 유형을 객체로 캡슐화하거나 래핑하는 클래스? 필요시 기본유형을 개체 처리.프레임워크 (ArrayList,HashMap 등)는 객체와 함께 작동하며 기본 유형을 저장하지 않으나 래퍼 클래스 사용시 컬렉션에서 기본 값 사용가능. 문자열 숫자변환, 문자열 내 숫자 값 확인, 진수변환등, 기본유형은 null일수 없으나 래퍼클래스는 보유가능. 이런것들을 오토박싱(int->Integer) 언박싱(Integer->int) 해주는 기능탑재.
- Enum class - 상수모음
- util.Arrays - copyOf(arr,index) 카피하고자하는 arr 범위 초과한 index 입력시 0으로 채워짐 -1은 오류, 자료형마다 다름 copyOfRange,fill, binarySearch,sort,toString(arr),
- util.Objects - equals,deepEquals,isNull,
*정규표현식 regex(유튭+사이트연습), - util.Scanner - next,nextLine,nextInt,nextBoolean,hasNext,close
- util.StringTokenizer - hasMoreTokens,hasMoreElements,nextToken,nextToken(구분자),nextElement,countTokens
- util.Random - nextBoolean,nextInt( ),nextInt(int bound)<n미만,nextInt( , ), nextFloat <0.0이상1.0미만 , nextGaussian // Math.Random() 이랑 다름
- util.Calendar - getTime, set( 연,월,일), get( Calendar.MONTH/DATE/YEAR/DECEMBER....~)
- io - BufferdReader, BufferedWriter < 스캐너보다 많은양 빠르게? 입력받을수있는데 파싱안되는 그런 뭐 그런거있대
- time - LocalDate, LocalTime <불변성때문에 더하고 빼고 해도 인스턴스는 변하지 않음. 새로운 인스턴스생성및반환
- static 메서드 내부에서는 일반 멤버변수 참조 불가! static 멤버 변수만 참조가능 당연한거임!
- static은 클래스 선언에 안되지만 final은 가능. final 클래스는 상속불가 당연한거임! ㅠ..
- 제어자 사용대상 클래스(public,default,final,abstract),메서드(모든제어자o),멤버변수(public,default,protected,private,final,static),일반변수(final). 접근+기타 제어자 조합 가능하다. abstract는 상속해야하는데 final static private과 같은 제어자랑은 당연히 못쓴다.
- 인스턴스 초기화 블록은 인스턴스 생성시에 생성자보다 먼저 실행! 클래스 인스턴스를 하나 생성하는데 이 생성할때 여러가지 뭔가 장치를 하기 위해 탄생. 써봐야알겠다
- 이너클래스 종류(인스턴스(밖private멤버에 접근가능,메서드마냥),정적(static으로 선언 static멤버만 접근가능),지역(메서드,초기화블록 내부에 선언.일반지역변수랑 비슷하게 해당 블록에서만 사용가능),익명(한번만 사용할때 선언,클래스 정의와 인스턴스 생성 동시에 진행)) -> 써봐야 알듯.
- 인터페이스 - 클래스 상속extends 와 다르게 다중구현이 가능하다. 상속과 동시에 구현이 가능하다
(이거 상속도 마찬가지 아님..?),인터페이스끼리 상속할때는 extends 사용한다. 멤버변수를 가지지 않으나 public static final 제어자를 가진 인터페이스 상수는 정의할수 있다. - 인터페이스 vs 추상클래스 - 일반멤버변수 선언 가능여부(x,o), 구현이 포함된 메서드 작성가능여부 (x,o) ,다중구현 가능여부 (o,x)-> 일반멤버변수가 선언이 가능하면 상속시 누굴 따라야하는지 문제가 생김. 근데 최근에 default,static 메서드를 인터페이스에 구현까지 가능하게 됨. 변수랑 상관없어서긍가? static은 이해하겠는데
디폴트는 상속시 또 문제생기는거 아님? - 패키지-폴더
- 디자인패턴 - 생구행23가지 그중 싱글턴 패턴 - 단 하나의 객체만을 생성하여 사용하는 패턴. 외부에서 생성을 막음. 최초 생성도 getInstance() 메서드로 진행해야함. 게임 전체를 관리하는 객체 등
- SOLID 원칙 - 나중에하자
- 클래스변수 즉 static 변수는 클래스 내 메소드에서 어디서든 this 객체로 접근할 수 없음. static 메소드는 클래스 자체에서 접근 가능! Class.메소드 가능하단소리
코테부분?
- 아 날아가버렸다 열심히 썻는데...
- 무튼 게임 만드는 코딩을 구현하는데 클래스별 차별점 두고 final로 마지막 직업은 상속 막기도 하고 static final로 MAX HP MP같은거 지정해서 막고 그런거 해줌. 직업별 스킬은 다르게 구현할수 있게 추상메소드로 넘기고. 공통 캐릭터 부분은 추상클래스로 빼고 0이하로 값이 세팅되는 걸 막는 로직들을 구현. 이너클래스로 해당 직업 내에서만 사용하기 때문에 같이 관리해줘야하지만 내용이 많아 여러모로 class로 따로 관리하는게 더 좋은경우?
질문
+깃, 깃허브, 맥사용법익히기, CS책, 정처기실기준비
'새끼코딩오리' 카테고리의 다른 글
JAVA 국비 KDT 백엔드 온라인과정 4주차 정리 (1) | 2024.03.30 |
---|---|
JAVA 국비 KDT 백엔드 온라인과정 1주차 정리 (2) | 2024.03.16 |
국비지원 KDT 백엔드 과정 시작. 새끼코딩오리 도전 (0) | 2024.03.16 |