java数据类型

文章目录

  • java数据类型
    • 1. java数据类型概述
    • 2. 数据存储的单位
    • 3. 基本数据类型
      • 3.1 八种数据类型
      • 3.2 基本数据类型的字节数及表示范围
    • 4. 包装类型
      • 4.1 基本类型与包装类的区别
      • 4.2 基本类型与包装类的相互转换
    • 5. 简单数据类型转换
      • 5.1 自动类型转换
      • 5.2 强制类型转换
      • 5.3 隐含强制类型转换(初始化)
      • 5.4 其他类型转换
    • 6. 引用数据类型
      • 6.1 类Class引用
      • 6.2 接口interface引用
      • 6.3 数组引用
    • 7. 总结

1. java数据类型概述

​ Java语言中的数据类型分为两大类,分别是基本类型和引用类型。程序中需要处理许多数据,对于不同数据都有其对应的数据类型,其实就是在内存中开辟一个存储空间来存放数据,不同数据所开辟的内存大小也会不一样。

2. 数据存储的单位

字节 是计算机数据存储的单位。位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位组成。而字通常为16、32或64个位组成。

  • 位(bit):是计算机中最基本的单位,位是最基本的概念,在计算机中,由于只有逻辑0和逻辑1的存在,即每一个逻辑0或者1便是一个位

  • 字节(byte):计算机中处理数据的基本单位,是由八个位组成的一个单元,8个bit组成1个Byte

  • 字(word):代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位,在常见的计算机编码格式下,一个字等于两个字节(十六位)(1word = 2Byte = 16bit)

3. 基本数据类型

​ Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

3.1 八种数据类型

3.2 基本数据类型的字节数及表示范围

整型(4个): byte(字节型)、short(短整型)、int(整型)、long(长整型)

byte a = 100;
short s = 1000;
int a = 100000;
long a = 100000L;

注. 声明long类型数据的时候,后面需要加L或者l (一般加大写L);

浮点型(2个):float(单精度型/浮点型) 、double(双精度型)

float f1 = 1.1f;
double d1 = 1.2;

注.

  • 声明float类型的数据的时候加f或者F;
  • double类型的数据的有效位数 15~16;
  • 3.float类型的数据有效位数是 6~7;

字符(1个): char(字符型)

**注.**声明char类型的数据的时候,使用单引号声明。并且单引号里面只能放一个元素;

char name = 'a'

布尔类型:(1个): boolean(布尔类型)

一般用来做逻辑判断,一般用于流程控制,数据值只有true或false,适用于逻辑计算。

4. 包装类型

​ Java 是面向对象的语言,但是为了便于开发者的使用,Java 中却沿用了 C 语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是基本数据类型是不具备对象的特征的,不能调用方法,而且基本数据类型不能存入集合中,所以就需要将基础数据类型实例封装为 Java 对象,使其具有了对象的属性和方法。

4.1 基本类型与包装类的区别
  • 存储位置不同:
    基本数据类型直接将值放在栈中;
    包装类型是把对象放在堆中,然后通过对象的引用来调用他们 ;
  • 初始值不同:
    int的初始值为 0 、 boolean的初始值为false ;
    包装类型的初始值为null ;
  • 使用方式不同:
    基本数据类型直接赋值使用就好;
    在集合如 coolectionMap 中只能使用包装类型;
4.2 基本类型与包装类的相互转换
  • 手动转换
    基本数据类型 → 包装类:
    通过对应包装类的构造方法实现,除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象。
    包装类 → 基本数据类型
    通过包装类的实例方法 xxxValue() 实现; // xxx表示包装类对应的基本数据类型
  • 自动装箱&自动拆箱(jdk1.5以后)
    基本类型添加到集合中时,进行自动装箱
    包装类型在涉及到运算的时候,“加,减,乘, 除” 以及 “比较 equals,compareTo”,进行自动拆箱

5. 简单数据类型转换

容量类型排序

简单类型数据间的转换,有两种方式:自动转换强制转换

5.1 自动类型转换

自动类型转换:容量小的类型自动转换为容量大的数据类型 --> 总结:小容量转大容量

public static void main(String[] args) {//1.多个类型数据混合运数时,系统会按最大的类型进行转换int a = 10;//float a1 = a + 1.1; //错误  结果类型一个是doublefloat a2 = a + 1.1F;  //结果类型一个是floatdouble a3 = a + 1.1;  //结果类型一个是double//2.容量大的赋值给容量小的肯定会报错//int b = 1.1; //错误 原因:double -> int//3.(byte,short) 和 char之间不会相互自动转换byte b1 = 10; //正确int b2 = 1;//byte b3 = b2; //错误 原因:变量赋值,判断该类型//char c1 = b1; //错误 原因:byte不能自动转换为char//4.byte,short,char该三个数据类型计算,计算时首先转换为int类型byte c1 = 1;short c2 = 2;//short c3 = c1 + c2; //错误 原因:计算时首先转换为int类型int c3 = c1 + c2; //正确}
5.2 强制类型转换

强制类型转换:将容量大的数据类型转换为容量小的数据类型 --> 总结:大容量转小容量

 public static void main(String[] args) {//1.精度降低或溢出int i = (int) 1.9; //结果 1//2.强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级//int x = (int) 10 * 3.5 + 6 * 1.5;//编译错误int x = (int) (10 * 3.5 + 6 * 1.5);//正确 (int)44.0 -> 44//3.char类型可以保留int的常量值,不能保存int的变量值需要强转char c = 100; //保留int的常量值int i = 100;//char m = i; //错误char m = (char) i; //正确}
5.3 隐含强制类型转换(初始化)
  • 在变量的初始化时,整数的默认类型是 int。byte b = 123; 123 默认是 int 类型,他会隐含强制转换为低级别的 byte 和 short 类型,所以不用显示强制转换;但是 int 类型只能显式强制转换为 long 型,所以 long a = 123L;

  • 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。

5.4 其他类型转换

包装类型向字符串的转换

 String str = "11.1";Double d = new Float("11.1");     String str1 = d.toString();

字符串向包装类型的转换

 String str = "11.1";Double d = new Float("11.1");Double d = Double.parseDouble("11.1");  Double d = Double.valueOf("11.1");

基本类型向字符串的转换

Integer a = 1;
a.toString();//调用转字符串的方法
String s =a +  "";//加上""自动转换String类型
String.valueOf(a);//使用String的方法

6. 引用数据类型

6.1 类Class引用

Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法,用Object可以定义所有的类。

Object object = new Object();
Integer Integer=(Integer)object;//

String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为大写或小写形式。
Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替
Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。

6.2 接口interface引用

List:列表 ,此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引 (在列表中的位置)访问元素,并搜索列表中的元素。List 接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。 List 接口提供了两 种在列表的任意位置高效插入和移除多个元素的方法。
add() : 在列表的插入指定元素。
remove():移除列表中指定位置的元素。
get(int index):返回列表中指定位置的元素。

6.3 数组引用

数组:存储在一个连续的内存块中的相同数据类型(引用数据类型)的元素集合。
数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引(下标)从0开始。

7. 总结

​ java数据类型总结的文章就介绍到这了,这边列举了部分例子供参考,仅作为学习笔记使用,欢迎批评指正,要是感兴趣可以关注微信订阅号 程序own

java数据类型(最强详解)相关推荐

  1. JAVA 数据类型强制转换详解

    JAVA 数据类型转换(强制类型转换) 强制类型转换 将 取值范围大的类型 强制转换成 取值范围小的类型 特点 : 代码需要进行特殊的格式处理, 不能自动完成 转换格式 // 范围小的类型 范围小的变 ...

  2. java 类参数_Java的数据类型和参数传递(详解)

    Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型. Java中的基本数据类型 名称 大小 取值范围 byte型 (字节) 8bit -128-127 (-2^7到2^7-1) shor ...

  3. Java基本数据类型——字符型详解

    字符型char在Java语言中占用 2 个字节,char类型的字面量必须使用半角的单引号括起来,取值范围为[ 0 - 65535 ],char 和 short 都占用 2 个字节,但是 char 可以 ...

  4. Java基本数据类型——布尔型详解

    在 Java 语言中布尔类型的值只包括 true 和 false,没有其他值,不包括 1 和 0,布尔类型的数据在开发中主要使用在逻辑判断方面,例如:如果外面在下雨,我出门带一把雨伞.如果明天休息,咱 ...

  5. Java 内存模型 JMM 详解

    转载自 Java 内存模型 JMM 详解 JMM简介 Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性.是否可以重排序等问题的无关具体 ...

  6. java 8 新功能详解_Java 8的8个新功能

    java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...

  7. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

  8. Java内存模型(JMM)详解

    在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型.它们的答案是一致的:能够让我们更好的 ...

  9. Java虚拟机(Jvm详解)

    Java虚拟机(Jvm详解) 总体知识点框架 1.运行时数据区域 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分) Java 虚拟机规范对 ...

最新文章

  1. U盘中病毒,文件消失或不显示
  2. 在Visual Studio中构建启动时申请管理员权限的程序(UAC支持)
  3. java占用提示_Java显示使用或已经覆盖了api为啥?
  4. ubuntu下面的SecureCRT破解失败问题+本地ubuntu系统远程连接RHEL服务器的免密码登录问题(自己归纳总结)
  5. python使用pip安装_Python | 如何用pip安装模块和包
  6. php const用法详解
  7. 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
  8. 为何有 60% 的程序员拒绝公开讨论薪资?
  9. java获取服务器超时_java – Eclipse中的Tomcat服务器超时
  10. synergy共享屏幕
  11. 源码提供!Android即时通讯和sns开源项目汇总
  12. 一维连续傅里叶变换和逆变换公式的一种推导
  13. DLang、Rust 以及 Golang 对比数据库操作方式
  14. 概率论---古典概型
  15. DRM系列(3)之DRM_IOCTL_MODE_MAP_DUMB
  16. python双击py一闪_python双击py一闪 python编程
  17. 计算机知识与技能竞赛配图,“高教杯”全国大学生先进制图技术与技能大赛
  18. 网盘企业,免费用户是不是不配下载?
  19. HC32L110(一) HC32L110 芯片介绍和Win10下DAP-Link, ST-Link, J-Link方式的烧录
  20. 中级软件设计师简要知识点(5):网络与多媒体基础知识

热门文章

  1. 自动化找计算机工作吗,自动化专业好找工作吗?就业方向都有哪些?
  2. python canvas画弧度_朋友圈疯转的“佩奇”是啥?用 Python 画个小猪佩奇来告诉你...
  3. 【数据挖掘】期末复习(样卷题目+少量知识点)
  4. “元起:前元宇宙时代的眺望”讲座学习笔记
  5. java实现Excel转图片
  6. 毕业设计-电子商务网站(一)
  7. 使用easyexcel操作Excel
  8. 【数据结构】数据结构学什么?
  9. 致汇开优店所有伙伴的一封信:聊聊这几年从事互联网之路
  10. tp5模型能实现事务吗_实现工作单元-通过事务模型处理域对象