1. 변수

 1)지역변수 : 메소드 안에서 정의된 변수.

   - 지역변수는 반드시 초기화를 하여야한다.

 2)클래스변수 : 클래스 내부에 선언되는 변수로 프로그램 실행 시 가장 먼저 실행된다.

   - static 키워드를 사용한다. (class변수 또는 static변수라고 한다.)

   - 지역변수에서는 static을 사용 할 수 없다.

   - 초기값을 주지않아도 된다.(자동 초기화가 된다.)

   - 보안에 취약한 단점이 있다.

   - 메모리에서 언제서 소멸되는지 알 수 없다. (가비지 콜렉터(Garbage Collector) 가 없다.)

 3)맴버변수(Instance 변수) : 메소드가 아닌 클래스 내부에 있는 변수

   - static을 사용하지 않는다.

   - 생성자에 의해 생성된다. (new ~~~)

 public class MemberTest{
 String msg = "Hello, World"; // member variable
 static String msg2 = "static Hello, World2"; // class(static) variable
 public static void main(String[] args) {
  MethodTest hw = new MethodTest(); //맴버 변수는 생성자를 써야 메모리에 올라간다
  System.out.println("msg = "+hw.msg); 
  System.out.println("msg2 = "+msg2);

  Demo dem = new Demo(); 
  System.out.println("msg3 = "+dem.msg3);
  System.out.println("msg3 = "+ Demo.msg4); // 다른 클래스의 static변수는 클래스 명으로 접근가능
 }
}

class Demo{
 String msg3 = "Hello, World3"; //member variable
 static String msg4 = "Hello, World4";// static variable
}

 

 

 

2. 연산자

 - 수평적 연산자 우선순위 : 단항연산자와 할당연산자를 제외하고 모두 왼쪽에서 오른쪽으로 우선순위가 내려간다.

 - 수평적 연산자 우선순위 : 우선순위가 높은 것 먼저 하게된다.

 

 

 1) 비트연산자

  -  +,-,~ 의 2항 연산은 int형으로 확장변환(Promotion)된다. (long,float,long은 int보다 더 크기때문에 형변환 되지 않는다.)

 char ch1 = ch >>3      // 이 연산은 컴파일 에러가 발생하게된다. char를 2항연산 할 수 없기때문이다.

  - 3항 연산은 truncation이 발생한다.

 short = (true ? short : 1967) // 1967이 int형이지만 shot의 범위를 넘어서지않기 때문에 truncation이 발생하여 에러가 발생하지 않는다. 하지만 short의 단위인 2바이트의 크기를 벗어나게되면 컴파일 에러가 발생하게된다.

 2) 논리연산자

  -

 int a=5, b=9, x=15;

if (a>x && ++b>x){

 System.out.println("true");

}

else

{

System.out.println("false");

}

System.out.println("b = "+b);

 - &&는 앞의 결과에 따라 거짓이기 때문에 뒤의 연산은 수행하지 않는다. 그렇기 때문에 b의 결과는 9가 출력된다.

 int a=5, b=9, x=15;

if (a>x & ++b>x){

 System.out.println("true");

}

else

{

System.out.println("false");

}

System.out.println("b = "+b);

 - &는 앞의 결과에 관계없이 뒤의 모든 연산을 수행하게 된다. 그렇기 때문에 b의 결과값은 10이된다.

 

 

 

3. 형변환

 1) 암시적,묵시적 형변환

 2) 강제적,명시적 형변환 : cast연산자

 

 

 

 

 

 

ps.----------------------------------------------------------

1. 메소드 내에서는 절자적인 성향을 같는다.

2. 자바는 Class 밖에서 변수를 선언 할 수 없다.

3. int 를 String으로 : String.format("%5s", String.valueOf(red))

4. int 를 16진수로 : Integer.toHexString(red).toUpperCase()

5. String 을 int 로 : int red = Integer.parseInt(red);

'Programming > JAVA' 카테고리의 다른 글

자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24
JAVA 언어의 법칙  (1) 2011.03.24
JAVA의 특징과 설치  (2) 2011.03.24
자바(JAVA)란?  (1) 2011.03.24

1. Unicode

 

2. ASCII Characters

 1) 기본적으로 알아야 할 코드값 : 48 (0), 57(9), 10(NewLine), 13(Carriage return)

 

3. Comment(주석)

 1) // 한줄

 2) /* 한줄 이상의 문장 */

 3) JavaDoc : JAVA를 HTML 문서로 만드는 것. (APIDoc의 문서처럼 작성 할 수 있다.)

   - /**  문서화 된 코멘트 **/

   - 설명할 코드 바로 위에 작성 할 것

   - 명령어

 $javadoc -author -version -d [.\경로][자바파일이름]  : 경로에 html파일이 생성된다.

   - Doxygen 툴을 사용하면 쉽게 html문서를 작성 할 수 있다.

 

4. Separators(구분자)

 - (). {}, [], ;, ,, .

 - Word < Statements < Block

 

5. 식별자

 - 클래스,메소드,변수명을 지정 할 수있다.

 - 첫 클래스는 영문자나 (_), ($)만 사용할 수 있다.

 - 길이 제한이 없긴 하다.

 

6. 키워드, 예약어

 - 특수한 목적을 사용하기위해 이미 정의가 된 단어.

 - const, goto 는 키워드에 등록되어 있지만 사용 할 수는 없다.

 - enum : 1.5버전 이상에서부터 사용 가능한 키워드.

 

7. 데이터 저장

 1) 비트

  - unsigned : 모든 비트를 데이터의 양수를 표현

  - signed : 비트 하나를 부호비트로 설정하여 1일 때 음수를 표현한다.

 2) 보수

  - 1의 보수 : 데이터 비트의 반전

  - 2의 보수 : 데이터 비트의 반전 +1

 3) 자료형

  i) 내장형(기본형) : Primitive type

 수치형

 true or false

 bloolean(1bit)

 문자형

 char(2byte)

 정수형

 byte(1byte)

 short(2byte)

 int(4byte)

 long(8byte)

 실수형

 float(4byte)

 double(8byte)

 무치형

 

 void()

 

   - 형변환 : 기본적으로 강제/자동 형변환이 일어나지만, 연산에 의해서는 자동형변환이 일어나지 않는다.

 short a = 5; // 정수 5는 자동으로 short로 형변환 되어진다

 short b = 10;

 short sum = a+b ; // 하지만 연산 과정인 a+b에서는 자동 형변환이 일어나지 않아 int형식으로 sum에 입력 되기 때문에 오류가 난다.

 

 정수는 기본적으로 int의 형을 갖고

 실수는 Double의 값을 갖는다.

 float f = 0.123456789123456789F;  // double형인 실수를 float로 형변환 하여 저장하게된다.
 double d = 0.123456789123456789; //기본으로 실수는 double형이기 때문에 double에 자동으로 맞추어 출력된다.

 

  - cast :

  - convert :

 

  ii) 외장형(추상형) : Reference type = Class, Interface, Enum

    (ps. C 언어의 외장형(추상형) : User-Defined type = 구조체(Struct), Union, Class, Pointer)

  - Heap 공간을 이용한다. (변수는 값을 갖는게 아니라 그 값의 주소를 갖는다.(integer변수와 같은 4바이트를 갖는다)) 

  - String은 new 없이 사용 할 수 있는  클래스이다. ( 많이 사용하기때문에 컴파일러가 대신 new를 만들어 준다.)

 정식적인 사용 방법 :

 String str = new String("Hello");

 축약 방법 :

 String str1 = "Hello";

  - call by value, call by reference value

  Value Copy

 public class ValueCopy{
 public static void main(String[] args) {
  Test t = new Test();
  t.su = 5;
  t.num= t.su; //값복사
  System.out.println("t.num="+t.num);
  t.su =100;
  System.out.println("t.num="+t.num);

 }
}

class Test{
 public int su, num;
}

  Reference Copy

 public class ReferenceCopy{
 public static void main(String[] args) {
  Demo d = new Demo();
  d.su = 5;
  Demo d1 = new Demo();
  d1 = d; //주소복사
  System.out.println("d1.su = "+d1.su);
  d.su=100; // d 가 가지고 있는 주소를 d1에게 주었기 때문에 값이 변한다.
  System.out.println("d1.su = "+d1.su);
 }
}

class Demo{
 public int su;
}

 

 4)포인터와 레퍼런스의 차이

  - 포인터는 변수 메모리의 절대번지를 접근한다.

  - 레퍼런스는 메모리에 접근을 할 수 없다. (그래서 JAVA에서는 디바이스를 직접 생성 할 수 없다.)

 

 5) 상수 (Constants)

  - 자바에서 상수는 final keyword를 갖는다.

  - 변수명은 대문자와 특수문자 (_)를 사용한다.

 

7. 이름 정하기 (Naming Conventions) : 권고 사항으로 개발자들이 개발할 때 더욱 편하게 이름을 작성하는 표기법

 1) Pascal casing (대문자 표기법)

  - class = 명사를 사용하며 2개 이상의 단어 합성 시 첫글자는 대문자.  

  - interface = 형용사형 이나 명사형을 사용한다.

  - 상수 = 모두 대문자를 쓰며 2단어 이상 합성할 때 사이에 (_)를 쓴다.

 2) Camel casing (소문자 표기법)

  - Method = 소문자로 동사형을 사용한다. 2개 이상 합성단어의 첫문자는 대문자.

  - 변수명 = 소문자 명사형

 

 

 

--------------------------------------------------------------------------------------------------------

 - UNC = 윈도우에서 네트워크 상의 컴퓨터에 접근하기위해 사용하는 ID (LAN 환경 안에서만 사용 가능하다)

 - vachar 와 char : 메모리 용량의 사용을 줄이기 위해 가변적인 공간을 저장하였지면 현재는 메모리의 용량보다 속도가 더 중요하기 때문에 작은 데이터를 저장하더라도 char를 사용하는게 더 빠르다.

 - Stack 영역에서 Heap영역으로 옮기는 것을 boxing이라 하고, 그 반대 과정을 unboxing이라고 한다.


'Programming > JAVA' 카테고리의 다른 글

자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24
JAVA 문법과 연산자  (2) 2011.03.24
JAVA의 특징과 설치  (2) 2011.03.24
자바(JAVA)란?  (1) 2011.03.24

+ Recent posts