JAVA 헷 갈 려 요.
6249 단어 자바
문자열 상수
StringBuffer 문자열 변수: 스 레 드 보안: 다 중 스 레 드
StringBuilder 문자열 변수: 비 스 레 드 보안: 단일 스 레 드
String 은 문자 상수 이기 때문에 변화 가 필요 할 때 대상 을 다시 만들어 야 하고, 만 든 대상 이 많 을 때 jvm gc 에 의 해 떨 어 지면 느 려 집 니 다.
StringBuilder 와 StringBuffer 는 현재 대상 자 체 를 조작 하기 때문에 빠 릅 니 다.StringBuffer 는 스 레 드 가 안전 하기 때문에 스 레 드 를 통 해 동기 화 되 어 속 도 를 낮 추 었 습 니 다.
최종 속도 시합
StringBuilder>StringBuffer>String
2abstract 와 interface?
매개 변수
추상 류
인터페이스
기본 적 인 방법 실현
그것 은 기본 적 인 방법 으로 실현 할 수 있다.
인 터 페 이 스 는 완전히 추상 적 이다.그것 은 근본적으로 방법의 실현 이 존재 하지 않 는 다.
이루어지다
하위 클래스 는 extends 키 워드 를 사용 하여 추상 클래스 를 계승 합 니 다.하위 클래스 가 추상 류 가 아니라면 추상 류 에서 모든 성명 방법 을 제공 해 야 한다.
하위 클래스 는 키워드 implements 를 사용 하여 인 터 페 이 스 를 실현 합 니 다.그것 은 인터페이스 에 있 는 모든 성명 방법 을 제공 해 야 한다.
구조 기
추상 류 는 구조 기 가 있 을 수 있다.
인터페이스 에 구조 기 가 있어 서 는 안 된다.
정상 자바 류 와 의 차이
추상 류 를 예화 할 수 없 는 것 외 에 일반 자바 류 와 아무런 차이 가 없다.
인 터 페 이 스 는 완전히 다른 유형 이다.
접근 수정자
추상 적 인 방법 은 Public, proctected, default 등 수정자 가 있 을 수 있 습 니 다.
인터페이스 방법 은 기본 수정자 가 Public 입 니 다.너 는 다른 장식 부 를 사용 할 수 없다.
main 방법
추상 적 인 방법 은 main 방법 이 있 을 수 있 고 우 리 는 그것 을 실행 할 수 있다.
인 터 페 이 스 는 main 방법 이 없 기 때문에 우 리 는 그것 을 실행 할 수 없다.
다 상속
추상 적 인 방법 은 하나의 유형 을 계승 하고 여러 개의 인 터 페 이 스 를 실현 할 수 있다.
인 터 페 이 스 는 하나 이상 의 다른 인터페이스 만 계승 할 수 있다.
스피드
그것 은 인터페이스 속도 보다 빠르다.
인 터 페 이 스 는 클래스 에서 이 루어 지 는 방법 을 찾 는 데 시간 이 필요 하기 때문에 약간 느리다.
새로운 방법 추가
추상 류 에 새로운 방법 을 추가 하면 기본 적 인 실현 을 제공 할 수 있다.그래서 당신 은 현재 의 코드 를 바 꿀 필요 가 없습니다.
인터페이스 에 방법 을 추가 하려 면 이 인 터 페 이 스 를 실현 하 는 종 류 를 바 꿔 야 한다.
3Map 와 HashMap, Hashtable, HashSet 비교 array List 와 linkedList
HashMap 은 클래스 이 고 Map 은 인터페이스 HashMap 으로 인터페이스 Map 을 실현 했다. 즉, HashMap 은 Map 의 모든 방법 을 실현 했다.
HashMap 과 HashSet 하 나 는 Map 의 실현 클래스 이 고 하 나 는 Set 의 실현 클래스 입 니 다. HashSet 는 중복 을 허용 하지 않 습 니 다.
HashMap 과 HashTable
. HashTable 의 방법 은 동기 화 된 것 입 니 다. HashMap 은 동기 화 되 지 않 았 기 때문에 다 중 스 레 드 장소 에서 HashMap 을 수 동 으로 동기 화 하 는 것 은 Vector 와 Array List 와 같 습 니 다.(가장 중요 한 차이 점). HashTable 은 null 값 (key 와 value 모두 안 됨) 을 허용 하지 않 습 니 다. HashMap 은 null 값 (key 와 value 모두 가능 합 니 다. null 값 이 있 는 key 만 허용 하고 여러 개의 null 값 이 있 는 value) 을 허용 합 니 다.Hash Table 에 contains (Object) 가 있 습 니 다. value), 기능 및 contains Value (Object value) 기능 이 같 습 니 다.HashTable 은 Enumeration, HashMap 은 Iterator 를 사용 합 니 다.이상 은 표면적 인 차이 일 뿐, 그것들의 실현 도 매우 큰 차이 가 있다.HashTable 에서 hash 배열 의 기본 크기 는 11 입 니 다. 증가 하 는 방식 은? old*2+1.HashMap 에서 hash 배열 의 기본 크기 는 16 이 고 반드시 2 의 지수 입 니 다.해시 값 의 사용 이 다 릅 니 다. HashTable 은 대상 의 hashCode 를 직접 사용 합 니 다. 코드 는 다음 과 같 습 니 다. int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length;
그리고 HashMap 은 hash 값 을 다시 계산 하고 모델 을 대체 합 니 다. int hash = hash(k); int i = indexFor(hash, table.length);
4sleep 와 wait 잠 금
sleep 는 스 레 드 클래스 (Thread) 의 방법 으로 이 스 레 드 가 지 정 된 시간 을 일시 정지 시 키 고 실행 기 회 를 주 며 다른 스 레 드 에 게 모니터링 상 태 를 유지 합 니 다. 그 때 는 자동 으로 회복 되 고 sleep 를 호출 하면 대상 자 물 쇠 를 풀 지 않 습 니 다.대상 자 물 쇠 를 풀 지 않 았 기 때문에 동기 화 방법 을 사용 할 수 없습니다.
sleep 는 이상 을 포착 해 야 합 니 다. wait, notify, notify 모두 이상 을 포착 할 필요 가 없습니다.
하나의 스 레 드 의 운행 상태 제어, 하 나 는 스 레 드 간 의 통신 문제 이다.
wait, notify, notify All 은 동기 제어 방법 이나 동기 제어 블록 에서 만 사용 할 수 있 으 며, sleep 는 어디에서 나 사용 할 수 있 습 니 다.
자물쇠
(A 가 먼저 a 를 잠 그 고 b 를 잠 그 고 B 가 먼저 b 를 잠 그 고 a 를 잠 그 면) A 가 a 를 잠 그 고 B 가 b 를 잠 그 면 A 는 b 를 잠 글 수 없고 B 도 a 를 잠 글 수 없 으 며 이때 자물쇠 에 빠진다.
해결 방안
잠 금 을 피 하 는 일반적인 경험 법칙 은 몇 개의 스 레 드 가 공유 자원 A, B, C 에 접근 할 때 모든 스 레 드 가 같은 순서 로 방문 하도록 하 는 것 이다. 예 를 들 어 A 를 먼저 방문 하고 B 와 C 를 방문 하 는 것 이다.
5 2 점 찾기
public int binerysearch(int[] a,int b){
int low=0;
int high=a.length-1;
while (lowlength-1&&lowlength-1){
int min=(low+high)/2;
if (b==a[min]){
return min;
}else if (b1;
}else{
low=min+1;
}
}
return -1;
}
6 거품 정렬
public static void maopao(int[]a){
for (int i = 0; i length-1 ; i++) {
for (int j = 0; j length-i-j ; j++) {
if (a[j]1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
7 이 진 트 리 옮 겨 다 니 기
귀착 하 다
8 ArrayList 와 LinkedList 의 차이
arrylist 는 동적 배열 이 고 linked 는 링크 메모리 구조 로 방문 이 빈번 할 때 arraylist 효율 이 높 으 며 add 와 remove 에서 linkedList 효율 이 높 습 니 다.
9switch 는 어떤 데이터 형식 을 지원 합 니까?
byte, short, char, int, String, 매 거
10 시간 복잡 도와 공간 복잡 도
코드 실행 의 효율 을 간단하게 이해 하 는 데 소요 되 는 시간 은 시간 복잡 도 이 고 코드 실행 이 차지 하 는 메모리 공간 은 공간 복잡 도 이다.
11throw 와 throws
throw 는 함수 체 가 이상 을 던 져 야 한 다 는 것 을 나타 낸다.
throws 는 함수 헤드 에서 몇 가지 이상 을 던 질 수 있 음 을 표시 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.