06※、8种基本数据类型

本文详细介绍了Java中的两大类数据类型:基本数据类型和引用类型,包括它们的存储范围、精度以及转换规则。特别强调了整型和浮点型的溢出问题,以及在类型转换中可能遇到的编译错误和解决方案。此外,还提到了布尔型和字符型的特性,并探讨了Unicode编码在Java中的应用。
摘要由CSDN通过智能技术生成

Java中有两大数据类型:基本数据类型、引用类型(String Math ArrayList)【无数种】

※基本数据类型(8种)

--定义一个变量 类型 标识符 java是强类型语言 【兼容的数据才可以赋值到该类型的变量中进行存储】

--byte   字节型   1个字节   8位  【最高位是符号位】 -128~+127

--short  短整型  2个字节 16位   【最高位是符号位】 -32768~+32767

--int       整形     4个字节  32位  【最高位是符号位】 -21亿~21亿 -2147483648~2147483647

--long    长整形 8个字节 64位    【最高位是符号位】 -922亿亿~922亿亿 -9223372036854775807~9223372036854775808

注意:超过int范围是要使用L或者l来表示为long类型的数据

    在java中所有整型数值默认为int类型(计算器也是一样取整数%*/号都是取余数详细计算 ed:78.9%10=8)

//注意:【特殊情况】 不确定性:不确定两数相加的和是不是会超出范围,因此编译出错  【byte\short】

 /**
  *
  * @Author Lantzrung
  * @Date 2022年7月16日下午5:23:59
  *  
  **/
    byte item1 = 2;//102
    byte item2 = 3;//103
    byte item3 = item1+item2;//编译错误:不兼容的类型: 从int转换到byte可能会有损失 [原因:两 
    //数相加的和是大于127]
    solution:byte item4 = (byte)(item1+item3)
    System.out.println("item4="+item4);//结果:-51    
    //205-128-->77-->-127+77-->-50 因为0不用算故此 要向前移动一位 -50-1-->-51
    //(int强转byte类型容量不足,溢出,故从byte类型的最小值取值开始)
    
    byte b = 182;//编译错误: 不兼容的类型: 从int转换到byte可能会有损失
 
    solution:byte b = (byte)182;结果:-74
    //(int强转byte类型容量不足,溢出,故从byte类型的最小值取值开始)   
    byte b1 = 2;//程序能输出2  
        
    short s = 45182;//编译错误:不兼容的类型:从int转换到short可能会有损失
    solution: short s1 = (short)45182;//结果:-20354 和上述同理        
    int i = 21000000000;//编译错误:过大的整数:21000000000 210亿 int最大的整数值为21亿左右
    long l = 21000000000;//错误:过大的整数:21000000000
    solution:long l1 = 21000000000L;//在过大数值中加上L的字母就可以把int类型数组提升为long类 
    //型数组
    System.out.println(l1);//210000000000
    
    int item1 = 67;
    byte item2 = item1;//编译error:不兼容的类型:从int转换到byte可能会有损失    
    solution:byte item2 = (byte)item1;//67 强转
    short item3 = item1;//编译error:不兼容的类型:从int转换到short可能会有损失
    solution:short item3 = (short)item1;//67 强转     

   --float 单精度浮点型 4个字节 32位(bit)

1位符号位(第31位) 8位是指数位(第30-23位) 32位是尾数位(第22-0位) 使用f或者F后缀表示float型数值 float的精度(小数值)为7~8有效数字 (-1.4E45 ~ 3.4E38) ( -2^128~ 2^128)

    --double 双精度浮点型 8个字节 64位(bit) 1位符号位(第63位) 11位是指数位(第62-52位) 52位是尾数位(第51-0位) double的精度为16~17位有效数字 (-2^1024~2^1024)

    在java中所有浮点型数值默认为double类型

public class Demo2{
    public static void main(String[] args){
        float a = 16.33;
        System.out.println(a)    
    }
}

--相同字节数的浮点类型数据比整型的数据类型保存的数值要大 可以使用科学计算法的表示:

        19896.72 --->  1.989672*10^4 --->1.989672e4

        1989.672 ---> 1.989672*10^3 --->1.989672e3

    --浮点运算的精确度(正无限大和负无限大)

--可以使用下划线来分隔数值

double d1 = 1.989672e4;
System.out.println(d1);//19896.72
double d2 = 1.989672e3;
System.out.println(d2);//1989.672

//可以使用下划线来分隔数值
int item = 45_89_65_451L;
System.out.println(item);

--布尔型:boolean true|false

public class Demo{
  public static void main(String[] args){
    boolean ok = false; 
    boolean pass/*通过*/ = (3>2); 
    System.out.println(pass);//true
  }
}

--char 16个字节 单字符类型

1、使用单引号描述 "c"表示为字符串 'c'表示为单字符

2、char中的变量只能存放一个字符 【字母、数字、符号、中文】

3、编码 字符转换为2进制的数值 进行存储 ASCII码(128bit) UNIcode(UTF-8)(存放中文)

 ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统

                二进制--->10进制--->字符

          

--unicode是国际通用编码,utf-8编码是unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。utf-8在网络之间传输时可以节约数据量。编码进行存放

--设置int_value变量得出char存放UNIcode的数值,后使用计算器输入数值,转编码16进制 UTF-8形式的编码  ‘\uxxxx’

--solution:int int_value = c;//-->Output result:21000 -->使用计算器输入value得出HEX(十六进制) --> 4e2d -->再令c4='\u4e2d' -->char就会通过UTF-8数值得出中文而不是通过ASNI编码格式进行存储;

                比如:中-->int_value-->20013(使用计算器16进制)-->'\u4e2d'

/**
  *
  * @Author Lantzrung
  * @Date 2022年7月16日下午5:27:43
  *  
**/
public class Demo{
    public static void main(String[] args){
        char c = 'c';//c
        char c1 = "c";//complie error:不兼容的类型:String类型无法转换为char类型
        char c1 = 'abc';//compile error:未结束的字符文字;
        char c2 = "abc";//compile error:不兼容的类型:String类型无法转换成char类型
        
        char c3 = '中';//char类型数组用ASNI编码格式进行存储,Output result:中
        demand:需要把char c3 ='中'转码为UNIcode的数值;
        solution:int int_value = c;//-->Output result:21000 -->使用计算器输入value得出HEX(十 
        //六进制) --> 4e2d -->再令c4='\u4e2d' -->char就会通过UTF-8数值得出中文而不是通过ASNI编 
        //码格式进行存储;
        char c4 = '\u4e2d';//UTF-8编码格式
        System.out.println(c1);//中    
    }
}

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lantzruk

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值