数据类型和类型转换(Java)

  • Post author:
  • Post category:java


Java的基本类型有:

byte、short、int、long、float、double、boolean、char、String。

基本类型 二进制位数 最小值 最大值 默认值 包装器类型
byte 8 -128 127 0 Byte
short 16 -32768 32767 0 Short
int 32 -2147483648 2147483647 0 Integer
long 64 -9223372036854775808 9223372036854775807 0L Long
float 32 1.4E-45 3.4028235E38 0.0f Float
double 64 4.9E-324 1.7976931348623157E308 0.0d Double
boolean false Boolean
char 16 0 65535 ‘u0000’ Character
String 40+2*length null

参考自:

https://www.runoob.com/java/java-basic-datatypes.html

严格来说String并不是基本的数据类型,而是一个类,但是String类是Java自带的标准库里面的类,可以直接使用,按照我们的使用和习惯,可以把它当成数据类型来看待。

日常使用熟悉int、float、boolean、char、String就够了。



数值型



整型

//可以在声明变量的时候赋值,也可以先声明,之后再赋值
int a = 1;	//声明的时候同时赋值
int b;
b = 2;      //先声明,再赋值
int c = 3, d, e; //可以同时声明多个变量



其他类型转整型



浮点型转整型

用法:(int)f

参数:f为浮点数

返回:整型数值

float f = 2.56f;
double d = 3.3333;
int a = (int)f;
int b = (int)d;
int c = (int)1.05;
System.out.println(a);
System.out.println(b);
System.out.println(c);
/*
输出:
2 
3 
1
*/



字符串类转整型

用法:Integer.valueOf(String s)

参数:s为String类

返回:整型数值

String s = "123";
int a = Integer.valueOf();



浮点型

小数默认为double类型,如果要赋值给float类型,则需要在后面加上’f’,否则会报错”从double转换到float可能会有损失“,因为double类型比float精度高。

float f1 = 2.56;    // 精度丢失,会报错
float f2 = 2.56f;   // 在小数后面加上f转为float型,正确
double d = 3.3333;  // 默认精度为double,正确



其他类型转浮点型



整型转浮点型

用法:(float)a、(double)a

参数:a为整数

返回:对应浮点数类型

int a = 1, b = 2;
float f = (float)a;
double d = (double)b;
System.out.println(f);
System.out.println(d);
/*
输出:
1.0
2.0
*/



String类转浮点型

用法:Float.valueOf(String s)

参数:s为String类

返回:浮点型数值

String s = "1.23";
float f = Float.valueOf(s);



字符型



字符

不同于C++的char类型,Java的char类型为两个字节的Unicode 字符,最小值是 \u0000(十进制等效值为 0),最大值是 \uffff(即为 65535),可以保存任何单个字符(包括中文字符)。

/*
直接赋值字符或者ASCII值或Unicode值,效果是相同的
示例的a和b的值都为字符a
*/
char a = 97;
char b = 'S';
char c = '字';
char d = '\u5b57';     // 十六进制的5B57相当于十进制23383
char e = 0x5b57;
char f = 23383;        // c、d、e、f的赋值方式是等效的
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
/*
输出:
a
S
字
字
字
字
*/



其他类型转字符

用法:(char)a

参数:a为数字(整型或浮点型)

返回:返回相应的Unicode值,浮点数则转成整数再返回Unicode值(一般不会把浮点数转为字符)

char a = (char)97;
char b = (char)100.5;   // 转为100再赋给b
System.out.println(a);
System.out.println(b);
/*
输出:
a
d
*/



字符串

有三种方式对一个String类进行赋值。

String s1, s2, s3;
s1 = "abc";                 // 赋值构造
s2 = new String("xyz");     // 对象构造
s3 = s1;                    // 拷贝构造



其他类型转字符串

用法:String.valueOf(a)

参数:a可以是int、long、float、double、char[]等

返回:String类

int a = 123;
float f = 4.56f;
char []chArr={'a','b','c'};
String sInt = String.valueOf(a);
String sFloat = String.valueOf(f);
String sChArr = String.valueOf(chArr);  // sChArr = "abc"



布尔型

关键字为boolean

boolean a = true;   // 直接用true和false关键字赋值,a的值为true
boolean b = 3>5;    // 用逻辑表达式赋值,b的值为false
boolean c = 1;      // **不能用整型数字赋值,会报错**



类型转换

用法:Boolean.valueOf(a)

参数:a可以是true/false关键字、逻辑表达式、字符串等

返回:boolean类型的值

其中字符串的执行过程为:字符串为true(所有字符不分大小写)则返回true,其他返回false

boolean a = Boolean.valueOf(true);      // true
boolean b = Boolean.valueOf(3>5);       // false
boolean c = Boolean.valueOf("true");    // true
boolean d = Boolean.valueOf("tRuE");    // true
boolean e = Boolean.valueOf("false");   // false
boolean f = Boolean.valueOf("abc");     // false



版权声明:本文为weixin_42820169原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。