정적 변수

변수를 정적으로 선언하려면 static변수 선언에 keyword를 사용하십시오 정적 변수 구문은 다음과 같습니다.

예를 들어, 정수 유형의 공용 정적 변수는 이런 식으로 선언됩니다.

public static Integer staticVar;

정적 변수의 가장 중요한 점은 클래스 수준에 속한다는 것입니다. 이것이 의미하는 바는 런타임에 하나의 변수 복사본만 있을 수 있다는 것입니다. 클래스 정의에서 정적 변수를 정의하면 클래스의 각 인스턴스는 해당 단일 복사본에 액세스 할 수 있습니다. 클래스의 개별 인스턴스는 정적 변수가 아닌 것처럼 자체 로컬 복사본을 가지지 않습니다.

예를 들어 이해해 봅시다.


public class JavaStaticExample

{

    public static void main(String[] args)

    {

        DataObject objOne = new DataObject();

        objOne.staticVar = 10;

        objOne.nonStaticVar = 20;

         

        DataObject objTwo = new DataObject();

         

        System.out.println(objTwo.staticVar);       //10

        System.out.println(objTwo.nonStaticVar);    //null

         

        DataObject.staticVar = 30;  //Direct Access

         

        System.out.println(objOne.staticVar);       //30

        System.out.println(objTwo.staticVar);       //30

    }

}

 

class DataObject {

    public static Integer staticVar;

    public Integer nonStaticVar;

}

 

Output:

 

10

null

30

30 


값을 30으로 변경 한 방법에 주목하십시오. 그러면 두 객체 모두 30이라는 업데이트 된 값을 보게됩니다.

static변수 에 액세스하기 위해 인스턴스를 만들 필요가 없습니다 그것은 정적 변수가 클래스 범위에 속한다 는 것을 분명히 보여줍니다 .

정적 메서드

정적 메서드를 선언하려면 static메서드 선언에 keyword를 사용 합니다. 정적 메서드 구문은 다음과 같습니다.

예를 들어, 정수 유형의 공용 정적 변수는 이런 식으로 선언됩니다.

public static Integer getStaticVar(){

    return staticVar;

}


  1. 정적 메서드 내에서 정적 변수에만 액세스 할 수 있습니다 비 정적 변수에 액세스하려고하면 "비 정적 필드 nonStaticVar에 대한 정적 참조를 만들 수 없습니다 "라는 메시지와 함께 컴파일러 오류가 생성됩니다 .
  2. 정적 메서드는 클래스 참조를 통해 액세스 할 수 있으므로 클래스 인스턴스를 만들 필요가 없습니다. 인스턴스 참조를 사용하여 액세스 할 수 있지만 클래스 참조를 통한 액세스와 비교할 때 차이는 없습니다.
  3. 정적 메서드는 클래스 수준 범위에도 속합니다.

 public class JavaStaticExample

{

    public static void main(String[] args)

    {

        DataObject.staticVar = 30;  //Direct Access

         

        Integer value1 = DataObject.getStaticVar(); //access with class reference

 

        DataObject objOne = new DataObject();

        Integer value2 = objOne.getStaticVar();     //access with instance reference

         

        System.out.println(value1);

        System.out.println(value2);

    }

}

 

class DataObject

{

    public Integer nonStaticVar;

    public static Integer staticVar;    //static variable

     

    public static Integer getStaticVar(){

        return staticVar;

    }

}

 

Output:

 

30

30


정적 블록

정적 블록은 클래스 초기화 코드의 일부이며 static키워드로 둘러 쌉니다 일반 구문은 다음과 같습니다.

static {

    //initialize static members of class

} 

정적 블록은 클래스가 메모리에로드 될 때 실행됩니다. 클래스는 여러 정적 블록을 가질 수 있으며 클래스 정의에 나타나는 순서와 동일한 순서로 실행됩니다.

import static java.lang.System.out;

 

class DataObject

{

    public Integer nonStaticVar;

    public static Integer staticVar;    //static variable

     

    //It will be executed first

    static {

        staticVar = 40;

        //nonStaticVar = 20;    //Not possible to access non-static members

    }

     

    //It will be executed second

    static {

        out.println(staticVar);

    }

}

 

Output:

 

40 



'Java' 카테고리의 다른 글

이클립스(Eclipse)와 JDK 설치 및 다운로드 방법  (0) 2018.12.08
자바 - Continue문 사용하기  (0) 2018.07.23
자바 - 클래스 생성하는 방법  (0) 2018.07.23
자바 - 연산자  (0) 2018.07.23
자바 - 데이터 타입  (0) 2018.07.23
블로그 이미지

귀염둥이채원

,

클래스는 객체 지향 패러다임 프로그래밍의 기본 단위입니다. 

Java에서 클래스는 객체를 만들기위한 템플릿으로 사용됩니다. 

Java의 클래스는 5 개의 구성 요소로 구성 될 수 있습니다.

  1. 필드
  2. 메서드
  3. 생성자
  4. 정적 이니셜 라이저
  5. 인스턴스 이니셜 라이저

필드와 메소드는 클래스의 멤버라고도합니다. 나머지 구성 요소는 클래스 초기화, 즉 클래스 템플릿을 사용하여 객체를 만드는 데 사용됩니다. 생성자는 클래스의 객체를 만드는 데 사용됩니다. 클래스에 대해 적어도 하나의 생성자가 있어야합니다 (명시적으로 선언한 다음 JVM이 기본 생성자를 삽입하는 경우). 초기화 프로그램은 클래스의 필드를 초기화하는 데 사용됩니다. 정적 또는 인스턴스 유형의 초기화를 0개 이상 가질 수 있습니다.

클래스 선언 방법

Java에서 클래스를 선언하는 일반적인 구문은 다음과 같습니다.

<<modifiers>> class <<class name>> {

        // Body of the class goes here

} 


클래스 선언은 0 개 이상의 수정자를 가질 수 있습니다. 키워드 class는 클래스를 선언하는 데 사용됩니다. << 클래스 이름 >>은 클래스의 사용자 정의 이름이며 유효한 식별자 여야합니다. 각 클래스에는 본문이 있으며, 본문은 중괄호 ({}) 안에 지정됩니다. 클래스의 본문에는 필드, 메서드 등 다양한 구성 요소가 포함됩니다.

클래스 선언의 예는 다음과 같습니다.

// Main.java filename

class Main {

    // Empty body for now; Write you own

} 


클래스에서 필드를 선언하는 방법

클래스의 필드는 해당 클래스의 객체에 대한 속성 (속성이라고도 함)을 나타냅니다. 필드는 클래스 본문 내에서 선언됩니다. 클래스에서 필드를 선언하는 일반적인 구문은 다음과 같습니다.

<<modifiers>> class <<class name>> {

        // A field declaration

        <<modifiers>> <<data type>> <<field name>> = <<initial value>>;

} 

사람 객체의 모든 대상이 이름과 성별이라는 두 가지 특성을 가지고 있다고 가정합니다. 따라서 선언된 필드는 다음과 같습니다.

// Human.java

class Human {

        String name;

        String gender;

} 

여기서 Human 클래스는 이름과 성별이라는 두 필드를 선언합니다. 두 필드 모두 String 유형입니다. Human 클래스의 모든 인스턴스 (또는 객체)에는이 두 필드의 복사본이 있습니다.


클래스의 인스턴스 생성하기

다음은 클래스 인스턴스를 생성하는 일반적인 구문입니다.

<<Class>> <<variable>> = new <<Call to Class Constructor>>;

 

//e.g.

Human h = new Human(); 

클래스에 생성자를 추가하지 않으면 Java 컴파일러가 생성자를 추가합니다. Java 컴파일러에 의해 추가된 생성자를 기본 생성자라고합니다. 기본 생성자는 인수를 허용하지 않습니다. 클래스의 생성자 이름은 클래스 이름과 동일합니다. new 연산자 뒤에는 인스턴스가 생성되는 클래스의 생성자에 대한 호출이 이어집니다. new 연산자는 힙에 메모리를 할당하여 클래스의 인스턴스를 만듭니다.

null 참조 유형

Java에는 null 유형이라고하는 특별한 참조 유형이 있습니다. 이름이 없습니다. 따라서 null 참조 유형의 변수를 정의 할 수 없습니다. null 참조 유형에는 Java가 정의한 하나의 값 (null 리터럴) 만 있습니다. 단순히 null입니다. null 참조 유형은 다른 참조 유형과 할당 호환됩니다. 즉, 참조 유형의 변수에 널값을 지정할 수 있습니다. 실제로 참조 유형 변수에 저장된 Null 값은 참조 변수가 객체를 참조하지 않음을 의미합니다.

// Assign null value to john

Human john = null;  // john is not referring to any object

john = new Human(); // Now, john is referring to a valid Human object 

null는 null 형의 문자형입니다. 원시 형 변수에 null을 할당 할 수 없기 때문에 Java 컴파일러는 기본 값을 null 값과 비교할 수 없습니다.

생성자

생성자는 객체가 생성 된 직후 클래스의 객체를 초기화하는 데 사용되는 명명된 코드 블록입니다. 생성자 선언의 일반적인 구문은 다음과 같습니다.

<<Modifiers>> <<Constructor Name>>(<<parameters list>>) throws <<Exceptions list>> {

        // Body of constructor goes here

} 

생성자는 public, private, protected 또는 package-level (수정 자 없음)으로 액세스 한정자를 가질 수 있습니다. 생성자 이름은 클래스의 단순한 이름과 동일합니다. 생성자 이름 뒤에는 매개 변수를 포함 할 수있는 여는 괄호와 닫는 괄호 쌍이옵니다. 선택적으로 닫는 괄호 다음에 키워드 throws가 올 수 있으며 그 뒤에 쉼표로 구분된 예외 목록이옵니다.

메서드와 달리 생성자에는 반환 형식이 없습니다. 생성자의 반환 유형으로 void를 지정할 수도 없습니다. 반환 유형이 있으면 메소드입니다. 구문의 이름이 클래스의 단순한 이름과 같은 경우 메서드 또는 생성자가 될 수 있습니다. 반환 유형을 지정하면 메서드입니다. 반환 유형을 지정하지 않으면 생성자입니다.


인스턴스 초기화 블록

생성자는 클래스의 인스턴스를 초기화하는 데 사용되는 것을 보았습니다. 인스턴스 이니셜 라이저라고도하는 인스턴스 초기화 블록은 클래스의 객체를 초기화하는데도 사용됩니다. 인스턴스 이니셜 라이저는 클래스 본문 내부의 코드 블록이지만 메서드 또는 생성자 외부에있는 코드 블록입니다. 인스턴스 이니셜 라이저에는 이름이 없습니다. 이 코드는 여는 중괄호와 닫는 중괄호 안에 배치됩니다.

인스턴스 이니셜 라이저는 인스턴스 컨텍스트에서 실행되며 키워드 this는 인스턴스 이니셜 라이저에서 사용할 수 있습니다.

// An instance initializer

{

        /* Other code for the instance initializer goes here */

} 

한 클래스에 대해 인스턴스 초기화 프로그램을 여러 개 가질 수 있습니다. 이 모든 것은 작성한 모든 오브젝트에 대해 텍스트 순서대로 자동 실행됩니다. 모든 인스턴스 이니셜 라이저에 대한 코드는 생성자보다 먼저 실행됩니다.

인스턴스 이니셜 라이저에는 return 문을 사용할 수 없습니다. 선언된 모든 생성자가 throws 절에서 검사 된 예외를 나열하지 않는 한 검사된 예외를 throw 할 수 없습니다.


정적 초기화 블록

정적 초기화 블록은 정적 초기화 프로그램이라고도합니다. 이는 인스턴스 초기화 블록과 유사합니다. 클래스를 초기화하는 데 사용됩니다. 인스턴스 이니셜 라이저는 객체 당 한 번만 실행되는 반면 정적 초기화는 클래스 정의가 JVM으로로드 될 때 클래스에 대해 한 번만 실행됩니다. 인스턴스 이니셜 라이저와 구별하려면 선언 초기에 static 키워드를 사용해야합니다.

한 클래스에 여러 정적 초기화 프로그램을 가질 수 있습니다. 모든 정적 이니셜 라이저는 표시되는 텍스트 순서로 실행되며 인스턴스 이니셜 라이저보다 먼저 실행됩니다.

// An static initializer

static {

        /* Other code for the static initializer goes here */

}

정적 초기화 프로그램은 검사 된 예외를 throw 할 수 없으며 return 문도 사용할 수 없습니다.

'Java' 카테고리의 다른 글

자바 - Continue문 사용하기  (0) 2018.07.23
자바 - 정적 변수(Static Variable), 정적 메서드(Static Method)  (0) 2018.07.23
자바 - 연산자  (0) 2018.07.23
자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
블로그 이미지

귀염둥이채원

,

자바 - 연산자

Java 2018. 7. 23. 03:00

연산자는 하나, 둘 또는 세 개의 피연산자에 대해 특정 종류의 연산을 수행하고 결과를 생성하는 기호입니다. 

연산자의 유형과 피연산자는 피연산자에 대해 수행된 연산의 종류와 생성된 결과의 유형을 결정합니다.

Java의 연산자는 다음 두 가지 기준에 따라 분류 할 수 있습니다.

  • 조작하는 피연산자의 수 : 피연산자 수에 따라 3 가지 유형의 연산자가 있습니다. 연산자는 피연산자 수에 따라 단항, 2 진 또는 3 항 연산자라고합니다. 연산자가 하나의 피연산자를 사용하면 단항 연산자가 호출됩니다. 두 개의 피연산자가 필요한 경우 이진 연산자를 호출합니다. 세 개의 피연산자가 필요하면 삼항 연산자를 호출합니다.
  • 피연산자에 대해 수행하는 연산 유형 : 피연산자에 대해 수행하는 연산의 종류에 따라 연산자는 산술 연산자, 관계 연산자, 논리 연산자 또는 비트 연산자라고합니다.

대입 연산자 (=)

대입 연산자 (=)는 변수에 값을 할당하는데 사용됩니다. 이진 연산자입니다. 두 개의 피연산자가 필요합니다. 오른쪽 피연산자의 값은 왼쪽 피연산자에 할당됩니다. 왼쪽 피연산자는 변수여야합니다. 예를 들어,

//26 is the right-hand operand.
//num is the left-hand operand, which is a variable of type int.
int num = 26;

Java는 대입 연산자의 오른쪽 피연산자의 값이 왼쪽 피연산자의 데이터 유형에 할당 호환된다는 것을 보장합니다. 그렇지 않으면 컴파일 타임 오류가 발생합니다. 참조 변수의 경우, 오른쪽 피연산자가 나타내는 객체가 왼쪽 피연산자로 참조 변수에 할당 호환되지 않으면 소스 코드를 컴파일하고 런타임 오류가 발생할 수 있습니다.

산술 연산자

(+, -, *, /)와 같은 연산자는 Java의 산술 연산자라고하며 숫자형 피연산자에서만 사용할 수 있습니다. 즉, 산술 연산자에 대한 두 피연산자는 모두 byte, short, char, int, long, float 및 double 유형 중 하나여야합니다. 이 연산자는 부울 기본 유형 및 참조 유형의 피연산자를 가질 수 없습니다.

A) 이진 산술 연산자

운영자기술
+추가 - 연산자의 양쪽에 값을 추가합니다.
-빼기 - 왼손 피연산자에서 오른쪽 피연산자를 뺍니다.
*곱셈 - 연산자의 양쪽에 값을 곱합니다.
/나눗셈- 오른손 피연산자로 왼손 피연산자를 나눕니다.
%나머지 - 오른손 피연산자로 왼손 피연산자를 나누고 나머지를 반환합니다.


B) 단항 산술 연산자

운영자기술
+단항 연산자와 연산자; 양수 값을 나타냅니다 (숫자는이 값이 없으면 양수입니다).
-단항 마이너스 연산자; 표현식 값을 무효화합니다.
++증분 연산자; 값을 1 씩 증가시킨다.
-감소 연산자; 값을 1 씩 줄입니다.
!논리 보수 연산자; 부울 값을 반전한다.


문자열 연결 연산자 (+)

+ 연산자가 오버로드되었습니다. 연산자는 둘 이상의 기능을 수행하는 데 사용되면 오버로드라고합니다. 지금까지 두 숫자를 더하기 위해 산술 연산자를 사용하는 것을 보았습니다. 또한 두 문자열을 연결하는 데 사용할 수도 있습니다. "abc"및 "xyz"와 같은 두 문자열은 + 연산자를 "abc"+ "xyz"로 연결하여 새 문자열 "abcxyz"를 생성 할 수 있습니다.

String str1 = "Hello";
String str2 = " World";
String str3 = str1 + str2; // Assigns "Hello World" to str3

문자열 연결 연산자는 기본 및 참조 데이터 유형 값을 문자열에 연결하는데에도 사용됩니다.

int num = 26;
String str1 = "Alphabets";
String str2 = num + str1; // Assigns "26Alphabets" to str2

String 변수에 널 참조가 들어 있으면, 연결 연산자는 "null"문자열을 사용합니다.


관계 연산자

모든 관계 연산자는 2 진 연산자입니다. 즉, 두 개의 피연산자를 사용합니다. 관계 연산자에 의해 생성 된 결과는 항상 부울 값 true 또는 false입니다.

자바에서 사용 가능한 모든 관계 연산자를 아래에서 살펴 보겠습니다.

운영자기술
==두 피연산자의 값이 같거나 같은지 확인합니다. 예이면 condition이 true가됩니다.
! =두 피연산자의 값이 같거나 같은지 여부를 확인합니다. 값이 같지 않으면 조건이 true가됩니다.
>왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 검사하고, 참이면 조건이 참이됩니다.
<왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은 지 검사하고, 참이면 조건이 참이됩니다.
> =왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 검사하고, 참이면 조건이 참이됩니다.
<=왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 검사하고, 예이면 조건이 참이됩니다.

부울 논리 연산자

모든 부울 논리 연산자는 부울 피연산자에서만 사용할 수 있습니다. 

운영자기술
!피연산자가 false이면 true를 반환하고 피연산자가 true이면 false를 반환합니다.
&&두 피연산자가 모두 참이면 true를 반환합니다. 피연산자 중 하나가 거짓이면 false를 반환합니다.
&두 피연산자가 모두 참이면 true를 반환합니다. 피연산자 중 하나가 거짓이면 false를 반환합니다.
||어느 피연산자가 참이면 true를 반환합니다. 두 피연산자가 모두 거짓이면 false를 반환합니다.
|어느 피연산자가 참이면 true를 반환합니다. 두 피연산자가 모두 거짓이면 false를 반환합니다.
^피연산자 중 하나가 참이면 true를 반환하지만 둘 다 참이면 true를 반환합니다.두 피연산자가 같으면 false를 반환합니다.
& =두 피연산자가 모두 true로 평가되면 & = true를 반환합니다. 그렇지 않으면 false를 반환합니다.
| =어느 피연산자가 참으로 평가되면! =는 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
^ =두 피연산자가 서로 다른 값으로 평가되는 경우, 즉 피연산자 중 하나가 참이지만 둘 다 아닌 경우 ^ =은 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

아래 사항에 유의하시기 바랍니다 :

1) 논리적 AND 연산자 (&)는 논리적 단락 AND 연산자 (&&)와 동일한 방식으로 작동합니다 (단 하나의 차이점 제외). 논리 AND 연산자 (&)는 왼쪽 피연산자가 false로 평가되는 경우에도 오른쪽 피연산자를 계산합니다. 
2) 논리 OR 연산자는 논리 단락 OR 연산자와 동일한 방식으로 작동하지만 한 가지 차이점이 있습니다. 논리 OR 연산자는 왼쪽 피연산자가 true로 평가되는 경우에도 오른쪽 피연산자를 계산합니다.


비트 연산자

비트 연산자는 피연산자의 개별 비트를 조작합니다. Java는 정수, long, int, short, char 및 byte와 같은 여러 비트 연산자를 정의합니다.

운영자기술
&이진 AND 연산자는 두 피연산자 모두에 비트가 있으면 결과에 복사합니다.
|이진 OR 연산자는 피연산자에 비트가 있으면 비트를 복사합니다.
^바이너리 XOR 연산자는 비트가 하나의 피연산자에 설정되었지만 둘 다 설정되지 않은 경우 비트를 복사합니다.
~ ~Binary Ones Complement Operator는 단항이고 'Flipping'비트의 효과가 있습니다.
<<이진 왼쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동합니다.
>>이진 오른쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동합니다.
>>>오른쪽 제로 채우기 연산자를 시프트하십시오. 왼쪽 피연산자 값은 오른쪽 피연산자에 의해 지정된 비트 수만큼 오른쪽으로 이동되고 시프트 값은 0으로 채워집니다.


삼항 연산자 (? :)

Java에는 하나의 조건부 연산자가 있습니다. 세 개의 피연산자가 필요하므로 삼항 연산자라고합니다.

boolean-expression ? true-expression : false-expression

"?"와 ":"의 두 기호는 삼항 연산자를 만듭니다. boolean-expression이 true로 평가되면 true-expression을 평가합니다. 그렇지 않으면 false-expression을 평가합니다.

'Java' 카테고리의 다른 글

자바 - 정적 변수(Static Variable), 정적 메서드(Static Method)  (0) 2018.07.23
자바 - 클래스 생성하는 방법  (0) 2018.07.23
자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

자바 - 데이터 타입

Java 2018. 7. 23. 00:13

Java에서 일반적으로 데이터 타입은 변수와 연관됩니다 . 변수에는 세 가지 속성이 있습니다.

a) 값을 유지할 메모리 위치 
b) 메모리 위치에 저장된 데이터의 타입
c) 메모리 위치 를 참조하는 이름 (식별자라고도 함)

두 번째 속성은 데이터 타입이라고합니다 . 변수의 데이터 타입은 메모리 위치가 보유 할 수있는 값의 범위를 결정합니다. 따라서 변수에 할당 된 메모리 양은 해당 데이터 타입에 따라 다릅니다. 예를 들어, 32 비트의 메모리가 int 데이터 타입의 변수에 할당됩니다.


Java는 두 가지 종류의 데이터 타입을 지원합니다.

i) 원시적 데이터 타입
ii) 비 원시적 또는 참조 데이터 타입

기본 데이터 타입의 변수는 값을 보유하는 반면 참조 데이터 타입의 변수는 메모리의 오브젝트에 대한 참조를 보유합니다.

예를 들어 String (비 원시적데이터 타입)은 Java 라이브러리에 정의된 클래스이며 이를 사용하여 텍스트 (문자 시퀀스)를 조작 할 수 있습니다. 참조 인 " variable str of type String"을 (를) 다음과 같이 선언합니다 .


String str = new String("Hi");

이 코드가 실행되면 먼저 메모리가 할당되고 변수 이름이 str해당 메모리 위치와 연관됩니다. 이 프로세스는 기본 데이터 타입 변수를 선언하는 것과 동일합니다. 두 번째 코드 String는 텍스트에 "Hi"라는 문자열을 가진 객체를 생성하고 String 객체의 참조 (또는 메모리 주소)를 변수 str에 저장 합니다.

하나의 참조 변수에 저장된 객체 참조를 다른 참조 변수에 지정할 수도 있습니다. 이 경우 두 참조 변수 모두 메모리에있는 동일한 객체를 참조합니다. 이것은 다음과 같이 달성 될 수 있습니다 :


// Declares String reference variable str1 and str2
String str1;
String str2;
  
// Assigns the reference of a String object "Hello" to str1
str1 = new String("Hello");
  
// Assigns the reference stored in str1 to str2
str2 = str1;
모든 참조 변수에 할당 할 수있는 참조 상수 (참조 리터럴이라고도 함) null이 있습니다. 참조 변수에 null이 할당되면 참조 변수가 메모리의 객체를 참조하지 않는다는 의미입니다.


'Java' 카테고리의 다른 글

자바 - 클래스 생성하는 방법  (0) 2018.07.23
자바 - 연산자  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

자바 - 변수

Java 2018. 7. 23. 00:07

Java에서 변수는 변수 값이 저장되는 메모리 영역에 대한 명명 된 참조입니다.

변수 선언의 구문은 다음과 같습니다.

[데이터 타입] [변수 이름] = [변수 값];

  • 데이터 타입 - 메모리 영역에 저장될 데이터의 타입
  • 변수 이름 - 변수의 이름
  • 변수 값 - 메모리 영역에 저장 될 값

예를 들어, 아래 명령문은 Java에서 유효한 변수 선언입니다.

int i = 10;

 

String str = "howtodoinjava.com";

 

Object obj = new Object();


변수 유형

Java에는 다음 네 가지 유형의 변수가 있습니다.

  1. 인스턴스 변수 (비 정적 필드)

    변수는 static키워드 없이 (클래스에서) 선언되었습니다 비 정적 필드는 클래스의 각 인스턴스에 고유 한 값이기 때문에 인스턴스 변수라고도 합니다. 상태 변수 라고도 합니다 .

  2. 클래스 변수 (정적 필드)

    또한 클래스 변수 로 알려져 있습니다 . static 수정자로 선언된 모든 필드 입니다. 클래스가 인스턴스화 된 횟수에 관계없이 존재하는이 변수의 사본이 정확히 하나 있다는 것을 의미합니다 .

  3. 지역 변수

    메소드 실행 중에 임시 변수가 존재하기 때문에 메소드 내부에서 사용됩니다. 지역 변수를 선언하는 구문은 필드를 선언하는 것과 유사합니다. 로컬 변수는 선언된 메소드에서만 볼 수 있습니다 . 지역변수는 나머지 클래스에서 접근 할 수 없다.

  4. 매개 변수

    매개 변수는 메서드가 호출 될 때 메서드에 전달되는 변수입니다. 매개 변수는 메서드를 호출 할 때 값이 할당 되더라도 매개 변수 를 선언하는 메서드 내에서만 액세스 할 수 있습니다 .

각 변수 유형의 모양을 이해하려면 아래 예제를 참조하십시오.

public class VariableExample

{

    static int a = 10;  // 클래스 변수

 

    int b = 20;         // 인스턴스 변수

 

    public static void main( String[] args ) {

 

        int c = 30;     // 지역 변수

 

        print( 40 );

    }

 

    public static void print (int d) {  // 매개 변수

 

        System.out.println ( d );

    }

} 


자바 변수 명명 규칙

변수의 이름 지정과 관련된 몇 가지 규칙과 규칙이 있습니다.

  1. Java 변수 이름은 대소문자를 구별 합니다. 변수 이름 Employee나 EMPLOYEE는 동일하지 않다.
  2. Java 변수 이름의 첫글자 뒤에 이름은 숫자 또는 .자를 포함 할 수도 있습니다 .
  3. 변수 이름은 Java에서 예약 키워드가 될 수 없습니다. 예를 들어, 단어 break
    또는 continue자바의 예약어입니다. 따라서 변수 이름을 지정할 수 없습니다.
  4. 변수 이름은 소문자로 작성해야합니다 예를 들어, variable또는 apple.
  5. 변수 이름이 여러 단어로 구성된 경우, 카멜 표기법 을 따르십시오 예를 들어, deptName또는 firstName.
  6. 정적 최종 필드 (상수)는 모두 대문자로 이름을 지정해야하며, 대개 이름을 사용 하여 단어를 분리하십시오. 예를 들어 LOGGER또는 INTEREST_RATE.


'Java' 카테고리의 다른 글

자바 - 연산자  (0) 2018.07.23
자바 - 데이터 타입  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
자바 - JDK, JRE 및 JVM 간의 차이점  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

자바 - 주석

Java 2018. 7. 22. 23:58

Java 주석은 이름에서 알 수 있듯이 여러 가지 이유로 프로그램에서 작성한 메모입니다. 

예를 들어, 다음에 주석을 쓸 수 있습니다.

  • 변수, 방법, 클래스 또는 모든 진술에 대한 정보 또는 설명을 작성
  • Java docs에서 사용할 수 있도록 텍스트를 작성
  • 특정 시간 동안 프로그램 코드 숨기기

Java 주석 유형

Java에는 세 가지 유형의 주석이 있습니다.

  1. 한 줄 주석
    주석을 한 행으로 만 쓸 수있는 경우 한 줄 주석을 사용하십시오.


//Initialize the counter variable to 0

int counter = 0;

  1. 여러 줄 주석
    한 줄 이상을 초과하는 정보를 소스 코드에 추가해야하는 경우 여러 줄 주석을 사용하십시오.

/*

 * This function return a variable which shall be used as counter for any loop.

 * Counter variable is of integer type and should not be reset during execution.

 */

public int getCounter() {

    //

}


  1. 문서 코멘트
    설명서 주석은 javadoc도구로 정보를 표시하고자 할 때 사용됩니다 . 이것은 자동 완성 기능을 사용할 때 편집기 에서 볼 수있는 정보입니다.
    문서 주석은 시작 
    /**로 시작하고하고 */로 끝납니다 .
    javadoc이러한 주석 내부에 주석 을 사용할 수 있습니다

/**

  * This function return a variable which shall be used as counter for any loop.

  * Counter variable is of integer type and should not be reset during execution.

  * @param seed - initial value of counter

  * @return counter value

  */

public int getCounter(int seed) {

    //

}

'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
자바 - JDK, JRE 및 JVM 간의 차이점  (0) 2018.07.22
Java 프로그래밍 언어란?  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

응용 프로그램 런타임 중에 CLASSPATH는 클래스와 패키지를 찾을 위치를 JVM에 알려주는 매개 변수이며 환경 변수 또는 명령 줄 인수를 사용하여 설정할 수 있습니다.

Windows 및 Linux 환경의 모든 Java 응용 프로그램 런타임에 대해 CLASSPATH를 설정하려면 아래 구문을 사용하십시오. 예를 들어 dependencyJAR 파일과 다른 클래스가 있는 폴더가 있다고 가정 해 보겠습니다 .

1) CLASSPATH에 단일 JAR 파일 추가

1.1) Microsoft Windows에서 CLASSPATH 설정

아래 구문 예제는 classpath에 단일 jar 파일을 추가합니다 .

set CLASSPATH=C:\dependency\framework.jar

1.2) Linux / Unix에서 CLASSPATH 설정

export CLASSPATH=/dependency/framework.jar

1.3) Microsoft Windows에서 javac와 함께 CLASSPATH 사용

javac –classpath C:\dependency\framework.jar

1.4) Linux / Unix에서 javac와 함께 CLASSPATH 사용

javac –classpath /dependency/framework.jar


2) CLASSPATH에 여러 개의 JAR 파일 추가

아래의 구문 예제는 classpath에 더 많은 하나의 jar 파일을 추가합니다 . 그렇게하려면 CLASSPATH에 지정된 위치 사이에 구분 기호로 운영 체제 ( ;또는 중 하나 :의 분리 문자를 사용하십시오 .

2.1) Microsoft Windows에서 CLASSPATH 설정

set CLASSPATH=C:\dependency\framework.jar;C:\location\otherFramework.jar

2.2) Linux / Unix에서 CLASSPATH 설정

export CLASSPATH=/dependency/framework.jar:/location/otherFramework.jar

2.3) Microsoft Windows에서 javac와 함께 CLASSPATH 사용

javac –classpath C:\dependency\framework.jar;C:\location\otherFramework.jar

2.4) Linux / Unix에서 javac와 함께 CLASSPATH 사용

javac –classpath /dependency/framework.jar:/location/otherFramework.jar


3) CLASSPATH에 모든 JAR 파일 추가

디렉토리에있는 모든 JAR 파일을 추가하려면 다음과 같이 와일드 카드 문자 (*)를 사용하십시오.

3.1) Microsoft Windows에서 CLASSPATH 설정

set CLASSPATH=C:\dependency\*;C:\location\*

3.2) Linux / Unix에서 CLASSPATH 설정

export CLASSPATH=/dependency/*:/location/*


4) CLASSPATH에 클래스 추가

여러 번 클래스 패스에 개별 클래스를 추가해야 할 수도 있습니다. 이렇게하려면 classfile이있는 폴더를 추가하기 만하면됩니다. 예를 들어 classpath에 포함시키려는 폴더에 다섯 개의 .class파일이 있다고 가정 해 봅시다 location.

4.1) Microsoft Windows에서 CLASSPATH 설정

set CLASSPATH=C:\dependency\*;C:\location

4.2) 리눅스 / 유닉스에서 CLASSPATH 설정

export CLASSPATH=/dependency/*:/location


'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - JDK, JRE 및 JVM 간의 차이점  (0) 2018.07.22
Java 프로그래밍 언어란?  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

JDK, JRE 및 JVM은 개발자가 Java 응용 프로그램 및 개발 환경에 관해 이야기 할 때 매우 일반적으로 사용되는 단어입니다. 이 단어들 사이의 차이를 찾아 봅시다.

JDK와 JRE 대 JVM

JVM

자바 가상 머신 (JVM)은 자바 바이트 코드를 실행하는 가상 머신입니다. .java파일을 .class파일 로 컴파일하여이 바이트 코드를 얻 습니다 .class파일에는 JVM이 이해하는 바이트 코드가 들어 있습니다.

JRE

Java Runtime Environment (JRE)는 Java로 작성된 응용 프로그램을 실행하기위한 라이브러리 (jar), Java Virtual Machine 및 기타 구성 요소를 제공합니다. JRE에는 애플릿 및 응용 프로그램 개발을위한 컴파일러 또는 디버거와 같은 도구 및 유틸리티가 포함되어 있지 않습니다.

JDK

JDK는 JRE의 상위 세트이며, JRE가 가지고있는 모든 것을 컴파일러, 디버거 등의 개발 도구와 함께 포함합니다.


JDK, JRE 및 JVM 간의 관계

위의 세부 사항을 바탕으로, 우리는이 세 가지 사이의 관계를 아래와 같이 묘사 할 수 있습니다.

JRE = Java 응용 프로그램을 실행하기위한 JVM + 라이브러리.

JDK = JRE + 도구를 사용하여 Java 응용 프로그램을 개발

즉, 코드를 작성하는 Java 응용 프로그램 개발자 인 경우 시스템에 JDK가 설치되어 있어야합니다. 그러나 Java로 작성된 응용 프로그램 만 실행하려면 JRE가 시스템에 설치되어 있어야합니다.

'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
Java 프로그래밍 언어란?  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

Java는 동시, 클래스 기반, 객체 지향적이며 특히 가능한 한 적은 구현 종속성을 갖도록 특별히 설계된 범용 컴퓨터 프로그래밍 언어입니다. 이것은 응용 프로그램 개발자가 "WORA (Write Once, Run Anywhere)" 를 허용하기위한 것이며 , 다시 컴파일 할 필요없이 Java를 지원하는 모든 플랫폼에서 컴파일 된 Java 코드를 실행할 수 있습니다. 예를 들어 UNIX에서 Java 프로그램을 작성 및 컴파일하고 소스 코드를 수정하지 않고 Microsoft Windows, Macintosh 또는 UNIX 시스템에서 실행할 수 있습니다. WORA는 Java 프로그램을 바이트 코드라는 중간 언어로 컴파일함으로써 성취됩니다. 바이트 코드의 형식은 플랫폼에 독립적입니다. Java Virtual Machine (JVM)이라고하는 가상 머신은 각 플랫폼에서 바이트 코드를 실행하는 데 사용됩니다.


Java는 원래 Sun Microsystems (이후 Oracle Corporation에서 인수)에서 James Gosling이 개발했으며 1995 년 Sun Microsystems의 Java 플랫폼의 핵심 구성 요소로 출시되었습니다. 이 언어는 C 및 C ++에서 구문의 많은 부분을 파생하지만 그 중 어느 것보다 낮은 수준의 기능을 가지고 있습니다.


Oracle Corporation은 2010 년 1 월 27 일에 Sun Microsystems를 인수 한 후 Java SE 플랫폼의 공식 구현의 현재 소유자입니다.이 구현은 Java의 Sun 구현을 기반으로합니다. Oracle 구현은 Microsoft Windows, Mac OS X, Linux 및 Solaris에서 사용할 수 있습니다.


Oracle 구현은 두 가지 다른 배포판으로 패키지되어 있습니다. Java 프로그램을 실행하는 데 필요한 Java SE 플랫폼의 일부를 포함하고 최종 사용자를 대상으로하는 JRE (Java Runtime Environment) 및 Java Development Kit (JDK) Java 컴파일러, Javadoc, Jar 및 디버거와 같은 개발 도구가 포함되어 있습니다.


Java는 자동 가비지 콜렉터 를 사용하여 객체 수명주기의 메모리를 관리합니다. 프로그래머는 객체 생성 시점을 결정하고 Java 런타임은 객체가 더 이상 사용되지 않으면 메모리를 복구합니다. 객체체에 대한 참조가 남아 있지 않으면 도달 할 수없는 메모리가 가비지 콜렉터에서 자동으로 해제 될 수 있습니다. 프로그래머 코드가 더 이상 필요하지 않은 객체에 대한 참조를 보유하고 있으면 (일반적으로 더 이상 필요하지 않은 객체가 아직 사용중인 컨테이너에 저장되어있는 경우) 메모리 누수와 비슷한 현상이 계속 발생할 수 있습니다. 존재하지 않는 객체의 메소드가 호출되면 " 널 포인터 예외"던져진다. 가비지 콜렉터는 언제든지 발생할 수 있습니다. 이상적으로는 프로그램이 유휴 상태 일 때 발생합니다. 새 오브젝트를 할당하기 위해 힙에 여유 메모리가 충분하지 않으면 트리거되는 것이 보장됩니다. 이로 인해 프로그램이 일시적으로 정지 될 수 있습니다. Java에서는 명시 적 메모리 관리가 불가능합니다.

전통적인 "Hello, world!"프로그램은 다음과 같이 Java로 작성할 수 있습니다.

public class HelloWorldApplication {

    public static void main(String[] args) {
        System.out.println(&quot;Hello World!&quot;);   // Prints the string to the console.
    }



소스 파일은 포함 된 공용 클래스의 이름을 따라야하며 접미사를 추가해야 .java합니다 (예 :) HelloWorldApplication.java먼저 Java 컴파일러를 사용하여 바이트 코드로 컴파일해야하며 이름이 지정된 파일을 생성해야합니다 HelloWorldApplication.class그런 다음에 만 실행하거나 '시작'할 수 있습니다. Java 소스 파일에는 공용 클래스가 하나만 포함될 수 있지만 공용 액세스 이외의 여러 클래스와 여러 개의 공용 내부 클래스가 포함될 수 있습니다. 소스 파일에 여러 클래스가 포함되어 있으면 하나의 클래스를 'public'으로 만들고 해당 공용 클래스 이름으로 소스 파일 이름을 지정하십시오.

'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
자바 - JDK, JRE 및 JVM 간의 차이점  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,