1.method

1.2 method란?

  • 객체가 하는 것(동사)
  • 같은 클래스에 속한 객체라도 method(행동)은 달라질 수 있다.

 

 

2. 사용방법

<메소드 정의> 

void 메소드이름(변수타입 변수명, 변수타입 변수명, ...){

   실행문;

}

 <메소드 호출>

메소드이름(아규먼트1, 아규먼트2, ...);

* 파라미터: 변수타입 변수명, 변수타입 변수명, ... => 메소드에서 받는 값(매개변수) 

* 아규먼트: 함수를 호출할 때에 인자(전달해주는 값)

* 파라미터와 야규먼트의 값과 순서는 반드시 동일해야 한다.

 

 

3. return type

3.1 void

  • 리턴이 없는 경우는 void(무치)로 한다.

 void go( ){   

}


3.2 반환하는 값이 있는경우

  • 아래의 보라색 부분은 반드시 반환하는 값의 변수유형(return)과 같아야 한다.
  • 변수유형: boolean, byte, short, int, long, float, double, char, String

< 선언부 > 

int go( ){           // int형 값을 return하겠다고 알려줌 

     return 30   // int형 값을 return 함

}

 < 호출부 >

int goValue = go();  // 리턴한 값의 변수유형과 동일한 유형에 값을 담아야 한다(여기서는 int)

 * return: 선언한 유형의 값을 리턴하거나 또는 선언한 유형과 호환가능한 값을 리턴

 * 보라색 부분은 같은 유형이어야 한다.

1. 배열이란?

  • 같은 타입의 변수 여러개를 한 번에 저장할 수 있는 저장소
  • 배열 자체는 참조변수(레퍼런스)=>   배열은 값을 저장하는 것이 아닌 주소값을 첨부한다.
  • 배열 내부의 원소 는 원시변수 => 원소에는 값이 들어가 있다.

 

2. 배열 사용법

2.1 정의

 < 방법1 >  int[] arr = new int[5];  //int타입의 변수가 5개 들어있는 배열을 생성한다.

 < 방법2 >  int arr[] = new int[5];  //int타입의 변수가 5개 들어있는 배열을 생성한다.

​* 방법1과 방법2는 동일하지만, java에서는 방법1을 더 많이 사용

 

2.2 초기화​ 

 <생성과 동시에 초기화> int[] arr = new int[]{200, 90, 100};  //초기화를 수행할 때에는 배열의 개수를 지정하지 X

                                                                               // new int[]는 생략가능 => int[] arr = {200, 90, 100};

 < 생성 후 초기화>        arr[0] = 100;   arr[1] = 90; arr[2] = 100;

 

 

3. 배열은 언제 사용할까?

  • 어떤 사물의 순서가 있는, 그리고 효율적인 목록을 빠르게 만들 때


1. 객체의 구조

  • 객체는 클래스에 의해 실체화 된것이다.   (참고주소: http://naraeh.tistory.com/12)
  • 객체 (원시)변수는 존재하지 않는다!! => 객체 레퍼런스변수(레퍼런스)만 존재할뿐                                                                                     ex) Dog myDog = new Dog();  //myDog는 (원시)변수가 아니라 레퍼런스변수

 

2. 객체의 선언 및 생성

 Dog myDog = new Dog();

 

  • 객체의 선언: Dog myDog => JVM에 레퍼런스 변수용 공간을 할당해 달라는 요청 후 그 변수명을 myDog로 지정
  • 객체의 생성: new Dog()  =>  Dog객체를 위한 공간마련

 

3. 객체의 메모리관리

  • garbage collection: 주소


1. JVM에서의 공간

1.1 JVM 구조



1.2 코드

public class Test {

   public static void main(String[] args){

       int[] p1 = new int[5];

       int[] p2 = new int[3];

       int[] p3 = p1;

 

       p3[2] = 100;

 

       System.out.println(p1[2]);

 

       p2 = p1;

   }

}

 

 

1.3 공간모습

 *stack: 메소드를 호출할 때마다 메모리가 쌓인다, 처음에 쌓였던 메모리가 가장 늦게 반환된다 => main()이 가장 늦게 반환된다

            main메모리 생성 -> p3 변수 메모리 생성 -> p3 변수 메모리 반환 -> main 메모리 반환

            (p1, p2는 new로 생성했으므로 stack이 아닌 heap영역 )

 


2. garbage colection(가비지 컬렉션)이란?

  • garbage : 참조하는 변수가 없는 메모리
  • garbage collectior: garbage memory를 해제하는 객체(heap 영역을 관리), 자동으로 실행된다.

 

2.1 garbege는 언제 청소될까?

  • idle time(운영체제가 한가한 시간에)
  • 메모리가 부족할 때

    * garbage가 생겼다고 garbage collection가 즉시 작동하는 것은 아니며, 무조건 작동하는 것은 아니다.

      (프로그램이 잠깐 실행되는 경우에는 garbage collection이 작동하지 않는다.)

 

2.2 garbage를 최소하 하기 위해서는?

  • 디자인 패턴에 따라 코드를 짜서 garbage생성을 최소화 하라!



3. 첨부파일

JAVA_garbageCollection.pptx


'개발 > Java' 카테고리의 다른 글

[JAVA] array(배열)  (0) 2017.01.01
[JAVA] 객체  (0) 2016.12.31
[JAVA] "인스턴스변수VS 메소드"와 "클래스 VS 객체"  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 주석  (0) 2016.12.31

1. 변수와 메소드

  • 인스턴스변수: 인스턴스의 변수, 인스턴스(객체)에 대해 아는 것 (상태, 명사)
  • 메소드: 객체가 하는 것 (행동, 동사)
  • 객체 = 실체화된 인스턴스 변수 + 실체화된 메소드


1.1 예제

Dog라는 클래스를 만들경우,

  • 인스턴스변수: size, name, color 등...
  • 메소드: bark(), eat() 등...

 


2. 클래스와 객체

클래스는 객체가 아니다!!!!!

  • 클래스: 객체를 만들기 위한 용도
  • 객체: 클래스에 의해 실체화 된 것

 

2.1 예제

 클래스

객체 

class Movie{

   String title;

   String genre;

   int rating;

 

   void palyIt(){

       System.out.println("영화를 상영합니다.");

   }

}

Movie one = new Movie();

one. title = "주식과 함께 사라지다";

one.genre = "비극";

on.rating = -1;

 

Movie two =  new Movid();

two.title = "바이트 클럽"

two.genre = "기분이 좋아지는 비극"

two.rating = 127;

 

 아직 실질 적으로 존재하지 않는 상태

 클래스를 생성하여 값을 넣음으로써 실제로 존재하는 상태

객체란 Movie라는 클래스에 의해 생성된 one과 two를 의미한다.

 

'개발 > Java' 카테고리의 다른 글

[JAVA] 객체  (0) 2016.12.31
[JAVA] JVM이 메모리를 관리하는 방법 - garbage collection(가비지 컬렉션)  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 주석  (0) 2016.12.31
[JAVA] 기초 - 자료형(변수)  (0) 2016.12.31

1. class

1.1 규칙

  • java코드는 반드시 class 안에 작성하여야 한다.
  • Eclipse는 소스파일을 저장하는 즉시 자동으로 컴파일 한다.(Auto complete 선택되어 있을경우만)
  • 컴파일 된 바이트코드는 프로젝트 폴더/bin 디렉토리에 놓인다.
  • public으로 공개된 클래스는 자바 소스 파일도 반드시 클래스 이름이여야 한다.                                                                                         (단,파일명이 public이 아니면 파일명이 클래스이름과 달라도 error가 나지 않는다. )
  • 바이트코드는 자바 컴파일러에 의해 클래스별로 생성한다.
  • 유지보수를 좋게 하기 위해 가능한 각 클래스는 별도의 소스파일로 만들어라.

 

<예제 Test02.java>

 public class Test02 {

}

//error!! => public일 경우, 반드시 파일이름과 클래스 이름을 같게 하여야 한다.

//하나의 java 파일에는 한개의 public class만이 가능하다.

public class test03 {

 

}

//에러는 나지 않지만, 유지보수를 위해 가능한 각 클래스는 별도의 소스파일로 만든다.

class test03 {

}

 

1.2 cmd에서 실행하기

1) 파일이 위치하는 해당 경로로 이동


2) "java -classpath [클래스파일이 있는 경로] [클래스명]" 으로 실행 확인

(-classpath 대신 -cp도 가능)


 

2. package

  • class의 집합(class 파일을 좀 더 조직적으로 관리하기 위한 디렉토리)
  • package는 폴더를 의미한다.(bin안에 package이름으로 폴더 생성된것 확인할 수 있음)
  • package의 이름은 일반적으로 도메인 주소를 거꾸로 쓴다(중복되면 안되며, 쉽게 관리 하기 위해서)

 

<package 이름 예제>

  • 아래와 같이 폴더 안에 폴더가 생성되므로 디렉토리를 생성 할 때 상위그룹을 먼저 생성하는 것이 좋다.

 net/bitacademy/java63
 net/bitacademy/java64
 net/daum/dev1
 net/daum/dev2

 

1. 주석이란?

프로그램의 설명을 위해 사용되는 코드로 컴파일러는 바이트코드로 바꾸지 않고 무시한다.

 

2. 주석의 종류

2.1 한줄주석

  • 한줄을 주석으로 하고 싶을 때 쓰는 주석이다.

 // 한 줄 주석입니다.

 

 2.2 여러줄 주석

  • 여러줄을 주석으로 하고 싶을 때 쓰는 주석이다.

 /*

 여

 러

 줄

 주

 석

*/

 

 2.3 자바 문서 주석

  • javadoc 개발도구를 통해서 HTML 문서를 만들 때 사용하는 주석
  • javadoc는 소스파일에서 자바 문서 주석을 추출하여 HTML을 생성한다.
  • "@키워드" 를 통해 HTML 문서에 특별한 문장을 생성할 수 있다.
  • 바이트 코드에는 포함되지 않는다.

 /**

 자바 문서 주석입니다.

*/

 

 2.4 @(에노테이션)

  • 컴파일러나 JVM이 사용하는 아주 특별한 주석
  • @키워드 (변수=값, 변수=값, ...)
  •  SOURCE  => 컴파일 후 버려짐. 클래스 파일에 포함하지 않는다.
     CLASS     => 컴파일 파일에 포함 됨. 단, JVM이 사용할 수 없다.
     RUNTIME => 클래스 파일에 포함됨. JVM이 꺼낼 수 있다. 즉, 실행 중에 클래스 파일에 있는 주석을 꺼내 볼 수 있다.

 /**

  @author Me

*/

 

2.5 이클립스에서 주석 단축키

  • Ctrl + / :  블럭된 부분 전체 주석/주석해제
  • Ctrl + Shift + C : 마우스 커서가 있는 한 줄 주석/주석해제
  • Ctrl + Alt +j : method 이름 위에 커서를 두고 해당 주석 쓸경우 이클립스에서 정의되어 있는 자바 문서 주석 생성가능


3. 첨부

주석.java


'개발 > Java' 카테고리의 다른 글

[JAVA] "인스턴스변수VS 메소드"와 "클래스 VS 객체"  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 자료형(변수)  (0) 2016.12.31
[JAVA] 기초02  (0) 2016.12.31
[JAVA] 기초01 - JAVA란?  (0) 2016.12.31

1. 자료형(변수)

데이터를 저장할 수 있는 메모리

ex) 스타*스에서 커피를 주문한다면 스몰(small), 쇼트(short), 톨(tall), 그란데(grande)이 크기가 있다.

     카페에서 자신의 원하는 컵의 크기를 선택하는 것처럼 변수(컵)도 데이터(음료)를 담는 그릇이다. 

     ​때문에 변수(컵)은 여러가지 크기가 존재한다.

 

1.1 변수의 종류

  • (원시)변수: 원시변수에는 값이 저장된다. ex) int i = 7; => i는 111(2)의 값을 저장 함.
  • 인스턴스 변수: 객체(인스턴스) 내부에 있는 변수
  • 레퍼런스변수(레퍼런스) : C언어에서의 포인터, 객체에 접근하는 주소를 갖고 있음(값이 X)                                                  

     ex) Dog myDog = new Dog(); => myDog의 객체의 접근하는 주소를 갖고있다. 


2. 기본 자료형 (총 8개)

2.1. 리터럴

소스 코드의 고정 된 값을 대표하는 용어

ex) 진하게 표시된 것이 리터럴

      int i = 100;

      float f = 10f;

      char ch = "Oh!";

 *리터럴과 상수(Constant)는 다름!!!

   - 리터럴: 변수 및 상수에 저장되는 값 자체                     ex) int i = 100;

  - 상수   : 값을 초기화 한 이후에 값 변경이 불가능한 상수  ex) public static final int i = 100; 


2.2 종류 

 

  1 byte

 byte

  4 byte

  8 byte 

 논리형

  boolean

 

 

 

 문자형

 

  char

 

 

 정수형

  byte

 short 

                int                 

 long

 실수형

 

 

 float

               double            

 * 회색 부분은 default(기본) 자료형

 

2.3 변수선언

[public/protected/private] [static] [final] 변수타입 변수명;

 * [ ]안의 것은 때에 따라 생략가능


1) 변수이름 짓는 법

  •  변수는 알파벳, 숫자, _, $ , 문자(한, 중, 일 국가 문자 다 가능)
  •  단, 변수의 첫 문자는 숫자가 올 수 없다.
  •  가능한 $는 변수이름으로 사용하지 말것(보통 $는 자동화 도구에서 값을 대치하는 특수기호로 많이 사용 ex)jQuery)
  •  패키지 멤버 클래스는 영어 외에 문자를 사용하지 말아라.(운영체제에서 인지X), 내부 클래스는 한글 사용가능                                                  but 영어를 쓰는 것이 현명
  •  대소문자를 구분한다.
  •  변수 이름 짓는 규칙: camel표기법 ex) firstName, createDate
  •  널리 알려진 약어의 경우는 변수명으로 사용해도 되지만, 가능한 약어 사용을 자제하라 => source code의 가독성을 위해
  •  변수는 소문자로 시작한다.
  •  메서드명은 동사로 시작, 일을 시키는 식으로 이름을 지어라!


2) 사용 예

  • boolean i = true;  //true or false 밖에 사용 못함.
  • char i = 'A';(작은 따움표로 감싸 주어야 함) // 하나의 문자만 저장 가능
  • byte i = 1;
  • short i =1;
  • int = i =1;
  • long i =1;
  • float i = 1.2f;("f"를 꼭!!!! 써야함! => 자바에서는 소수점이 들어가 있는 것은 기본적으로 double로 간주 하기때문에)

         * "1.2f"가 의미하는 것은?

        커피를 주문할때에 "아메리카노 small사이즈, 시럽추가, 샷추가" 라고 주문을 한다고 해보자

        그렇다면, 커피를 주문받는 사람은 위와같이 모든 글자를 다쓰지 않고, "사이즈:s, 시럽O,  샷O"과 같이 간결하게 나타낼 것이다.

        커피에서의         "s"가 의미하는 것이  small의 크기를 갖고있는 을    의미하듯이,

        프로그래밍에서의 "f"가 의미하는 것은  flaot의  크기를 갖고있는 변수를 의미한다.  

 3) Error

 byte test1 = 128; //error 내용: type mismatch:cannot convert from int to byte (type이 잘못매치되었다: int는 byte로 변환할 수 없다.)

  • 128은 1바이트 이상이므로 int형이 되어야 한다!! => 1byte인 byte에 넣을 수 없다.
  • 따라서, 변수의 크기와 할당 내용의 크기를 맞춰서 변수 선언을 하여라!!

 

 

3. 참조 자료형 

  객체의 주소를 저장, 변수의 타입이 클래스의 이름을 사용

 

  2.1 종류

  • String : 문자열 사용 시
  • 사용자 지정 클래스

 

  2.2 사용방법

    String str = "Hello, World!"; (변수타입 첫글자 => 대문자, 큰따움표로 감싸줌)

 


4. 기본 자료형 VS 참조 자료형


 

 기본 자료형

참조 자료형 

 저장 하는 값

 실제 값

 객체의 주소

크기제한

 有

 無

 변수타입 첫 글자

 소문자

대문자 (클래스 이므로)

 사용예시

 int a = 100;

 Date today = new Date();


'개발 > Java' 카테고리의 다른 글

[JAVA] "인스턴스변수VS 메소드"와 "클래스 VS 객체"  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 주석  (0) 2016.12.31
[JAVA] 기초02  (0) 2016.12.31
[JAVA] 기초01 - JAVA란?  (0) 2016.12.31

File -> Switch Workspace -> Other 


'개발 > 이클립스' 카테고리의 다른 글

[JAVA] Tip. 이클립스 폰트 설정방법  (0) 2016.12.31

상단바의 Window - Preperance


'개발 > 이클립스' 카테고리의 다른 글

[JAVA] Tip. 이클립스 Worksapce 변경 방법  (0) 2016.12.31

+ Recent posts