테스트입니다
servelt/jsp 를 시작으로 스프링부트 , spring data jpa 까지 하고나니 자바를 너무 까먹어버렸다...기초부터 다 작성은 하지 않고 복습하면서 잘까먹는것 위주로, 내가 다시 볼떄 바로 찾을수 있을정도로 중요한것만 적어야 겠다.
equals=문자열비교 (내용만비교)== 는 완전히 같은 것인지 비교할떄(주소까지)equalsIgnoreCcase() = 대소문자 구별 xswithc(조건식){ case 값1: break;}do{}while(); (끝에 ; 잊지 않도록 주의)break
최대값 최소값 구하기배열 정렬왼쪽과 오른쪽값을 비교해서 자리를 바꿔준다.계속 하다보면 맨오른쪽에 가장 큰값이 들어가게 된다.가장 큰값은 위치를 바꿀 필요가 없으므로length -1 을 해준다.랜덤으로 섞기이것도 비슷하다. math random 으로 랜덤값을 구한뒤 그값
자바를 어느정도 떼고(?) 웹 쪽을 공부를 시작한뒤 요즘 다시 자바 cheatshet를 작성하면서 복습하고 있다.정말 많이 까먹었다. 엄청 기초적인것도 까먹은게 많다. 복습하면서 java chet shet을 작성해야겠다.(웹 공부도 병행)
1.컴파일에러= 컴파일 시에 발생하는 오류2\. 런타임 에러= 실행 시에 발생하는 오류3\. 논리적 에러 = 실행은 되지만, 의도와 다르게 동작printStackTrace() = 예외발생 당시의 호출스택 에 있었던 메서드의 정보와 예외 메세지 화면에 출력getMessa
0.Collection(list, set 조상)1.List(순서 o , 중복 허용)2.set (순서 x , 중복 x)3.Map(키와 밸류값, 키는 중복 허용 x 밸류는 허용)vectorArrayListLinkedListHashSettreeSetHashMaptreeM
컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의하고, collecion 인터페이스에는 iterator(iterator을 구현한 클래스의 인스턴스)를 반환하는 iterator()을 정의 하고 있다.public interface Iterat
public interface Comparator{int compare(Object o1,Object o2);boolean equals(Object obj);}public interface Comparable{public int compareTo(Object o)} c
HashSet 은 set인터페이스의 가장 대표적인 컬렉션이며 중복된 요소를 저장하지 않으며 저장순서를 유지하지 않는다.저장 순서를 유지하고 싶으면 LinkedHashSet을 사용해야한다.중요 포인트는 Collections 클래스의 sort(List타입) 이기때문에 so
HashMap/Hashtable 의 관계는 vector 와 ArrayList와 같아서 Hashtable이 HashMap 의 구버전이라 생각하면 된다.Map 은 키(key) 와 값(valuse)를 묶어서 데이터(Entry)로 저장한다.HashMap은 키와 값을 각각 Ob
Collections 클래스 collection 인터페이스와 혼동하지말자 Arrays 배열과 같은 메서드 fill(), copy(), sort() binarySearch() 를 제공한다. 이 매서드들은 같은 기능을 하므로 설명은 생략 하겠다. 컬렉션의 동기화(sy
object 클래스의 보조 클래스로 모든 메서드가 static이다null체크에 유용하다.\-null이면 true 반환/ 아니면 falseisNull() 과 정 반대이다.\-해당 객체가 null이 아니어야 하는 경우에 사용\-만약 null이면 nullPointerExce
지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이댜.ArrayList의 경우 object\[] 타입이라 다양한 종류의 객체를 담을 수 있지만 보통 한 종류의 객체를 담는 경우가 많다. 그런데 꺼낼때마다 형변환을 하
toString()\-인스턴스 정보를 문자열로 반환하는 메서드(클래스이름,주소값)\-string 과 integer은 각각 문자열값, 정수값이 출력 된다\-재정의 가능equals()\-두인스턴스의 주소값 을 비교(내용 x) (true/false)\-물리적 동일성(주소비교
지네릭 타입과 원시 타입간의 형변환을 해보자경고가 발생하지만 가능하다지네릭 타입과 지네릭 타입 box = (box)objBox; //지네릭 타입-> 원시타입 ok. but 경고발생 ObjBox=(Box)box; // 원시타입- >지네릭 ok. but 경고발생 하
열거형은 잘 쓰지않아 가끔씩 나올때마다 까먹어서 찾아본다. 이번기회에 기록하고 모르면 이걸 찾아 쓰자서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할떄 사용하면 유요하다.자바의 열거형은 타입에 '안전한 열거형' 이라서 실제 값이 같아도 타입이 다르면
프로세스는 공장 쓰레드는 공장에서 일하는 일꾼 으로 생각하면 쉽다모든 쓰레드는 최소한 하나 이상의 쓰레드가 존재하며 개수는 제한되어 있지 않다.CPU의 코어 가 한번에 단 하나의 작업만 수행할 수 있으므로 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 일치한다.하
데몬쓰레드는 다른 일반쓰레드의 작업을 돕는 보조 쓰레드 이다.일반 쓰레드가 종료되면 데몬 쓰레드는 강제적으로 자동 종료 된다.(보조니까)데몬 쓰레드는 일반 쓰레드와 실행방법과 작성방법이 같다. 다만 쓰레드를 생성한 다음 실행하기전에 setDaemon(true)를 호출하
한 쓰레드가 특정 작업을 끝마치기 전가지 다른 쓰레드에 의해 방해받지 않도록 하는 것이 필요하다. 그래서 도입된 개념이 '임계영역' 과 '잠금(락,lock)'이다.공유 데이터를 사용하는 코드 영역을 임계 영역으로 지정해놓고, 공유 데이터(객체)가 가지고 있는 lock
volatile boolean suspended= false;volatile boolean stopped= false;멀티 코어 프로세서에서는 코어마다 별도의 캐시를 가지고 있다.코어는 메모리에서 읽어온 값을 캐시에 저장하고 캐시에서 값을 읽어 작업을 한다. 다시 같은
함수를 간단한 식으로 표현익명함수 이지만 익명객체이다메서드이름, 반환값있으면 return, 반환타입, 세미콜론 생략 가능오직 함수형 인터페이스로만 형변환 가능int max(int a, int b){ =====> (a,b)->a>b?a:breturn a>b
람다식으로 메서드를 간결하게 표현할수 있다. 하지만 람다식 마저 더 간단히 표현하는 '메서드 참조' 라는게 있다.람다식이 하나의 메서드만 호출하는 경우에만 사용 가능하다하나의 메서드만 호출하는 람다식은'클래스의 이름::메서드이름' 또는 '참조변수::메서드이름'으로 바꿀
지금까지 수많은 데이터들을 컬렉션이나 배열에 담고 for문을 돌리거나 iteraotr을 사용하는 코드를 작성했다. 이러한 방법은 머구 길고 알아보기 힘들다데이터 소스가 무엇이던 간에 같은 방식으로 다뤄 코드의 재사용성을 높이는 스트림 을 배워보자스트림을 사용하면 배열이
요소를 자를 떄 사용한다skip(3)은 처음 3개의 요소를 건너 띄고 , limit(5)는 스트림의 요소를 5개로 제한기본형 스트림에도 존재한다/ 반환값만 다름Stream<T> filter(Predicate<? super T> predicate)Stream
지네릭 클래스로 T타입의 객체 를 감싸는 래퍼 클래스이다.optional타입의 객체에는 모든 타입의 참조 변수를 담을수 있다.null을 직접 다루는건 위험 -> optional객체에 담아서 사용.Stream 최종 연산의 결과를 그냥 반환하는 게 아니라 Optional객
스트림은 기본 직력스트림이다.병렬 스트림은 parallel().foreach() //병렬이라 순서보장 xparalle().foreachOrederd() //병렬 +순서보장boolean allMatch (Predicate <? super T>predicate)//
Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다. 그러나 연산횟수가 많아지거나 멀티쓰레드,
개발을 하다보니 문뜩 내 코드가 너무 지저분하고 비효율 적인것 같다라는 생각이 들었다. 그래서 내가 사용하는 언어의 특징을 살려 최대한 효율적인 코드를 작성하기위해 복습겸 다시 학습을 해봤다코드 분석시간 증가 -> 변경시간 증가 -> 비용증가소프트웨어의 가치는 ‘얼마나
1.요구사항 (제공해야 할 기능) 을 찾고 세분화 한다. 그리고 그 기능을 알맞은 객체로 할당한다.2.기능을 구현하는 데에 필요한 데이터를 객체에 추가한다.3.해당 데이터를 이용하는 기능을 구현한다. (기능은 최대한 캡슐화)4.객체 간에 어떻게 메소드 호출을 주고받을