AVA 기본 지식 요약
독립 오리지널 프로그램에는 공개 수업은 하나만 있을 수 있지만, 비공개 수업은 여러 개 있을 수 있습니다.
또한 Java 프로그램에 공개된 클래스가 없으면 Java 프로그램의 파일 이름을 임의로 지정할 수 있습니다.
문서 주석은 하나의 슬래시와 두 개의 별표(/**), 별표, 슬래시 하나(*/)로 끝납니다. 이러한 방식으로 주석이 달린 콘텐츠는 프로그램의 공식 문서로 해석되며 프로그램의 계층 구조와 메서드를 설명하기 위해 javadoc와 같은 도구로 생성된 문서에 포함될 수 있습니다. 최대값에 대한 코드는 MAX_VALUE이고 최소값은 MIN_VALUE입니다. 특정 유형의 최대값 또는 최소값을 얻으려면 해당 코드 앞에 해당 유형이 속한 클래스의 전체 이름을 추가하면 됩니다.
f 페이지 변경\ 백슬래시
b go back one space' 작은따옴표
r return" 큰따옴표
데이터 유형의 변수가 프로그램에 정의되어 있으므로 원하는 경우 다른 데이터 유형을 사용하여 표현하려면 Java
는 다음 조건이 충족될 때 자동으로 데이터 유형을 변환합니다.
1. 변환 전 데이터 유형이 변환 후 유형과 호환됩니다. > 2. 표현 범위. 변환된 데이터 유형이 변환 전 유형보다 큽니다
이 변수에 변수의 표현 가능한 범위를 넘어서는 값이 할당되면 이 변환을 축소 변환이라고 하며 데이터의 정확성이 떨어질 수 있습니다. Java는 이러한 유형의 변환을 자동으로 수행하지 않습니다.
+3; // 양수를 의미합니다.
우선순위 연산자 클래스 결합성
1 () 대괄호 연산자 왼쪽에서 오른쪽으로
1 [] 대괄호 연산자 왼쪽에서 오른쪽으로
2 !, +(양수 기호) ), - (음수 기호) 오른쪽에서 왼쪽으로 단항 연산자
2 ~ 오른쪽에서 왼쪽으로 비트 논리 연산자
2 ++, -- 오른쪽에서 왼쪽으로 증가 및 감소 연산자
3 *, /, % 왼쪽에서 오른쪽으로의 산술 연산자
4 +, - 왼쪽에서 오른쪽으로의 산술 연산자
5 <<, >> 왼쪽에서 오른쪽으로의 비트 왼쪽 시프트 및 오른쪽 시프트 연산자
6 > , >=, <, <= 왼쪽에서 오른쪽으로 관계 연산자
7 ==, != 왼쪽에서 오른쪽으로 관계 연산자
8 & (비트 연산자 AND) 왼쪽에서 오른쪽으로 비트 논리 연산자
9 ^(비트 연산 기호 XOR) 왼쪽에서 오른쪽으로 비트 논리 연산자
10 |(비트 연산 기호 OR ) 왼쪽에서 오른쪽으로 비트 논리 연산자
11 && 왼쪽에서 오른쪽으로 논리 연산자
12 || 논리 연산자는 왼쪽에서 오른쪽으로
13 ?: 조건 연산자는 오른쪽에서 왼쪽으로
14 = 할당 연산자는 오른쪽에서 왼쪽으로
1. 더 많은 바이트를 차지하는 유형 2. 문자 유형이 int 유형으로 변환됩니다.
4. 다른 피연산자도 double로 변환됩니다
5. 다른 유형으로 변환할 수 없습니다.
switch 문의 선택 값은
입니다. 1. 처음 for 루프에 들어갈 때 루프 제어 변수에 시작 값을 지정합니다.
2. 판단 조건 값에 따라 루프를 계속 실행할지 여부를 확인합니다.
가 참(true)
이면 루프 본문의 명령문을 계속 실행하고, 판단 조건 값이 거짓(false)이면 루프
에서 벗어나 다른 명령문을 실행합니다.
3. 루프 본문의 명령문을 실행한 후 루프 제어 변수는 증가 또는 감소 요구 사항에 따라 루프
제어 변수의 값을 변경한 다음 2단계로 돌아가서 여부를 다시 판단합니다. 루프를 계속 실행합니다.
System.arrayCopy(source,0,dest,0,x): 문의 의미는 다음과 같습니다. 인덱스 0
에서 시작하는 소스 배열의 x 요소를 대상 배열로 복사합니다. 대상 배열의 하단 마크 0에 해당하는 위치에서 액세스가 시작됩니다.
Arrays.sort(배열 이름)는 배열을 정렬하는 작업입니다
자바에서는 2차원 배열의 각 행에 있는 요소의 개수가 다를 수 있도록 허용한다는 점이 일반적인 것과 다릅니다. 프로그램
언어가 다릅니다.
"익명 개체"는 이름에서 알 수 있듯이 명시적인 선언이 없는 개체입니다. 독자들은
을 한 번만 사용되는 객체, 즉 특정 객체 이름이 이를 지칭하지 않는 객체로 간단히 이해할 수도 있습니다.
객체를 비교하는 방법에는 두 가지가 있는데, "==" 연산자와 equals() 메서드입니다. "=="
연산자는 두 개체의 메모리 주소 값을 비교하는 데 사용됩니다. 객체가 같은지 여부에 관계없이 equals() 메서드는 두 객체의 내용이 일치하는지 비교하는 데 사용됩니다.
이것은 현재 객체를 나타내며
소위 현재 객체는 클래스의 메소드나 속성을 호출하는 객체를 의미합니다.
특정 구성 메서드를 사용하여 프로그램에서 다른 구성 메서드를 호출하려는 경우 이를 사용하여 구체적인
호출 형식은 다음과 같습니다.
this() ;
클래스의 모든 메소드 중에서 생성자만 먼저 호출되므로 이를 사용하여 생성자를 호출하는 것은 반드시 생성자의 첫 번째 줄에만 배치할 수 있습니다. 클래스는 메소드 본문에 포함되지 않은 정적 코드 블록을 사용할 수 있습니다. , 클래스가 로드되면 정적 코드 블록이 실행되고 한 번만 실행됩니다. 정적 코드 블록은 클래스 속성을 초기화하는 데 사용되는 경우가 많습니다. 이 부분을 더 잘 이해하려면 더 많은 Java 비디오 튜토리얼을 시청하세요.
생성자가 비공개라고 해서 반드시 이 클래스가 인스턴스화된 객체를 생성할 수 없다는 의미는 아닙니다. 단지 인스턴스화된 객체가 생성되는 위치가 변경되었음을 의미할 뿐입니다. 이 수업.
내부 클래스를 선언하면 프로그램의 구조가 파괴되므로 독자는 개발 중에 이를 사용하지 않는 것이 좋습니다.
static을 사용하여 내부 클래스를 선언할 수도 있습니다. static으로 선언된 내부 클래스는 외부 클래스가 되지만 static으로 선언된 내부 클래스는 비정적 외부 클래스 속성에 액세스할 수 없습니다.
내부 클래스는 객체를 생성하여 외부 클래스에서도 호출할 수 있습니다. 내부 클래스를 공개로 선언하면
첫 번째 부분에서 언급한 바와 같습니다. Java 비디오의 Java에서는 세 가지 형태의 주석을 지원합니다. 처음 두 개는 // 및 /*… */입니다.
세 번째 방법은 문서 주석입니다. "/**"시작"*/" 플래그로 끝납니다. 문서 주석은
프로그램 정보를 프로그램에 포함시키는 기능을 제공합니다. 개발자는 javadoc 도구를 사용하여 정보를 추출한 다음
HTML 파일로 변환할 수 있습니다.
하위 클래스 객체가 인스턴스화되면 기본적으로 먼저 상위 클래스의 생성자 메서드를 호출한 다음
이 클래스에서 해당 생성자 메서드를 호출합니다.
super를 사용하여 상위 클래스의 생성자를 호출하는 것은 프로그램의 첫 번째 줄에만 배치할 수 있습니다.
인터페이스의 데이터 멤버는 초기화되어야 하며 모든 데이터 멤버는 상수입니다.
2. 인터페이스의 모든 메소드는 추상으로 선언되어야 합니다. 즉, 인터페이스는
추상 클래스와 같은 일반 메소드를 가질 수 없지만 모두 "추상 메소드"여야 합니다.
인터페이스도 일반 클래스와 마찬가지로 데이터 멤버와 메서드가 있지만 데이터 멤버에는 초기값이 할당되어야 하며
이 값은 변경할 수 없습니다
인터페이스 클래스는 하나의 상위 클래스만 상속할 수 있지만 클래스가 여러 개의 추상 메소드를 상속해야 하는 경우에는 불가능하므로 인터페이스라는 개념이 등장했습니다. 클래스는
하나의 상위 클래스만 상속할 수 있지만 여러 인터페이스를 구현할 수 있습니다.
마찬가지로 인터페이스 확장(또는 상속)도 키워드 확장을 통해 구현됩니다. 흥미롭게도
인터페이스는 여러 인터페이스를 상속받을 수 있습니다
상위 클래스는 자신의 클래스를 사용하여 자신의 개체를 인스턴스화하지만
자신의 하위 클래스가 누구인지 모르므로 변환해야 합니다. 오류가 발생할 수 있습니다.
instanceof를 사용하여 클래스가 특정 인터페이스를 구현하는지 여부를 확인하거나, 인스턴스 객체가 클래스에 속하는지 여부를 확인하는 데 사용할 수 있습니다.
앞서 언급했듯이 Object는 모든 클래스의 상위 클래스이고 toString() 메서드를 재정의해야 합니다.
독자가 JDK 매뉴얼을 확인하면 Object에서 이를 찾을 수 있습니다. 클래스에는 equals 메소드가 있는데, 이 메소드는
객체가 동일한지 비교하는 데 사용되며, 이 메소드는
인터페이스를 직접 인스턴스화할 수 없습니다
. 그러나 객체 다형성의 개념에 따라 인터페이스의 서브클래스를 통해 인스턴스화할 수 있습니다.
예외는 크게 두 가지 범주로 나눌 수 있습니다. lang.Exception 클래스 및 java.lang .Error 클래스. 두 클래스 모두
java.lang.Throwable 클래스를 상속받습니다.
클래스 메서드에서 예외를 발생시키기 위해 throw를 사용하는 경우
가 호출되는 곳에서 try-catch를 사용하여 명시적으로 잡아야 합니다.
jar 명령은 Java에서 제공되는 매우 유용한 명령으로, 많은 수의 클래스(.class 파일)
를 압축한 다음 .jar 파일로 저장하는 데 사용할 수 있습니다.
class class name extends Thread // Thread 클래스에서 하위 클래스 확장
{
Modifier run(){ // Thread 클래스의 run() 메서드를 재정의합니다.
// 스레드 프로그램;
}
}
start()를 사용하여 시작
Runnable 구현을 통해 구현할 수도 있습니다
Runnable 인터페이스에는 start() 메서드가 없습니다. , 따라서
Runnable 인터페이스를 구현하는 클래스는 여러 스레드를 시작하기 위해 Thread 클래스의 start() 메서드도 사용해야 합니다.
Thread 클래스는 Runnable 인터페이스를 구현합니다. 이는 Thread 클래스가
Runnable 인터페이스의 하위 클래스이기도 함을 의미합니다.
클래스가 Thread 클래스를 상속받은 후에는 이 클래스의 객체가 start() 메서드를 몇 번 호출하더라도 하나의 스레드만 실행됩니다.
new Thread(t).start();//여기서 t는 Runnable 인터페이스를 구현하는 클래스입니다
이런 방식으로 여러 번의 연속 호출 후에 데이터를 공유하는 여러 스레드가 생성됩니다
모든 스레드에는 일반적으로 생성, 준비, 실행 중, 차단 및 종료의 5가지 상태가 있습니다.
두 개의 Thread 개체가 동일한 이름을 가질 수 있지만 명확성을 위해 이를 피해야 합니다.
프로그램이 스레드 이름을 지정하지 않으면 시스템이 자동으로 스레드에 이름을 할당합니다.
isAlive() 메서드를 사용하여 스레드가 시작되었는지 테스트할 수 있습니다. 그리고 아직 시작 중이에요.
스레드 객체
가 시작하기 전에 setDaemon(true) 메서드를 호출하면(start() 메서드 호출) 이 스레드는 백그라운드 스레드가 됩니다.
프로세스에서 백그라운드 스레드만 실행 중인 경우 프로세스가 종료됩니다.
join() 메소드는 특정 스레드를 강제로 실행하는 데 사용됩니다(다음 스레드를 실행하기 전에 실행을 강제로 완료)
Thread 클래스에서 sleep이라는 스레드를 찾을 수 있습니다. (긴 밀리초) 정적 메서드, 이 메서드는
스레드를 휴면하는 데 사용됩니다.
스레드가 실행 중일 때 다른 스레드는 해당 Thread 객체의 Interrupt() 메서드를 호출하여
중단할 수 있습니다.
Thread 객체를 사용하여 isInterrupted() 메서드를 호출하여 각 스레드의 중단 상태를 확인할 수도 있습니다.
인터럽트 상태가 표시되면 스레드가 인터럽트 가능한 차단으로 실행될 때(일부 인터럽트는 인터럽트될 수 없음)
예외가 발생하고 현재 작업이 종료된 후 상태가 재설정됩니다.
synchronized(객체)
{
동기화가 필요한 코드;
}
동기화 모니터는 일반적으로 모든 객체에 의해 작동될 수 있다는 점에 유의해야 합니다. 고유한 상수라면 괜찮습니다.
일반적으로 동시에 액세스할 수 있는 공유 리소스를 사용하여 동기화 모니터 역할을 하는 것이 좋습니다.
코드 블록을 동기화하는 것 외에도 함수를 동기화할 수도 있습니다. 동기화가 필요한 함수
정의 앞에 동기화 키워드를 추가하면 됩니다.
wait() 메서드는 현재 스레드를 기다리게 하고 동기화 장치의 잠금을 해제합니다.
inform() 메서드는 동기화 장치에서 대기 중인 단일 스레드를 깨웁니다. 깨우기 선택은 임의적입니다.
informAll()은 대기 중인 모든 스레드를 깨웁니다.
스레드 수명 주기를 제어하는 방법에는 일시 중지 방법, 재개 방법, 중지 방법 등 여러 가지가 있습니다.
중지하면 교착 상태 발생을 피할 수 있지만 다른 단점도 있습니다. 스레드가 공유 데이터 세그먼트를 작동 중이고 작업이 완료되기 전에 "중지"되면 데이터가 불완전해집니다.
그림 9-11 쓰레드의 생명주기
런 메소드에서 루프 조건을 조절하여 쓰레드를 종료하는 방법을 독자분들께 추천드립니다
, 이는 실무에서 가장 일반적으로 사용되는 방법이기도 합니다.
StringBuffer 클래스는 내용이 변경될 수 있는 문자열에 사용됩니다. 다양한 유형의 데이터를 문자열에 추가하고
문자열의 원래 내용을 바꿀 수도 있습니다. .
실제 개발에서 문자열의 내용을 자주 변경해야 하는 경우 문자열의 내용이 변경될 수 있으므로 StringBuffer 클래스를 사용하여
을 구현하는 것을 고려해야 합니다. String 클래스보다 높습니다.
exit(int status) 메소드로 가상 머신을 미리 종료합니다. 예외가 발생하여 가상
머신을 종료하려면 0이 아닌 값을 매개변수로 전달하세요.
CurrentTimeMillis 메소드는 1970년 1월 1일 0:00:00 이후의 시간을 밀리초 단위로 반환하며, 이는 long 유형의 큰 값입니다.
런타임 클래스는 Java 명령 자체의 실행 프로세스를 캡슐화하며 해당 메소드의 대부분은 시스템
의 메소드와 중복됩니다. 런타임 인스턴스는 직접 생성할 수 없지만 정적 메서드 Runtime.getRuntime을 통해 실행 중인 런타임 개체에 대한 참조를 얻을 수 있습니다.
getInputStream() 메소드는 입력 스트림을 가져올 수 있습니다. 클라이언트의 Socket 객체에서 getInputStream()
메소드로 얻은 입력 스트림은 실제로 서버에서 다시 전송된 데이터 스트림입니다. getOutputStream() 메소드는
출력 스트림을 가져옵니다. 클라이언트 소켓 객체의 getOutputStream() 메소드가 반환하는 출력 스트림은
서버로 전송되는 데이터 스트림입니다.
소켓에는 연결 지향과 비연결이라는 두 가지 주요 작동 모드가 있습니다.
무연결 작업은 데이터그램 프로토콜을 사용합니다. 데이터그램은 이 전달에 대한 모든
정보를 포함하는 독립적인 단위입니다.
연결 지향 작업은 TCP 프로토콜을 사용합니다. 이 모드의 소켓은 데이터를 보내기 전에
대상 소켓과 연결을 설정해야 합니다. 연결이 설정되면 소켓은 스트림 인터페이스를 사용할 수 있습니다
위 내용은 Java 기본 지식에 대한 간략한 요약입니다. 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!