[면접의 자바 기초] 작은 지식 요약

1. 자바의 유형
기본 데이터 유형 및 참조 유형 포함
· 기본 데이터 유형(4클래스 8종) 바이트 수에 해당하는 패키지 클래스:
· 문자형(char)2 기본값\u0000 Character
정형
· 바이트(byte) 1 기본값 0 Byte
· Short 2 기본값 0 Short
· 정수 (int) 4 기본값 0(기본값) Integer
· 정수(long) 8 기본값 0 Long
(정의할 때 l을 추가하지 않고 int 형식으로 할 수 있으며 낮음→높음 자동 변환) (정의할 때 l을 추가하고 상자를 자동으로 분해하려면 Long 대상 형식이어야 함)
· 부동점형
· 단일 정밀도(float) 4 기본값 0.0 Float(정의할 때 f 추가)
· 더블 정밀도(double) 8 기본값 0.0(기본값) Double(정의할 때 d 추가)
· 부울 기본값 false 부울
2. 자동 포장 및 해체(jdk1.5)
· 자동 포장: 기본 데이터 유형을 대응하는 인용 유형으로 포장하여 대상의 특질을 가지게 한다
            
Integer num = 4;//     Integer  valueOf(int i)  ,       Integer num = Integer.valueOf(4);,
           
Integer 클래스의value Of 방법에서 Integer Cache를 사용하면 jvm는 기본적으로 -128-127 사이의 숫자를 캐시하기 때문에 아래의 함정을 끌어냅니다
(Byte, Short, Long 클래스의 기본 캐시-128-127;Character 클래스의 기본 캐시0-127;Float 및 Double 클래스는 캐시하지 않음)
/**
 * Created by 111 on 2016/2/24.
 */
public class BoxTest {
    public static void main(String [] args){
        Integer a = 4;
        Integer b = 4;
        Integer c = 200;
        Integer d = 200;
        Integer e = new Integer(4);
        Integer f = new Integer(4);
        System.out.println(a==b);       //true
        System.out.println(c==d);       //false
        System.out.println(c.equals(d));//true
        System.out.println(e==f);       //false
        System.out.println(e.equals(f));//true
    }
}

· 자동 해체: 인용 유형을 기본 데이터 형식으로 간소화
   
int i = new Integer(4);//     Integer  intValue()    
             
3. 자바의 값 전달과 인용 전달
일종의 설법: 기본 데이터 유형은 값 전달에 속한다. 전달된 것은 원 파라미터의 복사이고 실참이 형삼에게 전달된 값으로 형삼의 변화가 발생하면 실참의 값에 영향을 주지 않는다.
인용 유형은 인용 전달에 속하고 전달하는 것은 대상의 인용 주소이며 형삼과 실삼이 가리키는 동일한 주소로 형삼이 바뀌면 실삼도 바뀐다.
또 다른 설:java는 모두 값 전달에 속하고 전달이라는 말을 인용하지 않았다.기본 데이터 유형과 인용 데이터 유형이든 전달하는 것은 모두 부본(즉 전가)이다. 논란이 되는 것은 인용 전달이다. 한 대상의 실례가 하나의 매개 변수로 방법에 전달될 때 매개 변수의 값은 바로 이 대상의 인용 부본이다.같은 대상을 가리키며 대상의 내용은 호출되는 방법에서 바뀔 수 있지만 대상의 인용 자체(인용된 사본이 아니다)는 영원히 바뀌지 않는다.기본 데이터 형식은 원시 매개 변수의 값을 전달하고 인용 형식은 인용 매개 변수의 사본을 전달한다. 이 사본은 매개 변수의 주소를 저장한다. 만약에 함수에서 이 사본의 주소를 바꾸지 않고 주소의 값만 바꾸면 함수 내의 변화는 전송된 매개 변수에 영향을 줄 수 있다. 만약에 함수에서 사본의 주소를 바꾸면 new의 대상과 같다.그러면 복사본은 새로운 주소를 가리키는데 이때 들어오는 매개 변수는 원래의 주소를 가리키기 때문에 매개 변수의 값을 바꾸지 않는다.(인용: 자바의 값 전달과 인용 전달)
4. for 순환 면접 문제
**
 * Created by 111 on 2016/2/24.
 */
public class BoxTest {
    public static void main(String [] args){
        int i = 4;
        for (com('A');com('B');com('C')){
            i--;
        System.out.print('D');
       if(i<0){
                break;
            }
        }
    }
    private static boolean com(char c){
        System.out.print(c);
        return true;
    }
}

위의 코드를 실행하여 ABDCBDCBDCBDCBD로 내보내기
여기서 고찰한 것은 for 순환의 운행 과정이다. 아래의 이 간단한 for 순환은 우리가 자주 사용하는 것이다
 for (int m = 0;m<4;m++){
            System.out.print(m);
      }

0123
해석: for 순환의 구조는
for(true/false); 판단 조건(true/false);연산
//조건이 충족되면 이 내용을 실행합니다
           }
실행 과정은 실행 실행 부치문→판단조건은true→집행대괄호의 내용→연산→판단조건은true→집행대괄호의 내용→연산이다.조건이 false나break일 때까지 순환합니다.
5.final,static 수식자의 역할·final: 계승은 봉인된 특성을 깨뜨렸기 때문에 일단 계승되면 부류의 속성은 다시 쓸 수 있기 때문에 이 키워드는 이 문제를 잘 해결한다★final 수식의 변수는 상수이다.★final 수식 방법은 한 번만 부여할 수 있습니다 ★final 수식 클래스는 계승할 수 없습니다·static: ★static는 수식 문자로 구성원을 수식하는 데 사용됩니다.★static 수식된 데이터는 공유 데이터로 모든 대상에게 공유되고 대상에 저장된 데이터는 특유의 데이터이다.★static은 대상보다 우선적으로 존재하고static 수식의 구성원은 클래스가 불러오면서 이미 존재하며 클래스 이름을 사용할 수 있습니다.호출하기 6.인터페이스, 추상 클래스, 클래스·인터페이스:인터페이스로 클래스 이름을 수식하고 ★인터페이스의 방법은 모두 추상적이다. (방법은 성명만 있고 실현되지 않는다) ★인터페이스의 구성원은 모두 공공 권한이다.흔한 구성원은 전역 상수(public static final)와 추상적 방법(public abstract, 일반적으로 생략 가능)·추상적 클래스: abstract로class를 수식한다.★추상류에는 abstract에 의해 수식된 추상적인 방법이 포함되어 있다. ★추상류에서 구성원은 공공 권한일 수도 있고 보호된 권한일 수도 있고 사유일 수도 있지만 추상적인 방법은 사유일 수도 없고 static일 수도 없다.final 수식 ★ 추상 클래스에는 구조 함수가 있지만 실례화할 수 없습니다. 하위 클래스의 대상을 초기화하는 데 사용됩니다.
            
· 클래스:
삼자간의 관계: ★인터페이스는 인터페이스를 계승할 수 있다
★ 추상류는 추상류, 류를 계승하여 여러 인터페이스를 실현할 수 있다
★클래스는 추상적인 클래스, 클래스를 계승할 수 있고 여러 인터페이스를 실현할 수 있다
7. 다태적 구성원 변수의 특징
· 구성원 변수: 컴파일링과 운행은 모두 등호 왼쪽을 본다
· 구성원 함수: 왼쪽을 컴파일하고 (왼쪽 클래스에 이 방법이 없으면 컴파일 오류) 오른쪽을 보고 (오른쪽 클래스에 덮어쓰는 방법을 실행합니다)
· 정적 구성원 함수: 컴파일링과 운행은 모두 왼쪽을 보고 정적 함수는 클래스와 동시에 존재합니다
부류
/**
 * Created by 111 on 2016/2/29.
 */
public class Fu {
    int num = 1;
    public void method1(){
        System.out.println("fu_1");
    }
    public void method3(){
        System.out.println("fu_3");
    }
    public static void method4(){
        System.out.println("fu_4");
    }
}
  
/**
 * Created by 111 on 2016/2/29.
 */
public class Son extends Fu {

        int num = 2;


        public void method1() {
            System.out.println("zi_1");
        }
        public void method2(){
            System.out.println("zi_2");
        }
        public static void method4(){
            System.out.println("zi_4");
        }


}

테스트 클래스
/**
 * Created by 111 on 2016/2/29.
 */
public class Test {
    public static void main(String[]args){
        int num = 4;
        Fu fu = new Son();
        fu.method1();//zi_1
        fu.method3();//fu_3
        fu.method4();//fu_4
    }
}

8.public、protected、default、private
· private 수식된 구성원은 같은 클래스에서 접근할 수 있습니다
·default 기본적으로 같은 가방에 접근할 수 있습니다
· 보호된 수식의 구성원은 같은 가방과 하위 클래스에 접근할 수 있습니다
·public 수식의 구성원은 모두 방문할 수 있다
9. = = 및 equals
· 기본 데이터 형식에 대한 비교용 = = 두 필드의 값이 같은지 비교
· 인용 유형에 대한 비교: ==비교는 두 인용 유형이 가리키는 대상의 주소의 값이 같은지 여부이다
equals가 비교하는 것은 두 인용 유형이 가리키는 대상에 저장된 내용이 같은지 여부입니다. (여기에서 String의 비교를 주의해야 합니다)
/**
 * Created by 111 on 2016/2/29.
 */
public class Demo8 {
    public static void main(String [] args){
        String s1 = "a";
        String s2 = "b";
        String s3 = "ab";
        String s4 = "a"+"b"; //          ab,       
        String s5 = s1+s2;//  ,     ,      ,       
        System.out.println(s3==s4);//true
        System.out.println(s3==s5);//false
    }
}

상수지 (constant pool): 컴파일링 기간이 정해지고 컴파일된 것에 저장되는 것을 가리킨다.class 파일의 일부 데이터입니다.그것은 클래스, 방법, 인터페이스 등에 대한 상수도 포함하고 문자열 상수도 포함한다.

좋은 웹페이지 즐겨찾기