Java基本类型和数据结构

基本类型

这里写图片描述

这里写图片描述

①精度丢失和溢出?
精度丢失一般发生在浮点型存储数值或类型强制转换的时候。我们知道计算机存储数值实际存储的是二进制,举个粟子

double r1 = 1 - 0.99;
double r2 = 2 - 0.99 

r1的值是0.010000000000000009,r2的值为1.01,因为0.99转换成二进制的时候就已经精度丢失了。小数二进制和十进制的转换方法,类似于十进制无法表达1/3一样。所以进行计算后有可能计算出来的数值不正确(是否正确主要看二者进行二进制的运算后再转换回十进制是否正确了)

溢出一般发生在赋值超出了目标类型所能表达的范围
如byte表达范围在【-128~127】之间,如果赋值130的话则

//130的二进制
0000 0000 0000 0000 0000 0000 1000 0010
//强制类型转换后
1000 0010
//第一位为1的为负数,负数用补码表示,所以要显示原码,要取反加1,即
0111 1110
//转换成十进制,加上符号位就是-126

PS:精度丢失在计算中的解决方法,使用String来保存数值,计算时使用BigDecimal来进行计算。

②转换问题?

  1. 类型由小到大自动转换,由大到小需强制转换,小数部分直接舍掉。
//需强制转换且a的值为10
int a = (int)10.8
  1. 整型字面常量的大小超出目标类型所能表示范围也需要强转,溢出
//需强制转换,b1为-128,b2为-127
byte b1 = (byte)128;
byte b2 = (byte)129;
  1. 复合运算符(+=、-=、*=、/=、%=)是可以将右边表达式的类型自动强制转换成左边的类型
int a = 8;  
short s = 5; 
s += a;
s += a+5; 
  1. char是无符号类型,其他类型转换成char都需要显式强制转换,赋值负数也需要强制转换

PS:Java中类属性变量会默认赋初始值,局部变量则需要手动初始化,引用数据类型不管在哪都会被赋予初始值null,String类型的初始值也是null

常用类

String
Date

正则表达式

数据结构概述

基本组成
  • 数组:
    优点:内存空间连续,查询快,相对其他结构消耗内存空间小
    缺点:初始化时就需要分配数组(内存)大小,不支持动态扩充,插入和删除慢
    一维数组是在内存连续分配的一段存储空间,多维则如下
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值