교실 자바를 배우고 있기 때문에, 나는이 메모 (라이브 업데이트)를 쓴 단지 재교육으로하므로, 자바는 새로운, 지난 해 자신을 거리에
자바 기반의 마무리 노트
클래스와 원시 타입 래퍼 자바
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 = 1;
long 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/52651211 및 https://www.jianshu.com/p/f00b3e5d3142