Java는 완전한 객체지향 언어입니다. Java는 가상 머신의 실행 메커니즘을 통해 "크로스 플랫폼" 개념을 실현합니다. 여기에서는 모든 사람에게 유용할 수 있는 초보자 친화적인 튜토리얼을 제시하고 싶습니다.
"안녕하세요!"
먼저 HelloWorld.java 프로그램을 살펴보겠습니다. 이 프로그램은 "Hello World!"라는 문자열을 화면에 인쇄합니다.
다음과 같이 코드 코드를 복사합니다.
공개 클래스 HelloWorld
{
공개 정적 무효 메인(문자열[] 인수)
{
System.out.println("안녕하세요!");
}
}
이 프로그램에는 Java의 몇 가지 기본 기능이 포함되어 있습니다.
1. 클래스: 위 프로그램은 HelloWorld 클래스를 정의하고 있으며, 클래스 이름은 .java 파일 이름과 동일합니다.
2. 메소드: 클래스의 메인 메소드는 클래스 내부에 정의됩니다.
3. 명령문: 실제 "인쇄" 기능은 다음 명령문으로 구현됩니다. System.out.println("Hello World!");
다음 두 가지 사항은 Java 작성 방식과 관련이 있습니다.
1. Java의 명령문은 다음으로 끝나야 합니다(C/C++와 동일).
2. 중괄호 {}를 사용하여 명령문을 통합하여 프로그램 블록을 형성합니다. 프로그램 블록을 통해 클래스가 시작되는 위치와 끝나는 위치 등 프로그램의 다양한 부분의 범위를 알 수 있습니다.
컴파일 및 실행
Java 프로그램은 실행되기 전에 컴파일러에 의해 컴파일되어야 합니다. Linux 또는 Mac에서는 Java JDK를 다운로드하여 설치할 수 있습니다.
javac를 사용하여 컴파일합니다. 컴파일하려면 명령줄에 다음 문을 입력합니다.
다음과 같이 코드 코드를 복사합니다.
$javac HelloWorld.java
현재 경로 아래에 HelloWorld.class라는 파일이 생성됩니다.
java 명령을 사용하여 실행합니다. Java는 클래스에서 기본 메소드를 검색하여 실행합니다.
다음과 같이 코드 코드를 복사합니다.
$java 헬로월드
변하기 쉬운
컴퓨터 언어는 일반적으로 C 언어의 변수처럼 데이터를 메모리에 저장해야 하는데, 자바에도 비슷한 변수가 있습니다. Java와 C는 모두 정적으로 유형이 지정된 언어입니다. 변수를 사용하기 전에 해당 유형을 선언하십시오.
변수는 일정량의 메모리 공간을 차지합니다. 다양한 유형의 변수는 다양한 크기를 차지합니다. Java의 변수 유형은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
이름 저장 크기 예시 값 주석
바이트 1바이트 3바이트
int 4bytes 3 정수
짧은 2바이트 3개의 짧은 정수
긴 8바이트 3 긴 정수
float 4bytes 1.2 단정밀도 부동 소수점 숫자
double 8bytes 1.2 배정밀도 부동 소수점 숫자
char 2바이트 'a' 문자
부울 1비트 참 부울 값
Java에서는 변수를 사용하기 전에 변수를 선언해야 합니다. 선언부에는 변수의 유형을 명시하고 나중에 프로그램에서 호출할 수 있도록 특별한 이름을 지정합니다. 프로그램의 어느 곳에서나 변수를 선언할 수 있습니다.
예를 들어:
다음과 같이 코드 코드를 복사합니다.
공개 수업 테스트
{
공개 정적 무효 메인(문자열[] 인수)
{
System.out.println("중간 선언:");
정수 a;
a = 5;
System.out.println(a); // 정수를 인쇄합니다.
}
}
위의 A는 변수 이름입니다. int a = 5와 같이 변수를 선언하는 동안 변수에 값을 할당할 수 있습니다.
*** "변수"의 개념은 실제로 절차적 프로그래밍 언어에서 유래되었습니다. Java에서는 소위 변수가 실제로 "기본 유형"입니다. 클래스에 대한 설명에서 더 깊이 들어가겠습니다.
또한 위 프로그램을 보면 Java에서 //를 사용하여 주석을 달 수 있다는 것을 알 수 있습니다.
정렬
Java에는 배열이 있습니다. 배열에는 동일한 유형의 여러 데이터가 포함되어 있습니다. 정수 배열을 선언하려면 다음 방법을 사용합니다.
다음과 같이 코드 코드를 복사합니다.
int[] a;
배열에 필요한 공간은 배열이 선언될 때 배열에 실제로 할당되지 않습니다. 선언과 동시에 new를 사용하여 배열에 필요한 공간을 만들 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
int[] a = 새로운 int[100];
여기서는 100개의 정수를 담을 수 있는 배열을 만듭니다. 해당 메모리 할당도 완료됩니다.
선언과 동시에 배열에 값을 할당할 수도 있습니다. 동시에 배열의 크기도 결정됩니다.
다음과 같이 코드 코드를 복사합니다.
int[] a = 새로운 int[] {1, 3, 5, 7, 9};
int[i]를 사용하여 배열의 i-인덱스 요소를 호출합니다. 나는 0부터 시작해요.
다른 유형의 배열은 정수 배열과 유사합니다.
표현
표현식은 데이터 조각을 나타내는 변수, 상수 및 연산자의 조합입니다. 1+1은 흔한 표현이다. 또 다른 예:
다음과 같이 코드 코드를 복사합니다.
공개 수업 테스트
{
공개 정적 무효 메인(문자열[] 인수)
{
System.out.println("중간 선언:");
정수 a;
a = 5 + 1;
System.out.println(a); // 정수를 인쇄합니다.
}
}
위의 5 + 1은 6과 같은 표현식이기도 합니다.
수학적 표현
수학 연산의 결과는 숫자 값입니다. 복사 코드는 다음과 같습니다.
1 + 2 추가
4 - 3.4 뺄셈
7 * 1.5 곱하기
3.5/7 분할
7 % 2 나머지를 구하세요
관계 표현
식이 참인지 확인합니다. 즉, true 또는 false인 부울 값입니다. 복사 코드는 다음과 같습니다.
a > 4.2는 다음보다 큽니다.
3.4 >= b보다 크거나 같음
1.5 < 9 미만
6 <= 1보다 작거나 같음
2 == 2는 다음과 같습니다.
2 != 2는 다음과 같지 않습니다.
부울 표현식
두 부울 값의 AND, OR, NOT 간의 논리적 관계는 다음과 같습니다.
참 && 거짓 그리고
(3 > 1) || (2 == 1) 또는
!사실 아니야
비트 연산
정수의 이진 형식에 대해 비트 단위로 논리 연산을 수행하여 정수를 얻습니다. 복사 코드는 다음과 같습니다.
& 그리고
또는 |
^ 소르
~ 아니다
5 << 3 0b101 왼쪽 시프트 3비트
6 >> 1 0b110 오른쪽 시프트 1비트
C에는 다음과 같은 일반적인 연산자도 있는데, 이를 사용할 때 더 자세히 설명하겠습니다.
다음과 같이 코드 코드를 복사합니다.
m++는 변수 m에 1을 더합니다.
n-- 변수 n 빼기 1
조건 ? x1 : x2 조건은 부울 값입니다. 조건에 따라 x1 또는 x2의 값을 취합니다.
제어 구조
Java의 제어 구조(제어 흐름) 구문은 C와 유사합니다. 이들은 모두 {}를 사용하여 소속을 표현합니다.
선택(if)
다음과 같이 코드 코드를 복사합니다.
만약 (조건1) {
진술;
...
}
else if (조건2) {
진술;
...
}
또 다른 {
진술;
...
}
위의 조건은 참(True) 또는 거짓(False) 값을 나타내는 표현식입니다. 진술은 진술입니다.
2013년이 윤년인지 확인하기 위해 Java 프로그램 작성을 연습해 보세요.
루프(동안)
다음과 같이 코드 코드를 복사합니다.
동안(조건) {
진술;
}
루프(do... while)
다음과 같이 코드 코드를 복사합니다.
하다 {
진술;
} while(condition); // 결말에 주의하세요.
루프(용)
다음과 같이 코드 코드를 복사합니다.
for (초기; 조건; 업데이트) {
진술;
}
루프 건너뛰기 또는 중단
루프에서 다음과 같이 복사된 코드 코드를 사용할 수 있습니다.
break; // 루프를 빠져나옵니다.
continue; // 다음 루프로 바로 이동합니다.
1에서 2, 3... 그리고 999까지 합계를 계산하는 Java 프로그램 작성을 연습하세요.
선택(전환)
다음과 같이 코드 코드를 복사합니다.
스위치(표현식) {
사례 1:
진술;
부서지다;
사례 2:
진술;
부서지다;
...
기본:
진술;
부서지다;
}
객체지향
"객체"는 컴퓨터가 세상을 추상화하는 방법입니다. "객체 지향"은 다양한 방식으로 표현될 수 있습니다. 다음은 부정확하지만 보다 직관적으로 이해하는 방법입니다.
1. 세상의 모든 것은 장산(張san)과 같이 사물이라고 부를 수 있다. 객체에는 ID, 상태 및 동작이 있습니다.
2. 객체의 상태는 데이터 멤버로 표현됩니다. 데이터 멤버를 필드라고도 합니다. 우리는 다른 객체를 이 객체의 데이터 멤버로 사용합니다. 예를 들어 코와 같이 높이를 나타내는 정수입니다.
3. 객체의 동작은 멤버 메소드로 표현됩니다. 줄여서 메소드라고 부릅니다. 객체에는 호흡, 수면 등 다양한 방법이 있을 수 있습니다.
4. 객체는 분류(class)될 수도 있고, 동일한 유형(type)으로 분류될 수도 있습니다. 동일한 유형의 개체에는 동일한 유형의 동일한 메서드와 데이터 멤버가 있습니다. 특정 유형의 객체를 해당 유형의 인스턴스라고 합니다.
클래스와 객체
클래스 정의 구문:
다음과 같이 코드 코드를 복사합니다.
클래스 클래스명
{
회원1;
회원2;
...
}
우리는 인간 클래스를 정의합니다:
다음과 같이 코드 코드를 복사합니다.
수업인간
{
공허한 숨()
{
System.out.println("후...후...");
}
정수 높이;
}
{} 범위에서 Human 클래스에는 두 개의 멤버, 즉 데이터 멤버 높이와 Breath() 메서드가 있습니다.
1. 데이터 멤버 높이는 정수형이며 정수를 저장하는 데 사용할 수 있습니다.
2. 메소드는 객체가 수행할 수 있는 작업, 즉 컴퓨터가 수행할 수 있는 작업을 나타냅니다. 메소드는 매개변수를 승인하고 값을 반환할 수 있습니다. Breath()의 정의에서 Breath 뒤의 ()가 매개변수 목록입니다. 매개변수 목록이 비어 있으므로 Breath()는 매개변수를 허용하지 않습니다. Breath() 앞의 void는 반환 값 유형으로, Breath가 값을 반환하지 않음을 나타냅니다.
(이 방법은 절차적 언어의 함수와 유사합니다.)
이제 aPerson 객체를 생성하고 객체의 메소드 Breath를 호출합니다.
다음과 같이 코드 코드를 복사합니다.
공개 수업 테스트
{
공개 정적 무효 메인(문자열[] 인수)
{
인간 aPerson = 새로운 인간();
aPerson.breath();
System.out.println(aPerson.height);
}
}
수업인간
{
공허한 숨()
{
System.out.println("후...후...");
}
정수 높이;
}
기본 메소드에서는 new 키워드를 사용하여 객체를 생성합니다. 같은 클래스의 객체라도 각 객체가 차지하는 메모리가 다르다. 즉, 객체의 정체성도 다르다.
Human aPerson은 aPerson 객체가 객체의 유형을 나타내는 Human 클래스에 속한다고 선언합니다.
객체가 생성된 후 object.data 멤버를 사용하여 데이터 멤버를 참조하고 object.method()를 사용하여 메서드를 호출할 수 있습니다. 나중에 aPerson.height를 인쇄합니다.
요약
Java의 많은 구문 형태는 C/C++와 유사하지만 세부 사항 및 구체적인 구현에 차이가 있으므로 주의가 필요합니다.
객체, 클래스 객체: 메소드, 필드(데이터 멤버)
Java는 완전한 객체지향 언어입니다.