一、 JavaSe 数据类型

1. 计算机本质其实就是输入 -> 计算 -> 输出。既然涉及到计算必定要输入一些数据,那么既然有数据就必定有数据类型
2. 从现实生活中角度来说,程序其实就是对现实生活中的一种抽象,那么计算机必定要提供满足现实生活中各种场景.Java得设计者也考虑到了为了满足各种场景,就必须设计数据类型这个表示系统

一、 变量

1. 什么是变量?以及变量的作用?

1. 因为程序是执行在内存当中得,内存的数据需要变量的存在,变量就是存储可以变动的值例如时间,人的年龄等
2. 变量本身也是表示系统中的一个因素,也是必须因素.变量可以理解为宾馆里,房间的房间号,通过房间号就可以找到该房间.

2. 变量的定义

// 数据类型 变量名 = 变量值
int age = 23;

二、 数据类型介绍

1. 正因为Java定义必须要指定数据类型,所以Java被称为强类型语言.代码比较严谨,这也是我比较喜欢Java得原因
2. 生活中是以钱为单位,你钱多你就是土豪你可以住高档酒店.你没钱就是屌丝你只能住小民楼.而计算机是以字节.为单位不同的数据类型划分不同的空间占用不同的字节.

1. 整数类型

1. 既然整数类型是存放整数的,那整数必然是有大有小。Java设计者为了满足不同范围的数据就设计了不同的整数类型
2. 合理的使用数据类型,能有效的节省资源空间.不过现在内存空间优化的都很大了.正常来说使用int即可
类型 占用字节 表示范围
byte 1字节 -128~127
short 2字节 -32768~32767
int 4字节 21多亿
long 8字节 无穷大..
  • 使用细节

    1. 字节在不同的操作系统占用的空间都一样,不受操作空间影响
    2. 整数类型默认是int类型,如果定义的常量需要使用Long类型则需要在后面加L
    

2. 浮点类型

  • 介绍

    1. Java是以浮点类型来表示小数得,例如 1.2 9.8 3.1..
    2. 也可以使用科学技术法来定义一个浮点小数例如5.12e2[5.12乘10得2次方]
    3. 后边Java会提供一个比double更精准的表示小数得方式 bigdecimal.
    
类型 占用字节
float 4字节
double 8字节
  • 浮点类型使用细节

    1. 浮点类型数据同样不受操作系统影响.
    2. 定义浮点数据类型的常量需要注意:Java设计者默认位浮点类型定义位double,因为double更精确.如果需要位float需要加F.
    3. 面试官有可能这里会问浮点类型是什么构成得:符号位+指数位+尾数位.
    4. Java中表示小数因为尾数为会丢失,所以会损失精度.
    
  • 浮点类型定义

    float c = 1.1 //(编译会报错)
    float c1 = 1.1F //(编译器通过)    
    
    float c2 = .231 // (编译器通过c2的值为0.231)   
    

3. 字符类型

  • 介绍

    1. 当我们需要存储一个字符或者一个汉字的情况下.Java设计者就引进了char类型.
    2. char类型占用两个字节,所以可以存汉字
    3. 多个汉字可以使用string类型
    
  • 定义

    char a = 'e';
    char a1 = '卢'
    char a2 = '\t'
    char a3 = 97
    
  • 需要注意

    1. Java 定义 需要以 ‘’ 包括这代表他是一个字符
    2. 字符也可以存储特殊的转义字符
    3. 字符本质上是整数,输出时按照unicode码输出对应的字符
    4. 上面既然说了既然本质上是整数,那么是整数就可以进行运算,拿到运算结果去找对应的unicode码
    

4. 布尔类型

  • 上面是布尔类型?有何作用?

    1. 布尔类型是Java提供得一个特殊类型,只能存储true或者false.类似与开关no、off的意思
    2. 布尔类型存在即是为了搭配逻辑运算使用得
    
  • 如何定义?

    boolean c = true;
    boolean c1 = false;
    

三、类型转换

  • 为什么要设计类型转换?

    1. 因为程序是要进行计算,或者参与赋值操作.计算过程中就必定有不同类型的数据参与
    2. 由类型小的参与类型较大的,程序结果默认自动返回给类型大得.这个过程就称之为自动类型转换
    3. 为了满足某种需求,参与运算得结果如果想转为类型小的,那么就要进行强制转换.
    

1. 自动类型转换

image-20210205103854706

1. 以上图片就是从小转大之间得原则.
2. 多种类型参与运算,则会把数据类型转为较大得再进行运算
3. char 和 byte short 不能进行自动转换 
4. byte short char 是可以进行运算的(这里的运算会首先把他们三个转为int类型)
5. 以上规则都是Java设计者高司令规定的,乌龟的屁股 龟腚..
  • 代码演示

    int number = 'c'; // √
    double dnumber = 80; // √
    
    int c = 1;
    float d1 = 1 + 2.2  // 报错类型转换错误.因为编译器会把2.2当为double
    
    // 解决办法 将d1转为double类型
     double d1 = c + d;
    // 解决办法2 把2.2让编译器知道他是一个float类型
    float d1 = 1 + 2.2F
    
    int a = 1.1 //编译报错,因为1.1编译器默认把他当成double类型.double怎么能赋值为int类型
        
    byte dd = 21;
    short s1 = 11;
    short s2 = s1 + dd // 需要注意这里会报错会报损失精度(因为byte和short编译器默认会把他们转为int类型所以说这也是为什么正常开发大部分人都会用int类原因)
    
    

2. 强制类型转换

1. 将容量大得数据类型转换容量小的.使用时需要加()这个玩意,让编译器知道要强转了..因为这是个逆过程,所以有可能会损失精度.
  • 代码演示

    int a = (int)1.1 // 把1.1这个double类型转换int类型
    
    int j = 100;
    byte d = (byte)j; // 把100整数4个字节的类型转换byte1个字节的类型
    
    
  • 细节注意

1. 强转只针对最近得操作数有效。所以如果多个数据运算需要加()提升权限
2. char类型可以保留int得常量值,但不能保留int变量值
 // 1. 强转只针对最近得操作数有效。所以如果多个数据运算需要加()提升权限
 int c = (int)1*21+21*1.1 ❌
 int c = (int)(1*21+21*1.1) 正确的
 //2. char类型可以保留int得常量值,但不能保留int变量值
 char c = 21 没有问题
 int c1 = 21;
 char c = (char)c1 需要强转
     

四、String转换基本类型

1. 开发中经常需要将基本类型转为String,或者将S转为基本类型.因为String比较特殊他能存储任何数据都可以当作为String
// 基本类型转换字符串
int a = 1;
float b = 1.2;
double c = 1.21;
true d = true;
// 只需要加一个""即可
a + "";
b + "";
c + ""
d + ""
// String类型转为基本类型
Integer.parseInt("123")
Double.parseDouble("123.1")
Float.parseFloat("12.21")
Long.parseLong("12345")
Boolean.parseBoolean("true")
Byte.parseByte("12")
  • 转换细节

    1. Java内部提供转换。只是说必须要转换的数据一定要转为能够转换的类型
    int a = "23" ✔
    true a = "asd" ❌
    
posted @ 2021-02-04 17:32  小风仔  阅读(119)  评论(0编辑  收藏  举报