728x90

주석 프로그래머가 참고할 내용을 기재, 실행하고는 무관하다.
//참고내용
/*  참고내용  */

개행문자
  \n => new line (줄만 바꿈, 커서위치 그대로)
     ex)  kim
                lee
                    kook

  \r => carrgae return ( 커서를 그 줄의 처음으로 위치시킨다. )
  \t => 일정 간격을 띄운다 (보통 8칸)
   보통 \n\r을 같이 쓴다...

OOP의 4대특징
 1. 캡슐화 ({}) ,은닉화 (클래스 내용은 모르고 사용법만 아는것... 사용자는 복잡하게 알 필요가 없다.)
 2. 상속성(모든 클래스는 Object 클래스를 상속받는다.)  class Test8 extends Object
 3. 다형성
     overloading - 하나의 클래스 안에 같은 이름의 메소드가 여러개 존재하는것. ( 구분은 매개변수로 가능)
     overriding -  상속받은 메서드 내용을 재정의
 4. 추상화 : 복잡한 것(개발자 입장)을 단순화(사용자 입장) 시키는 것.

명령줄인수

  자바 응용프로그램에는 main()이라는 정적 메소드를 포함하고 있다.
  이 메서드는 String 객체배열 인수한개를 받는다. 
  이 객체들은 사용자가 명령줄에 입력할 수 있는 모든 인수를 표현한다.
  명령줄 인수의 갯수는 int형으로 args.length 를 통해 구할 수 있다.
  인수는 args[0]args[1] args[2] 순으로 읽어 들여 진다.
--------------------------------------------------------------
class CmdLineArg_1
{
 public static void main(String args[])
 {
  System.out.println("인수갯수 : " + args.length);
  System.out.println("args[0] =>"  + args[0]);
  System.out.println("args[1] =>"  + args[1]);
  System.out.println("args[2] =>"  + args[2]);
 }
}
-------------------------------------------------------------
  실행(도스창에서) C:\_java\01_java\02>java CmdLineArg_1 kim lee park
  실행(jpadpro)  실행버튼 누른후 using application parameters에 다가 인수를 넣어도 된다.
    인수갯수 : 3
     args[0] =>kim
     args[1] =>lee
     args[2] =>park

  이 방법은 매개변수에 숫자를 입력해도 숫자를 문자로 인식한다..

  문자를 숫자로 변환하는 방법
--------------------------------------------------------------------
class CmdLineArg_2
{
 public static void main(String args[])
 {
  int a = Integer.parseInt(args[0]);
  int b = Integer.parseInt(args[1]);

  
  System.out.println("a :"+a);
  System.out.println("b :"+b);
  System.out.println("합:"+(a+b));
 }
}
---------------------------------------------------------------------
실행결과
  C:\_java\01_java\02>java CmdLineArg_2 10 20
  a :10
  b :20
  합:30

 숫자를 문자로 변환하는 방법   ->    ""+7 

class

- class란 객체지향 프로그램에서 가장 기본이 되는 클래스를 정의하는 키워드(예약어)
- 자바프로그램은 클래스를 하나 이상 가지게 된다.
- 주 클래스는 main()이 포함되어 있는 것을 말한다.
- 주 클래스 이름이 프로그램 이름이 된다(저장이름)

main 메소드
 - 자바 프로그램 실행시 최초로 수행되는 메서드 이다.
 - 자바에서는 함수라는 이름대신 메서드라는 말을 사용한다.
 - public : 접근 제한자
 - static : 이 클래스 내에 main()를 소속시킨다.  static은 메인함수 메모리 해제시에 같이 헤제된다.
 - main() 호출은 java.exe 실행시 JVM이 호출한다.
 - main()는 항상 다음과 같은 형식으로 써야 한다. 
    public static void main(String args[]) {}

접근 제한자
----------------------------------------------------------------
접근 제한자      같은 클래스      같은 패키지     상속관계    관련없는클래스 
---------------------------------------------------------------- 
 public                0                     0                0                  0         // 어디서나 접근가능
 protected           0                     0                0                  x         //자신의 클래스와, 파생클래스에서만 접근가능
 생략할경우           0                     0                x                  x         //같은 패키지 내에서, 같은 폴더에서만 사용가능함
 private               0                     x                x                  x         //자산의 클래스 내에서만 사용가능
----------------------------------------------------------------
    * 변수는 private으로 메서드는 public 으로 선언을 권유한다.

 1.private      :  자신의 클래스 내에서만 접근 가능
 2.생략(packge) : 같은 패키지 내에서 접근 가능
 3.protected    : 자신의 클래스와 파생 클래스 에서만 접근 가능
 4.public       : 어디서나 접근 가능

  전역변수 : 메서드 외부, 클래스 내부에 선언된 변수
  지역변수 : 메서드 내부에서 선언한 변수

---전역변수에서 ---
  은폐필드 : private 으로 선언된 필드(변수)
  보호필드 : protected  으로 선언된 필드
  공개필드 : public 으로 선언된 필드

예제 1
-----------------------------------------------------------
class VariScope
{
 static int global;// 전역변수
 
 public static void mm(){
  int local = 123;
  global = 456;
  System.out.println(local);
  System.out.println(global);
  
 }
 public static void main(String argsp[])
 {
  int local = 100;
  
  mm();
  
  System.out.println(local); // local -> 100; mm함수의 지역변수랑 혼동 하지 말것.
  System.out.println(global);
 }
}
-----------------------------------------------------------
예제 2
-----------------------------------------------------------
class PanMae
{
 public String pum;  //어디서나 사용가능
 int su; //생략은 같은 패키지(폴더) 내에서만 접근 가능
 private int dan; // 은폐필드, 자신의 클래스 에서만 사용가능
 
 public PanMae(String pum, int su, int dan){   //생성자  
  this.pum= pum;
  this.su = su;
  this.dan = dan;
 }
 public void disp(){
  System.out.println(pum + "~~~~" + su + "~~~~" + dan);
 }
}

class VariScope_2
{
 public static void main(String args[])
 {
  PanMae A =new PanMae("사과",2, 2000);  //객체 생성시 생성자 호출
  A.disp();
  
  A.pum = "감"; //공개필드에서는 서로 무관한 클래스에서도 사용가능
  A.disp();
  
  A.su = 100; //같은 패키지라서 접근 가능하다.

  A.disp();
  
  // A.dan = 500; // Error!!!    private 이라서 접근 불가

  A.disp();  
 }
}
-----------------------------------------------------------


자료형

기본 자료형     - 수치 자료형 - 정수 자료형 byte -> 1byte
                                                        char -> 1byte
                                                        short -> 2byte
                                                        int -> 4byte
                                                        long -> 8byte

                                      - 실수 자료형 float -> 4byte
                                                        double -> 8byte

                    - 논리 자료형 - boolen  - true or false

레퍼런스 자료형  - 클래스    ex) String은 원래 클래스이나.. 자료형처럼 사용가능..
                       - 인터페이스
                       - 배열
  byte < short  = char < int < long < float < double

식별자 Identifier

식별자는 변수명, 메서드명, 클래스명, 상수명 등을 말한다.
변수명 : 데이터를 넣을 기억장소

 *변수이름을 만드는 규칙
   1. 영문자, 숫자 조합하여 사용 (첫문자가 숫자불가능)
   2. 키워드(예약어)는 사용할 수 없다.
   3. 공백사용 불가.
   4. 특수문자 사용불가 (단, _,$ 는 사용가능)
       예)  int $a = 20;
             int _a = 30;
  Literal 상수 ==> 데이터
   1. 정수상수 ( 10 , 10L, 0xA, 014)  default - int형
   2. 실수상수 ( 12.4, 12.5f, 12.E+01) default  - double형
   3. 문자상수 ( 'A', '1', '\n')
   4. 문자열상수 ("A", "ABC")

int i =10;
i+"" =>문자열로 변환됨
i+'' =>code값으로 변환됨
i+'A' =>code값으로 변환됨

형변환

자동 형변환
  double d = 12.5f;
  long a =10;
  큰 자료형으로 변환된다.

강제 형변환(casting)
  float b = (float)12.5;   //double형 12.5을  float 으로 강제 형변환
  char ch = (char)65; 

전역변수와 지역변수
  전역변수 : 클래스안, 메서드 밖에서 선언된 변수   ->  값을 안넣어주면 자동으로 1로 초기화
  지역변수 : 메서드 안에서 선언된 변수                ->  자동초기화 안됨

--------------------------------전역변수----------------------------------
class Test{
 int a;
 char ch;
 double d;
 String str;
 Boolean b;
 //전역변수 초기화 x
 public void disp()
 {
  System.out.println("a:" +a);
  System.out.println("ch:" +ch);
  System.out.println("d:" +d);
  System.out.println("b:" +b);
  System.out.println("str:" +str);
 }
}

class VarTest_5
{
 public static void main(String args[])
 {
  Test A = new Test();
  A.disp();
 }//end main
}// end class
-------------------------------------------------------------------------

결과값:  a:0
           ch:
           d:0.0
           b:null
           str:null



----------------------------지역변수--------------------------------------
class Test2
{
 public void disp()
 {
  //지역변수 초기값 x
  int a;
  double d;
  String str;

  System.out.println("a:"+a);
  System.out.println("d:"+d);
  System.out.println("str:"+str);
 }
}
class VarTest_6
{
 public static void main(String []args)
 {
  
 }
}
---------------------------------------------------------------------------

오류메시지 : 
     variable a might not have been initialized
     variable d might not have been initialized
     variable str might not have been initialized


+ Recent posts