数据类型以及一些使用细节

数据类型以及一些使用细节,第1张

数据类型以及一些使用细节 数据类型

Java中数据类型分为基本数据类型和引用数据类型。基本数据类型有 8 种,分别是字节型(byte) 、短整型(short) 、整型(int) 、长整型(long)、单精度浮点型(float) 、双精度浮点型(double)、字符型(char) 、布尔型(boolean)。引用类型有类、接口、数组。这里我们主要来了解基本数据类型和一些使用细节。

注:[ ]里的数代表类型所占字节数 

整数类型

Java 的整数类型就是用于存放整数值的,比如 1 , 15, 100 等等

它们所占内存的大小也决定着它们可以存放的数值范围:

byte: -128 ~ 127

short: -332768 ~ 32767

int: -2147483648 ~ 2147483647

long: -2^63 ~ 2^63-1(^63表示63次方)

整型的使用细节

1、java各数据类型所占内存有固定的大小,不会受 *** 作系统影响

2、Java的整型常量默认为int型,声明long型时必须在后面加上‘l’或者‘L’

int n1 = 1;//4 个字节
int n2 = 1L;//错误
long n3 = 1L;//对

3、java程序中数值变量常声明为int型,除非不足以表示才用long

浮点类型

Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等

单精度float占用4个字节,范围为: -3.403E38 ~ 3.403E38

双精度double占用8个字节,范围为: -1.798E308 ~ 1.798E308

浮点型的使用细节

1、浮点数在机器中存放形式,浮点数=符号位+指数位+尾数位

2、尾数部分可能丢失,造成精度损失(小数都是近似值)

3、java的浮点型常量默认为double型,声明float型常理,必须在后面加上‘f’或者‘F’

float num1 = 1.1; //错误
float num2 = 1.1F; //对
double num3 = 1.1; //对
double num4 = 1.1f; //对

4、浮点型常量有两种表示形式:

1)十进制数形式:5.12    52.14    .520(小数点前面的零可以省略,但小数点必须有)

double num5 = .123; //等价 0.123
System.out.println(num5);

2)科学法计数形式: 5.12E2(5.12*10的2次方)    5.12E-2(5.12*10的-2次方)

System.out.println(5.12E2);//512.0
System.out.println(5.12E-2);//0.0512

5、通常情况下用double型,因为它比float型更精准,不容易丢失精度

double num9 = 2.1234567851;
float num10 = 2.1234567851F;
System.out.println(num9);//2.1234567851
System.out.println(num10);//2.1234567

6、浮点数使用的一个陷阱:2.7 和 8.1 / 3 比较

看下面的一段代码

        double num1 = 2.7;
		double num2 = 8.1/3; 
		System.out.println(num11);//2.7
		System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7
		
		//错误的比较方法
		if( num1 == num2) {
		System.out.println("num11 == num12 相等");//不会输出
		}
		//正确的比较方法
        //是以两个数的差值的绝对值,在某个精度范围类判断
		if(Math.abs(num11 - num12) < 0.000001 ) {
		System.out.println("差值非常小,到我的规定精度,认为相等");
		}
字符类型

字符类型可以表示单个字符,字符类型是 char,char 是2个字节(可以存放汉字)

字符型的使用细节

1.字符常量是用单引号( ' ')括起来的单个字符,不是双引号(" ")。如:charc1= 'a'; charc2 = '中‘; charc3= '9';

2. Java中还允许使用转义字符 '' 来将其后的字符转变为特殊字特型常量。例如: charc3= 'n' ;'n'表示换行符

3.在java中char的本质是一个整数, 在输出时是unicode码对应的字符。

unicode码查询网址:http://tool.chinaz.com/ Tools/Unicode.aspx

4.可以直接给char赋一个整数, 然后输出时,会按照对应的unicode字符输出[97->a]

char c1 = 97;
System.out.println(c1); // a
char c2 = 'a'; //输出'a' 对应的 数字
System.out.println((int)c2)

5. char类型是可以进行运算的, 相当于个整数。 因为它都对应有Unicode码

布尔类型

1.布尔类型也叫boolean类型,boolean类型占1个字节,booolean类型数据只允许取值true和false,无null

2. boolean类型适于逻辑运算,一般用于程序流程控制:

if条件控制语句;

while循环控制语句;

do-while循环控制语句;

 for循环控制语句:

基本数据类型转换 自动类型转换

当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。

数据类型按精度(容量)大小排序为:

自动类型转换注意和细节:

1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

//系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
int n1 = 10; //ok
float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double
double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double
float d1 = n1 + 1.1F;//对 n1 + 1.1 

2当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。

int n2 = 1.1;//错误 double -> in

3.(byte, short)和char之间不会相互自动转换。

//当把具体数赋给 byte 时,(1)先判断该数是否在 byte 范围内,如果是就可以
byte b1 = 10; //对 , -128-127
int n2 = 1; //n2 是 int
byte b2 = n2; //错误,原因: 如果是变量赋值,判断类型

char c1 = b1; //错误, 原因 byte 不能自动转成 char

4. byte,short, char 他们三者可以计算,在计算时首先转换为int类型。

byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1;//错, b2 + s1 => int
int s2 = b2 + s1;//对, b2 + s1 => int
byte b4 = b2 + b3; //错误: b2 + b3 => in

5. boolean不参与转换

boolean pass = true;
int num100 = pass;//错误 boolean 不参与类型的自动转换

6.自动提升原则:表达式结果的类型自动提升为 *** 作数中最大的类型

强制类型转换

强制类型转换就是自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出,格外要注意。

int i=(int)1.9;
System.out.println(i);

int j=100;
byte b=(byte)j;
System.out.println(b);

强制类型转换细节说明

1.当进行数据的大小从大——>小,就需要使用到强制转换

2.强转符号只针对于最近的 *** 作数有效,往往会使用小括号提升优先级

int x=(int)10*3.2+5*1.2;
int y=(int)(10*3.2+5*1.2);
System.out.println(x);
System.out.println(y);

3. char类型可以保存int的常量值,但不能保存int的变量值,需要强转

char c1=100;//ok
int m=100;//ok
char c2=m;//错误
char c3=(char)m;//ok
System.out.println(c3);

4. byte和short, char类型在进行运算时,当做int类型处理。

基本数据类型和 String 类型的转

在程序开发中,我们经常需要将基本数据类型转成String类型。或者将String类型转成基本数据类型。

基本类型转String类型:

语法:将基本类型的值+""即可

int n1 = 100;
float f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 + "";
String s2 = f1 + "";
String s3 = d1 + "";
String s4 = b1 + "";
System.out.println(s1 + " " + s2 + " "+s3+" "+s4);

 String类型转基本数据类型

语法:通过基本类型的包装类调用parseXX方法即可

String s5 = "123";

int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5523710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存