>  기사  >  Java  >  Java 데이터 유형 변환에 대한 자세한 설명

Java 데이터 유형 변환에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-22 10:25:172406검색

1. 기본 데이터 유형 설명

Java 언어는 8가지 기본 유형을 제공합니다. 6개의 숫자 유형(4개의 정수, 2개의 부동 소수점 유형), 문자 유형 및 부울 유형.
[참고] JAVA에는 unsigned 유형
(1)이 없습니다. 정수: int, short, byte, long
(2) 부동 소수점 유형: float, double
(3). : char
(4). Boolean: boolean

기본 유형 크기 최소값 최대값
void
boolean ----- - ----- ------
char 16비트 유니코드 0 유니코드 2^16-1
바이트 8비트 -128 +127
짧은 16비트 -2^15 +2^15-1
int 32비트 -2 ^31                                                                                                      

또한 우리는 String과 Date라는 두 가지 클래스 변수를 자주 사용합니다.

2. 데이터 변환

1 데이터 유형 변환의 종류

일반적으로 Java 데이터 유형 변환에는 세 가지 유형이 있습니다. 즉,

(1). 유형 간 변환

(2) 문자열과 다른 데이터 유형 간 변환
(3) 기타 실제 데이터 유형 변환

2 기본 데이터 유형 간 변환
기본 하위 유형 -레벨에서 상위 레벨로의 변환은 (byte, short, char)--int--long--float--double

단순 데이터 유형 간의 변환은 다음과 같이 나눌 수 있습니다.

●저레벨에서 상위 레벨로 자동 타입 변환
 ●상위에서 하위 강제 타입 변환
 ●Wrapper 클래스 전이 타입 변환 가능

 2.1 자동 타입 변환
 2.1.1 저레벨 변수 변환 가능 자동 유형 변환이라고 하는 상위 수준 변수로 직접 변환됩니다. 예를 들어 Java에서 다음 명령문을 직접 전달할 수 있습니다.

byte b;
int i=b;
long l=b;
float f=b;
double d=b;


 2.1.2 하위 수준의 경우 유형은 char 유형이며, 상위 수준 유형(정수)으로 변환할 때

char c='c';
int i=c;
System.out.println("output:"+i);

와 같은 해당 ASCII 코드 값으로 변환됩니다. 출력: 출력: 99; >

2.1.3 byte, short, char 세 가지 유형은 Flat이므로 서로 자동 변환할 수 없으므로 다음과 같은 강제 유형 변환을 사용합니다.

short i=99 ;
char c=(char)i;
i =(short) c;
System.out.println("output:"+c);

출력: 출력: c;

하지만 경험에 따르면 byte, short, int 세 가지 유형은 모두 정수이므로 정수 데이터를 연산하면 통합하는 것이 가장 좋습니다. int 유형을 사용하십시오.

2.2 강제 유형 변환

상위 변수를 하위 변수로 변환할 때 상황이 더 복잡해집니다. 강제 유형 변환을 사용할 수 있습니다. 즉, 다음 명령문 형식을 사용해야 합니다.

int i=99;
byte b=(byte)i;
char c=(char)i;
float f=(float)i;


상상할 수 있듯이 이 변환은 확실히 오버플로 또는 정확성 손실로 이어질 수 있습니다.

2.3 패키징 클래스 전환 유형 변환

다른 변수 유형 간의 변환을 논의할 때 Java의 패키징 클래스에 대한 이해가 필요합니다. 소위 패키징 클래스는 간단한 유형의 변수를 직접 표현할 수 있다는 의미입니다. 클래스의 경우 변수 유형 변환을 수행할 때 이러한 래퍼 클래스를 광범위하게 사용합니다. Java에는 Boolean, Character, Integer, Long, Float 및 Double이라는 6개의 패키징 클래스가 있습니다. 문자 그대로 각각 boolean, char, int, long, float 및 double에 해당하는 것을 볼 수 있습니다. String과 Date는 클래스 그 자체입니다. 그래서 패키징 클래스라는 개념이 없습니다.

단순 데이터 유형 간 변환(자동 변환 또는 강제 변환) 시 중간 전환을 위해 항상 래퍼 클래스를 사용할 수 있습니다.

일반적으로 먼저 변수를 선언한 다음 해당 패키징 클래스를 생성한 다음 패키징 클래스의 다양한 메서드를 사용하여 유형 변환을 수행합니다. 예:
예 1, float 유형을 double 유형으로 변환하려는 경우:

float f1=100.00f;
Float F1=f1;//自动装箱
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法  当希望把double型转换为int型时:
 
double d1=100.00;
Double D1=new Double(d1);//调用构造函数
int i1=D1.intValue();


     简单类型的变量转换为相应的包装类,可以利用包装类的构造函数和自动装箱而直接赋值。即:
    Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
    而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3 字符串型与其它数据类型的转换
  通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:

int i1=10;
float f1=3.14f;
double d1=3.1415926;
  
Integer I1=new Integer(i1);//生成Integer类
Float F1=f1; //自动装箱
Double D1=d1;
  
//分别调用包装类的toString()方法转换为字符串
String si1 = i1 + "";//这种方式更为通用
String sf1=F1.toString();
String sd1=D1.toString();
  
Sysytem.out.println("si1"+si1);
Sysytem.out.println("sf1"+sf1);
Sysytem.out.println("sd1"+sd1);

4. 将字符型直接做为数值转换为其它数据类型
  例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换:

char c = '1';
//Character的getNumericValue(char ch)方法
int i = Character.getNumericValue(c);
//ASCII码相减
i = c -'0';

5. Date类与其它数据类型的相互转换
  整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:

  Date(int year, int month, int date):以int型表示年、月、日
  Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分
  Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒

  在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。

  而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,

import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
  
//如果希望得到YYYYMMDD的格式
SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
  
//如果希望分开得到年,月,日
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

更多Java数据类型转换详解相关文章请关注PHP中文网!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.