02程序设计基础

本篇整理的主要是数据类型、运算符等核心基础知识。

1. Java的数据类型都有什么?

Java数据类型有基本数据类型和引用数据类型两种。

引用数据类型:数组、类、接口。

基本数据类型:整型(byte、short、int、long)、浮点型(float、double)、字符型(char)、布尔型(boolean)。

byte:1字节,表示范围-128~127,表示内容传递(IO、网络传输)或者编码转换时会用byte。

short:2字节,用的很少。

int:4字节,大概21亿吧。整数的默认类型,如果你感觉21亿不够用,那就用long。

long:8字节,可用来存储日期时间、文件和内存大小等。

float:4字节,用的很少。

double:8字节,浮点数的默认类型。

char:2字节,范围是0~65535。范围很大了,能保存中文字符,处理中文时可使用char来避免乱码。

boolean:只有true和false两种值。

boolean数据类型占用的大小并没有明确规定,单独使用占4字节,以数组形式使用占1字节。
boolean类型单独使用时会被编译为int类型,每个boolean元素是4个字节。
boolean数组在Oracel的JVM中,会被表示为byte数组,相当于每个boolean元素占1字节。

2. 数据为什么会溢出、怎么解决?

为什么数据溢出?

计算机中二进制位是基本的组成单元。int数据占用32位的长度,第一位是符号位,其余31位是数据位,当已经是该数据类型保存的最大值时,如果继续进行加1,就会造成符号位的变更,导致数据溢出。比如byte占1字节,范围是-128~127,如果此时byte b = 127,那么b++后,b变量的值会变为-128。

解决方案:扩大数据范围。要不一开始就选择数据类型范围大的,要不进行强制类型转换把数据范围小的转换为数据范围大的。

3. 讲一下数据类型转换吧。

不同数据类型之间是可以转换的。当两种不同数据类型的变量进行计算时,范围小的数据类型可以自动转换为数据范围大的数据类型。但是反过来,数据范围大的数据类型要转化位数据范围小的数据类型则需要进行强制类型转换,并且还有可能导致数据溢出或者精度丢失。

在Java中,整数默认是int类型,浮点数默认是double类型。

那我们在给byte变量赋值的时候,因为整数是int,那需要进行强制类型转换吗?

Java为了方便byte变量的赋值,做了以下处理:如果所赋值的数据在byte的范围内,则可以自动转换,如果超过了byte的数据范围就必须强制转换。

byte b = 50;//可以,50在byte的范围内,则可以自动转换
byte b = 200;//不行,200不在byte的范围内,不能自动转换
byte b = (byte) 200;//可以,但是数据溢出,b变量的值为-56。

除boolean外,其他七种数据类型之前可以进行转换。

4. 为什么浮点型的计算会出现精度丢失、如何解决?

在计算机内部,浮点型的存储和运算都是基于二进制的,由于二进制没有办法表示全部的十进制小数,因此在浮点数进行计算时可能会导致精度丢失。所以对于精度有要求的业务(钱)是不能用浮点数来做的。我们有两种解决方案:

  1. 使用BigDecimal类,它能保证精度不丢失。
  2. 转换为整数来进行运算,1.20元等于120分,懂了吧?

5. “+”操作符的使用

在Java中,“+” 既可以做加法运算,又可以做字符串的拼接。对于 “+” 的混合使用,我们记住一个原则即可:“+” 的左右的两个元素只要有一个是字符串,就会进行字符串的拼接。

6. 简化运算符 “+=”

“+=“ 表示运算和赋值两个操作,里面暗含强制类型转换。

// 简单示例
int num = 3;
num += 2;//num = 5

//强制类型转换示例
int num = 3;
num += 6.6;// 结果是num = 9,,因为+=暗含强制类型转换,等同于:num = (int) (num + 6.6);

7. 请解释以下”&&“和”&“、”||“和”|“的区别。

&&:用于逻辑运算表示短路与,在对若干个条件进行判断时,如果出现了false,则后边的条件就不再判断。

&:用于逻辑运算表示与,需要判断全部条件。用于位运算表示位与操作,只有两个元素都是1是结果才是1。

||:用于逻辑运算表示短路或,在对若干个条件判断时,只要出现了true,则后边的条件就不再判断。

|:用于逻辑运算表示或,需要判断全部条件。用于位运算中表示位或运算,两个元素只要有一个是1结果就是1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值