2.3 Java变量、8种数据类型、ASCII码和Unicode码、数据类型转换 讲解 通俗易懂

Java变量和数据类型

一、变量

  • 变量是程序中最基本的存储单元

  • 变量实质是内存中的一小块区域,使用变量名来访问这块区域,所以使用前要先声明、后赋值,

  • 声明格式:[修饰符] type varName [=value];

    例如:int i = 100; String s = “hello”;

二、Java数据类型

  • 为什么分数据类型?
  • 每种数据类型在内存分配不同的内存空间 ,数据类型声明存储数据的内存大小。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Heh5SJst-1641816497882)(C:\Users\16431\AppData\Roaming\Typora\typora-user-images\image-20220109200311982.png)]

1.整数类型 byte、short、int、long

  • Java中整数类型有固定的表数范围和字段长度,器不受具体操作系统的影响,以保证Java程序的可移植性。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmjOKPo2-1641816497884)(C:\Users\16431\AppData\Roaming\Typora\typora-user-images\image-20220109200911183.png)]

  • Java默认int型;

  • 声明long型常量后加 ‘l’ 或者 ‘L’ ,一般用大写L不易混淆 ;

    long d = 98758884884L
    

    整型输出 and 整数其他进制表示方式:

    package day1;
    
    public class Demo2 {
        public static void main(String[] args) {
            /* 
                数据类型:告诉程序中的数据如何存储,如何运算
            
            基本数据类型: 
                        数值型
                           整数: byte short int long 
                           浮点数:float double 
                        字符型:char
                        布尔型:boolean
            引用类型:
                        类  例如 String 
                        接口 
                        数组 []
            */
            //byte  1字节
            byte a = 127;
            System.out.println(a);
    
            //short 2字节
            short b = 32767;
            System.out.println(b);
            System.out.println(Short.MAX_VALUE);
            System.out.println(Short.MIN_VALUE);
    
            //int 4字节
            int c = 32768;
            System.out.println(c);
            System.out.println(Integer.MAX_VALUE);
            System.out.println(Integer.MIN_VALUE);
    
            //long 8字节  表示long时后面加L
            long d = 949858942147483647L;
            System.out.println(d);
            System.out.println(Long.MAX_VALUE);
            System.out.println(Long.MIN_VALUE);
    
            /*整数其他进制表示方式:
            *   0b11:二进制整数表示
            *   0X11:十六进制整数表示
            *   011: 八进制整数表示
            * */
            byte e = 0b11;  //输出3
            System.out.println(e);
            byte f = 0x11;  //输出17
            System.out.println(f);
            byte g = 011;   //输出8
            System.out.println(g);
        }
    }
    

2.浮点型 float、double

float :4字节 声明一个常量时后加 f 或 F

double :8字节

浮点类型有固定的表数长度和字段长度,不受平台影响。

十进制计数方式,例如:3.14 314.0

科学计数法,例如:3.14e2 3.14E2

3.字符型 char

char : 2字节

例如:char c1 = ’a’; //97 char c1 = ’中’;

可以涵盖世界上所有书面语的字符。

char类型可以运算,因为char在字符编码表中有对应数值。

在Java中,char类型字符运行时,直接当做对应编码表中的整数对待。比如:char c =‘a’+1 ; 是先将 ‘ a’ 提升为int ,计算结果98 ,对应的字符是’b’。

3.布尔型 boolean

逻辑运算,用于流程控制。

取值:true 或 false , java中不能0或非0,与C语言不同。

三、ASCII码和Unicode编码

一个二进制位有2种状态,0/1 ,一个字节8 位,可以表示256种不同状态,每一个状态对应一个符号,就可以表示256个符号,从00000000到11111111表示出来。

1.ASCII码

  • ASCII (American Standard Code for Information Interchange):
  • 美国信息互换标准代码
  • 是上个世纪美国制定额一套字符编码,对英语字符等和二进制位的关系做了统一规定。
  • ASCII 一共规定了128个字符编码 比如:空格"SPACE"是32(二进制:00100000) 字母A是65(二进制:01000001)
  • 这128个符号(包括32个不能打印的控制字符)占用字节后7位,最前面一位统一规定为0 。
  • 缺点:不能表示所有字符,只表示英文等字符。

2.Unicode编码

  • 将世界所有符号都包含了,包括ASCII码中的符号。
  • 编号范围:0x000000 到 0xFFFFFF(十六进制),有110多万。
  • 每个字符都有唯一Unicode编码,一般写成16进制,在前面加上U+, 例如:’马‘ 的Unicode是 U+9A6C 。
  • JAVA底层采用Unicode编码来存储字符。
UTF-8
  • 因为互联网的兴起,计算机和计算机之间通讯需要一种统一的编码方式来编译和解释Unicode编码,所以又有了UTF-8
  • UTF-8是Unicode编码的一种具体实现,它规定了字符转换到二进制编码的一系列规则。
  • UTF-8最大特点:是一种变长的编码方式,它可以用1~4个字节表示一个符号,根据不同符号而变化字节长度。

四、基本数据类型转换

1.默认数据类型转换

就是从容量小的类型自动转到容量大的

byte short char --> int -->long -->float -->double

1 2 2 4 8 4 8

2.强制数据类型转换

从容量大的转到容量小的

会发生的意外:

  1. 数据溢出
  2. 精度降低
/*
byte short char --> int -->long --> float -->double
*/
//1.数据溢出
int x = 258;//4
byte y = (byte)x;//1
System.out.println(y); //结果是2 ,因为128是 1 0000 0010 转为byte时是只有8位,所以就是0000 0010 即2;

//2.精度降低 
float z = 10.35f;
long l = (long)z;
System.out.println(l);//结果是10,精度降低
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

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

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

打赏作者

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

抵扣说明:

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

余额充值