자바 기반의 메모 마무리

교실 자바를 배우고 있기 때문에, 나는이 메모 (라이브 업데이트)를 쓴 단지 재교육으로하므로, 자바는 새로운, 지난 해 자신을 거리에

클래스와 원시 타입 래퍼 자바

I. 서론 및 포장의 기본 유형

(또한 기본 형식이라고도 함) 여덟 가지 기본 유형 : 바이트, 짧은, INT, 긴, 플로트, 더블, 문자, 부울
팔 래퍼 클래스에 대응 : 바이트, 짧은, 정수, 긴 , 플로트, 더블, 문자, 부울

둘째, 자동 변환과 캐스트

1 자동 (고정밀의 정확도 로우에서) 변환 원리 : 바이트 짧은 문자 (피어) -> INT -> 긴 -> 부동 -> 이중

    byte b = 1;
    char c = 1;
    short s = 1;
    int i = 1;

    c = b;  // Error,同级
    c = s;  // Error,同级
    s = c;  // Error,同级
    i = c;  // OK
    int i = 1long t = 1;
    float f = 1;
    double d = 1;

    f = i;  //  Ok
    f = t;  //  Ok
    d = f;  // Ok

(2)는 주철
주물 포맷 유형 괄호에 변환 될 필요가있는 데이터를 첨가하여, 상기 데이터 변환 플러스 "()"전에 필요한

 byte b = 3;
 int i = 3;
 long t = 3;
 float f = 3;
 char c = 3;
 short s = 3;

 i = (int) f;  // OK,由高精度向低精度转换
 t = (long) f;  // OK,由高精度向低精度转换
 b = (byte) i;  // OK,由高精度向低精度转换

 i = b; // OK,由低精度向高精度转换,自动转型
 System.out.println(c==s);  // OK,true,c 和 s 自动转型为int,然后比较

 b = (byte) s;  // OK,一种类型到另一种类型转换
 c = (char) b;  // OK,一种类型到另一种类型转换
 c = (char) s;   // OK,一种类型到另一种类型转换

셋째, 자동 권투와 언 박싱

1 포장에 기본형
방법은 : 대응 래퍼 클래스 생성자에 의해 수행 될 수있다
그림 삽입 설명 여기
방법은 두 : 랩퍼 클래스는 정적 인 기능을 제공 할
그림 삽입 설명 여기

package august;

public class IntegerTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义一个double类型的数据
		double d=123.12;
		//1.通过构造函数把基本数据类型转换为对应的包装类型
		Double d1 = new Double(d);
		System.out.println(d1);     //123.12
		//2.使用包装类中的静态方法来完成
		Double d2 = Double.valueOf(d);
		System.out.println(d2);     //123.12
	}
}

도 2를 참조하면, 패키지 타입은 기본 타입으로 변환된다
래퍼 클래스에서 제공되는 기능을 사용할 수 xxxValue는, (xxx는 형식 변환 할 나타냄)
그림 삽입 설명 여기
, (3) 오토 박싱 : 기본형 자동 포장 형태로 변환된다. 포장 풀기 : 자동으로 기본 유형과 같은 패키지 유형을 변환 것이다.
당신이 포장하는 경우 자바 SE5하기 전에 필요한 첫 번째는 래퍼 클래스의 객체를 생성하고, 자바 SE5 후, 필요 그렇게하지. 바로이 같은 :

Integer i = 10;  //装箱
int n = i;   //拆箱

원리 :포장은 정수 valueOf (int) 메소드의 경우는 자동으로 호출. 압축 풀기가있는 intValue의 정수 방법되면 자동으로 호출. 같은 더블, 문자와 같은 다른 래퍼 클래스의 경우에도 적용됩니다.

* 그러나 조심 : 반환 [-128,127], 그들이 직접 작성하지 않습니다 객체 사이의 정수 리터럴로 도시 () 메서드의 나머지 따라 valueOf 개체를 다시 작성하는 경우. 코드를 봐

public class Main {
    public static void main(String[] args) {

        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;

        System.out.println(i1==i2);       // true因为100在[-128,127]之间,所以没有重新创建对象,返回值为true
        System.out.println(i3==i4);       // false因为200不在此区间,所以两者均重新创建了新的对象,所以返回值为false
    }
}
public class Main {
    public static void main(String[] args) {

        Double i1 = 100.0;
        Double i2 = 100.0;
        Double i3 = 200.0;
        Double i4 = 200.0;

        System.out.println(i1==i2);          // false
        System.out.println(i3==i4);          // false
        //四者均为double类型的值,直接都创建新的对象
    }
}

요약 :
. 1, 정수, 짧은, 바이트, 문자는, 긴 valueOf 이러한 클래스가 포함 비슷한 방법입니다 달성 제한, 공유 [-128,127]
2, 더블, valueOf 메소드가 비슷 달성 플로트, 무제한은 공유되지 포함하지;
3, 부동 소수점 및 정수 위 이외 부울 valueOf 메소드를 달성하기 위해, 두 값이 포함 한정 공유;

또한, 정수 i는 새로운 정수 (XXX를) =; 자동 포장기를 실행하지 않는다. 정수 내가 = XXX, 자동 포장 트리거, 자원의 효율성과 두 번째 방법은 일반적인 경우 점유 ([-128,127])보다 제 경우 (이 절대되지 않는다)보다 길다.

세부 사항 참조 : https://blog.csdn.net/justloveyou_/article/details/52651211https://www.jianshu.com/p/f00b3e5d3142

출시 일곱 개 원래 기사 · 원의 칭찬 0 · 조회수 233

추천

출처blog.csdn.net/weixin_44847031/article/details/104418222