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

+ Recent posts