java_八种基本数据类型、数据比较及常见问题

强类型语言、弱类型语言

  • 强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# 和 Python,比如Java中“int i = 0.0;”是无法通过编译的;
  • 弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。C/C++、PHP都是弱类型语言,比如C++中“int i = 0.0;”是可以编译运行的;

基础数据类型

JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean

数据类型位数默认值取值范围举例说明
byte(位)80-2^7 - 2^7-1byte b = 10;
short(短整数)160-2^15 - 2^15-1short s = 10;
int(整数)320-2^31 - 2^31-1int i = 10;
long(长整数)640-2^63 - 2^63-1long l = 10l;
float(单精度)320.0-2^31 - 2^31-1float f = 10.0f;
double(双精度)640.0-2^63 - 2^63-1double d = 10.0d;
char(字符)160- 2^16-1char c = ‘c’;
boolean(布尔值)8false/truefalseboolean b = true;

基础数据类型转换

  1. 自动(隐式)类型转换:从小类型到大类型,不需要强制转换符
/*
此处将int类型变量a的值赋值给double类型变量b,因为是小类型转换成大类型,
int类型变量a的值会自动转换成double类型并赋值给变量b
*/
	int a =5;
	double b=a;
  1. 强制类型转换:从大类型到小类型,需要强制转换符实现强制转换
  • 大类型 强制转换为小类型时,强转有可能产生精度丢失
    例如:double类型变量a的值为5.123,强制转换成int类型后数值为5,小数位舍弃,产生了精度丢失。
  • 强制转换格式:(需要转换成的类型)变量;
    /*此处将double类型变量a的值赋值给int类型变量b,因为是大类型转换成小类型,
    需要强制转换符先将double类型变量a的值转换成int类型再赋值给int类型变量b 
    大类型 强制转换为小类型时,容易出现丢失精度的问题,此处b的值为5
    */
    double a = 5.1212;
    int b = (int)a; // b =5;
    
  1. 关于byte、short、char赋值与运算的强转规则:

    1. 不参与运算,整数直接量可以直接赋值给byte,short,char,不需要强转。

    2. byte,short,char型变量参与运算时,需要强转

 	 /*
		b1与b2不参与运算,整数直接量可以直接赋值给byte;
		参与运算后,b1+b2和的值默认为int类型,需要强制转换成byte类型再赋值给byte类型变量b3
	*/
 	 byte a=2;
 	 byte b=3;
 	 byte c=(byte)(a+b);
  1. 用于数据比较不要用float、double
    因为这个两个数据类型精度不高,传感器有误,可能结果不正确
    建议使用BigDecimal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值