IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 06、Java 中的数据类型 -> 正文阅读

[Java知识库]06、Java 中的数据类型


数据类型有什么用?数据类型用来声明变量,程序在执行过程中,根据不同的数据类型中配不同的大小空间。

数据类型在Java语言分为基础数据类型和引用数据类型两种:

  • 第一种:基础数据类型

    基本数据类型又划分为四大类和八小种:

    • 第一类:整数型 (byte short int long)
    • 第二类:浮点型 (float double)
    • 第三类:布尔型 (boolean)
    • 第四类:字符型 (char)

    8小种: byte、short、int、long、float、double、char

数据名称占用内存取值范围
字节型 byte1字节[-128 ~ 127]
短整型 short2个字节[-32768 ~ 32767]
整形 int4个字节[-2147483648 ~ 2147483647]
长整形 long8个字节[-9223372036854775808L ~ 9223372036854775807L]
单精度浮点型 float4个字节+/-3.4E+38F(6~7 个有效位)
双精度浮点型 double8个字节+/-1.8E+308 (15 个有效位)
字符型 char2个字节ISO 单一字符集(可以表示65536个不同的数字)
布尔型 boolean1字节truefalse

注意:

? 1ong类型占用8个字节,float类型占用4个字节,double类型占用8个字节,但是他们的空间大小关系是:double > float > long

? 任意一个浮点型逗比整数型空间大

  • 第二种:引用数据类型

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。

  • 而字符串型 String ,不属于基本数据类型,属于引用数据类型。
  • Java中除了基本数据类型之外都是引用数据类型。

数据类型结构图_202108091636

  • 小容量可以直接赋值的大容量,称为自动类型转换。
  • 大容量不能赋值给小容量,需要使用强制类型转换进行强转。但是需要注意的是:强制类型转换之后,给你通过,但是可能会造成运行时的精度损失。

3.6.1、整数类型

不包含小数的数据被称为整数型数据,其中整数型变量有: byte short int long

在任何情况下,整数型“字面量/数据”默认被当做int类型处理。

如果希望该“整数型字面量”被当做long类型来处理,需要在“字面量”后面添加L/l,建议使用大写L,因为小写1和l有点难区分。

当这个整数型字面量没有超过byte或者short的取值范围,那么这个整数型字面量可以直接赋值给byte类型的变量,不用使用强制类型转换符。
这种语法机制是为了方便写代码而存在的。

正常赋值:

public static void main(String[] args) {
	byte b = 100;
    short s = 100;
    int i = 100;
    long l = 100L;
}

自动类型转换:

// b变量是long类型,int默认占四个字节,long类型占8个字节
// 小容量可以自动转换成大容量,这种操作被称为:自动类型转换
long b = 200;
long d = 214783647;

// 不存在类型转换
int a = 100;
long l = 100L;

// long e = 2147483648;	//  错误: 过大的整数
// 不管在什么情况下,整数型字面量都会被当作int类型来处理。
// 而且2147483648已经超出int的范围,你们在没有赋值之前就出错了。
// 记住:不是e放不下2147483648,e是long类型,完全可以容纳2147483648
// 不过2147483648本身已经超过int的范围。
// 解决问题。
long e = 2147483648L;

强制类型转换:

long x = 100L;

// x是long类型,占用8个字节,而y变量时int类型,占用4个字节
// 在Java中,大容量可以直接赋值给小容量吗?不可以
// 错误: 不兼容的类型: 从long转换到int可能会有损失
// int y = x;

大容量转换成小容量,要想编译通过,必须加强制类型转换符,进行强制类型转换。那么底层是怎么进行强制类型转换的?

// long类型100L:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00100100

// 以上的long类型100L强制转换成为int类型,会自动将前面的4个字节砍掉:00000000 00000000 00000000 00000000

// int 00000000 00000000 00000000 00000000 00100100
int y = (int) x;        // 这个 (int) 就是强制类型转换符,加上去就能编译通过。但是要记住:编译虽然通过了,但是运行时可能损失精度。

// 大容量转化成小容量。
// 300  00000000 00000000 00000001 00101100
// 44   00101100
byte byte01 = (byte) 300;
System.out.println(byte01);

3.6.2、浮点类型

带有小数部分的数据被称为浮点型数据,Java中浮点型数据分为单精度浮点型 float 和 双精度浮点型 double ,表示有小数精度要求的数据。

带有小数运算的一般都会使用这两个,但是注意的是,如果用在银行方面或者说使用在财务方面,double也是远远不够的,需要要使用精度更高的引用类型:Java.math.BigDecimal

public static void main(String[] args) {
    // 任何小数默认都会被当做double,所以定义float时需要在小数后面加上F/f,建议使用大写F
    // float numOne = 3.1415826f;
    float numOne = 3.1415826F;
    
    double numTwo = 3.1415826;
}

3.6.3、字符类型

Java 语言中的字符类型(char)使用两个字节的 Unicode 编码表示,它支持世界上所有语言,可以使用单引号字符或者整数对 char 型赋值

当一个整数赋值给char类型变量的时候,会自动转换成char字符型,最终的结果是一个字符。

当一个整数没有超出byte short char的取值范围的时候,这个整数可以直接赋值给byte short char类型的变量。

class CharDataType {
    public static void main(String[] args) {
        // char可以存储一个汉字吗?
        // 可以的,汉字占用2个字节,Java中的char类型占用2个字节,正好。
        char cc1 = '中';
        char cc2 = 'a';
        char cc3 = '0';
        
        //  错误: 不兼容的类型
        // char c4 = "a";
        
        // 错误: 未结束的字符文字
        // char c5 = 'ab';
        
        // 普通的 't' 字符
        char c1 = 't';
        // System.out.println(c1);
        
        // 经过测试以下代码 \t 实际上是一个字符,不属于字符串,两个字符合在一起表示一个字符, 其中 \t 表示“制表符Tab”
        char c2 = '\t';
        // System.out.println(c2);
        // System.out.println("ajdfgashjdghja");
        // System.out.println("ajdfgashtjdghja");
        // System.out.println("ajdfgash\tjdghja");
        
        // 想在控制台输出一个 \ 字符怎么办?
        // System.out.println('\\');
        // System.out.println("\"Test\"");
        // 想在控制台输出一个 ' 字符怎么办?
        // System.out.println('\'');
        
        // \\u 表示后面是一个字符的Unicode编码
        // Unicode编码是一个十六进制编码
        char c3 = '\u4e2d';
        // System.out.println(c3);
        
        // 整数型没有超过范围可以直接赋值给char
        char char01 = 'a';
        
        // 这里会做类型转换吗?
        // 97是int类型(这是Java中规定,默认当做int处理)
        // c2是char类型
        char char02 = 97;
        System.out.println(char02);     // 'a'
        
        char char03 = 65535;
        System.out.println(char03);     // 控制台输出乱码
    }
}

注意:JDK8的安装目录下bin下面有一个 native2ascii.exe 命令,在控制台运行可以快速把中文转换成为 Unicode 编码

3.5.4、布尔类型

布尔类型对象可以被赋予文字值 true 或者 false ,所对应的关系就是真与假的概念。

Java 语言中 Boolean 类型只有两个值,没有其他值:truefalse ,不像C++或者C,C语言中1和0也可以表示布尔类型。

Java 中布尔类型不能转换成为任何数据类型。

boolean 使用在逻辑判断当中,通常放到条件的位置上(充当条件)

public static void main(String[] args) {
    boolean sexOne = true;
    boolean sexTwo = false;
}

原创博主:Little Tomcat
博主原文链接:https://mp.weixin.qq.com/s/6X4ae_5MO5gFvoYJtXdlrw

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:17:12  更:2021-08-10 13:19:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:43:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码