Java基础——数据类型、对整型数据的存储、转义字符、类型转换

一、数据类型:数据在内存当中的存储形式

分为基本数据类型和引用数据类型

基本数据类型:

包含整型(byte short int long)、浮点型:float double、布尔型:boolean、字符型:char

1.整型:byte short int long

整型类型

大小

组成

范围

byte

8bit

符号位+数值: 1bit+7bit

127 ~ -128

short

16bit

符号位+数值: 1bit+15bit

int

32bit

符号位+数值: 1bit+31bit

long

64bit

符号位+数值: 1bit+63bit

注意:应用时不能超出类型的范围,超出范围数值不准确,例如:

public static void main(String[] args){
    byte a = 127;
    byte b = 1;
    byte c = (byte)(a+b);
    System.out.println(c);
} //该输出结果为-128   因为128没有在byte的表示范围内   
 2.浮点型:float double

float

32bit

符号位+阶位(存储小数点位)+数值:1bit+8bit+23bit

单精度类型

double

64bit

符号位+阶位(存储小数点位)+数值:1bit+11bit+52bit

双精度类型

 注意:数据以浮点数形式存储,面对二进制是无限循环的小数会产生精度误差。

解决方法:用 BigDecimal 类进行高精度计算 要引入import java.math.BigDecimal;

public static void main(String[] args){
    System.out.println(1.2-1);
}  //运行结果:0.19999999999999996
//引入BigDecimal 类
//doubleValue() 将BigDecimal 结果转换为double 类型  subtract相减 
public static void main(String[] args) {
    BigDecimal b1 = new BigDecimal("1.2");
    BigDecimal b2 = new BigDecimal("1");
    Double value = b1.subtract(b2).doubleValue();   
    System.out.println(value);
}
3.布尔型:boolean

boolean(布尔)类型有两个值:flase和true,用来判断逻辑条件。数值型和boolean之间不能直接转化。

4.字符型:char

1.字符类型实际上是一个16位无符号整数,这个数对应字符的编码

2.java字符类型采用Unicode字符集编码。Unicode是世界通用的定字长字符集,所用字符都是16位

3.任何一个字符都可以转化为一个整数,整数的范围是0-65535

二、计算机对整型数据的存储方式:

数据类型 变量 = 数值; (数据类型决定数据在内存中如何存储)

1.数据类型直接转化对应的二进制形式

2.根据数据类型进行补充 在数值前面用0填补

3.正数符号位为0 负数符号位为1

反码:

正数的反码 = 源码;

负数的反码 = 源码的符号位不变,其余按位取反;

例:

补码: 计算机当中存储数据类型的形式

利用补码运算

正数的补码 = 反码 = 补码;

负数的补码 = 在反码的基础上末尾加1;

数据

源码

反码

补码

short c = -12;

1 000000000001100

byte a = 10;

0 0001010

0 0001010

0 0001010

byte b = -10;

1 0001010

1 1110101

1 1110110

运算:

例:

二进制转换:

1.将二进制数中的每一位从右向左标记为第0位、第1位、第2位...。

2.对于每一位,将其值(0或1)乘以2的相应次方(从0次方开始)。

3.将所有乘积相加,得到的结果即为十进制数。

三、转义字符:

对于不方便输出的字符可以采用转义字符表示:

----------------------------------------------------------------------------------------------------------------

转义字符 含义

\n 表示回车

\r 表示换行符

\\ 表示反斜杠( \ )

\' 表示单引号( ' )

\" 表示双引号( " )

---------------------------------------------------------------------------------------------------------------------

例:

public static void main(String[] args) {
    int num = 100;
    String json = "{"+"\"count\":"+num+"}";// /斜杠 \反斜杠
    String dataString = "[{\"id\":\"1\" ,\"name\":\"张三\"},{\"id\":\"2\" ,\"name\":\"李四\"},{\"id\":\"3\" ,\"name\":\"王五\"}]";
    System.out.println(json);
}  //输出结果:{"count":100}

四、类型转换:

1.基本数据类型转换:

例:

public static void main(String[] args){
    byte a = 127;
    byte b = 1;
    byte c = (byte)(a+b);
    System.out.println(c);
} //该输出结果为-128   因为128没有在byte的表示范围内   

但此时更改代码直接输出a+b的结果,则输出结果为128。因为此时进行了基本类型转换,将byte自动转换为int类型。

public static  void main(String[] args){
    byte a = 127;
    byte b = 1;
    System.out.println(a+b);
}
2.强制类型转换:

小碗装大碗,可能会数据丢失

数据丢失的情况:
2.1.浮点数到整数

当将浮点数转换为整数时,小数部分会被截断,导致精度丢失。

public static  void main(String[] args){
    double a = 5.99;
    int b = (int) (a);
    System.out.println(b);
}  //运行结果5   小数部分被丢弃
2.2.较大整数到较小整型

将一个较大的整数转换为较小的整数类型。

public static  void main(String[] args){
    int a = 129;
    byte b = (byte) (a);
    System.out.println(b);
}   //运行结果为-127   因为129超出了byte的最大范围
2.3.字符到整数

将字符转换为整数时,得到的是其 ASCII 值,但如果字符本身不能直接表示为整数,可能会导致误解。

public static  void main(String[] args){
    char c = 'A';
    int i = (int)(c);
    System.out.println(i);
}  //运行结果  65  没有丢失,但对于非标准字符或特殊字符可能存在问题
2.4.布尔值到整数

将布尔值转换为整数时,true 转为 1,false 转为0,这不会丢失精度,但逻辑信息可能会丢失。

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值