객체지향(2)
이것: 객체를 나타냅니다. 그것은 어떤 물체를 나타내는가? 현재 객체.
멤버 변수와 지역 변수의 이름이 같은 경우 this 키워드를 사용하여 구분할 수 있습니다.
함수가 속한 객체에 대한 참조입니다. (간단히 말하면, 어떤 객체가 이것이 위치한 함수를 호출하는지, 이는 해당 객체를 나타냅니다.)
이것은 생성자에서 다른 생성자를 호출하는 데에도 사용할 수 있습니다. 참고: 생성자의 첫 번째 줄에서만 정의할 수 있습니다. 초기화 작업을 먼저 수행해야 하기 때문입니다.
예: person(문자열 이름){this.name = 이름;}
person(문자열 이름,int age){this(name);this.age = age;}
일반적으로 이 클래스의 객체를 사용할 때는 이렇게 사용하는 경우가 많습니다.
static:
특징: 1.static은 멤버를 수정하는 데 사용되는 수정자입니다.
2. static으로 수정된 멤버는 모든 개체에서 공유됩니다.
3. 클래스가 로드될 때 정적 멤버가 이미 존재하므로 객체보다 정적이 먼저 존재합니다.
4. static으로 수정된 멤버에는 추가 호출 방법이 있습니다. 즉, 클래스 이름.member 변수와 같이 클래스 이름으로 직접 호출할 수 있습니다.
5. 정적에 의해 수정된 데이터는 공유 데이터이고, 객체에 저장된 시간별 데이터는입니다.
참고: 멤버 변수는 인스턴스 변수라고도 하며, static으로 수정된 변수는 정적 변수 또는 클래스 변수라고 합니다.
멤버 변수와 정적 변수의 차이점:
1. 두 변수의 수명주기가 다릅니다.
멤버 변수는 객체 생성과 함께 존재하며, 객체가 재활용되면서 재활용 및 해제됩니다.
정적 변수는 클래스 로딩과 함께 존재하고, 클래스가 사라지면 사라집니다. 수업.
2. 호출 방법이 다릅니다.
멤버 변수는 객체로만 호출할 수 있습니다.
정적 변수는 객체 및 클래스 이름으로 호출할 수 있습니다(권장).
3. 별칭이 다릅니다.
멤버 변수는 인스턴스 변수라고 하며,
정적 변수는 클래스 변수라고 합니다.
4. 데이터 저장 위치가 다릅니다.
멤버 변수 데이터는 힙 메모리의 객체에 저장되므로 객체별 데이터라고도 합니다.
정적 변수 데이터는 메소드 영역(공유 데이터 영역)의 정적 영역에 저장되므로 객체의 공유 데이터라고도 합니다.
정적 사용에 대한 참고 사항:
1. 정적 메서드는 정적 멤버에만 액세스할 수 있습니다. (비정적은 정적 및 비정적 모두에 액세스할 수 있음) (참고: 동일한 클래스의 컨텍스트에서 정적 메서드는 이 클래스의 정적 멤버만 호출할 수 있습니다.)
2. 정적 메서드 this 또는 super 키워드는 에서 사용할 수 없습니다.
3. 주요 기능은 정적입니다.
정적은 언제 사용되나요?
1. 정적 변수.
분석 개체의 멤버 변수가 모두 동일할 경우 이 멤버 변수를 정적으로 수정할 수 있습니다.
객체 내 데이터가 다른 한, 이는 객체의 고유한 데이터이므로 객체에 저장되어야 하며 비정적입니다.
동일한 데이터라면 객체를 수정할 필요 없이 사용하기만 하면 됩니다. 객체에 저장할 필요도 없고 static으로 정의되어 있습니다.
2. 정적 기능.
함수가 정적으로 수정되는지 여부에 관계없이 유일한 참조 지점은 함수가 객체의 고유 데이터에 액세스할 수 있는지 여부입니다.
간단히 말하면, 함수가 비정적 멤버 변수에 액세스해야 하는지 확인하세요. 그렇지 않은 경우 함수는 정적으로 정의될 수 있습니다.
물론 이 함수도 non-static으로 정의할 수 있지만 non-static은 객체에 의해 호출되어야 하고, Unique에 접근하지 않고 비정적 메소드 호출만을 위해 객체를 생성하는 것은 의미가 없습니다. 데이터.
주요 기능의 특징:
1. 형식이 고정되어 있습니다. 2. jvm에서 인식하고 호출합니다.
공개: 권한이 가장 커야 하기 때문이죠.
정적: 객체가 필요하지 않으면 주 함수의 클래스 이름으로 직접 호출하면 됩니다.
void: 기본 함수에는 특정 반환 값이 없습니다.
main: 함수 이름, 키워드가 아니라 jvm이 인식하는 고정 이름입니다.
String[] args: 메인 함수의 매개변수 목록이며, 배열형 매개변수이며, 요소는 모두 문자열 유형입니다. (메인 함수를 호출할 때 전달될 수 있습니다. 예: java mainDemo xx yy zz는 3개의 요소가 전달된 문자열 배열입니다.)
정적 코드 블록 구성 코드 블록 로컬 코드 블록:
정적 코드 블록: 클래스가 로드될 때 실행됩니다. 그리고 한 번만 실행되었습니다. 기능: 클래스를 초기화하는 데 사용됩니다.
구성 코드 블록: 객체가 생성될 때 실행되고, 객체가 생성될 때 여러 번 호출됩니다. 기능: 모든 개체에 대해 초기화할 수 있습니다. (생성자와의 차이점: 생성자는 해당 객체의 대상 초기화를 수행합니다. 생성 코드 블록 객체 초기화는 보편적입니다.)
로컬 코드 블록의 역할: 로컬 변수의 수명주기를 제한합니다.
세 가지의 호출 순서는 다음과 같습니다.
class StaticCode { static int num ; //静态代码块 (首先执行) static { num = 10; // num *=3; System.out.println("hahahah"); } StaticCode(){} static void show() { System.out.println(num); } } class Person { private String name; {//构造代码块。可以给所有对象进行初始化的。(如有调用对象,即其次调用,与局部代码块视情况而定) System.out.println("constructor code "); // cry(); } static { System.out.println("static code"); } Person()//是给对应的对象进行针对性的初始化。 { name = "baby"; // cry(); } Person(String name) { this.name = name; // cry(); } public void cry() { System.out.println("哇哇"); } public void speak() { System.out.println("name:"+name); } static void show() { System.out.println("show run"); } } class StaticCodeDemo { static { // System.out.println("a"); //先执行 } public static void main(String[] args) { // Person p = null; // p.speak(); // Person.show(); // Person p1 = new Person(); // p1.speak(); // Person p2 = new Person("旺财"); // p2.speak(); // new Person(); // new StaticCode().show(); // new StaticCode().show(); // StaticCode.show(); // System.out.println("b"); //后执行 } }
위는 Java(8) JavaSE 버전 - 정적 컨텐츠에 대한 기본 입문 에세이입니다. PHP 중국어 웹사이트(www.php.cn)에 주목하세요!

클래스 로더는 통합 클래스 파일 형식, 동적로드, 부모 위임 모델 및 플랫폼 독립적 인 바이트 코드를 통해 다른 플랫폼에서 Java 프로그램의 일관성과 호환성을 보장하고 플랫폼 독립성을 달성합니다.

Java 컴파일러가 생성 한 코드는 플랫폼 독립적이지만 궁극적으로 실행되는 코드는 플랫폼 별입니다. 1. Java 소스 코드는 플랫폼 독립적 인 바이트 코드로 컴파일됩니다. 2. JVM은 바이트 코드를 특정 플랫폼의 기계 코드로 변환하여 크로스 플랫폼 작동을 보장하지만 성능이 다를 수 있습니다.

멀티 스레딩은 프로그램 대응 성과 리소스 활용을 향상시키고 복잡한 동시 작업을 처리 할 수 있기 때문에 현대 프로그래밍에서 중요합니다. JVM은 스레드 매핑, 스케줄링 메커니즘 및 동기화 잠금 메커니즘을 통해 다양한 운영 체제에서 멀티 스레드의 일관성과 효율성을 보장합니다.

Java의 플랫폼 독립성은 작성된 코드가 수정없이 JVM이 설치된 모든 플랫폼에서 실행될 수 있음을 의미합니다. 1) Java 소스 코드는 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 JVM에 의해 해석되고 실행됩니다.

javaapplicationscanindeedencounterplatform-specificissuesdespitetejvm'sabstraction.ressistinclude : 1) nativecodeandlibraries, 2) OperatingSystemDifferences, 3) jvmimplementationvariations, 및 4) 어려운 의존성, 개발자, 1)

클라우드 컴퓨팅은 Java의 플랫폼 독립성을 크게 향상시킵니다. 1) Java Code는 바이트 코드로 컴파일되어 다른 운영 체제에서 JVM에 의해 실행되어 크로스 플랫폼 작동을 보장합니다. 2) Docker 및 Kubernetes를 사용하여 Java 응용 프로그램을 배포하여 휴대 성 및 확장 성을 향상시킵니다.

Java'SplatformIndencealLowsDeveloperstowStowRiteCodeOntOnitOniNanyDeviceOroswithajvm. ThisIsachieAdthroughCompilingTobyTecode, thejvMIngretSorcompileStruntime.thistureatureDificallyNatlyBoostedjava'SADOPTIONDUOCROSS-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PPLATION

Docker와 같은 컨테이너화 기술은 Java의 플랫폼 독립성을 대체하기보다는 향상됩니다. 1) 환경 간 일관성을 보장, 2) 특정 JVM 버전을 포함한 종속성 관리, 3) 배포 프로세스를 단순화하여 Java 응용 프로그램을보다 적응 가능하고 관리 할 수 있도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
