我们学习Java就是为了编写程序完成功能,而什么是程序呢?程序 = 数据结构 + 算法。 分开看,数据结构指的是数据与数据之间的关系,那我们先来了解一下Java中的数据都是怎么表示的呢 ?也就是说数据都有哪些不同的类型呢 ?

顺带说一下变量的概念,在Java中变量可以理解为是一个遥控器,而变量所代表的值就是电视机,我们是通过操作变量(遥控器)来操作不同的值(电视机)。而遥控器也有不同的型号的呀,大的小的迷你的等等,体现在变量上就是变量可以有不同的类型。不同类型的变量,可以在内存中分配不同的空间。

那就来看一下Java中都有哪些数据类型,总体上分为基本数据类型和引用数据类型 。

基本数据类型:(整形 浮点型 字符型 布尔型) 
整形:表示整数的类型有以下四种 
byte :一个子节共占 8 位 ,计算机中数字以补码的形式存储 ,所以 1 byte的数值范围是 -128 ~ 127 之间,默认值为 0 。 
short : 两个字节共 16 位,数值范围 -2^15 ~ 2^15 - 1 ,默认值为 0。 
int :四个字节共 32 位,byte short int 在进行计算时,会首先转化为 int 再进行计算 ,默认值依然是 0 。 
long :八个字节共占 64 位,默认值为 0L 。 
浮点型 :带有小数的数 。 
float :单精度小数,占4个字节,小数点后四舍五入保留 7 位小数。默认值是 0.0 
double :双精度小数,占 8 个字节,小数点后四舍五入保留 16 位小数。默认值是 0.0 。另外,在小数的运算中,默认的 double 类型 ,就像你整形默认是 int 类型那样。 
boolean :注意了,boolean类型只占一位也就是 1 bit, 1/8 字节,所以只能表示两种状态,0 或 1 ,也就是 false 和 true 。而默认值是 0 ,也就是 false 。 
char :char类型是一个单一的 16 位 Unicode 字符,char 数据类型可以储存任何字符,注意是字符,而字符串是String 类型,是一个引用类型。

下面来几个题目感受一下。 
3 * 0.1 == 0.3 结果是什么 ?true 还是 false ? 
答案是 false 。 因为 0.1 是 double 类型,所以存在精度丢失的情况,3 * 0.1 的结果也是 double 类型,故结果会比 0.3 要大。

float f = 3.4;是否正确? 
错误,因为小数的默认的类型是 double ,若非要定义为 float ,则可以这么写 float f = 3.4f ;

short s = 1; s = s + 1; 和 short s = 1; s += 1; 的区别 ?

前者报错,后者 s = 2 ; 因为 short 类型的数据在运算的时候会先转化为 int 类型,故将 s + 1 为 int 类型的 2 赋给 short 类型的 s ,会发生精度丢失 。而 += 这个运算符在内部已经将结果进行强制类型转换。类似于这样 short s = (short) s + 1 ;

说实话 ,就上面这些最基础的东西 ,我也是刚刚搞明白 。真是整理出奇迹啊 !

再简单说一下引用数据类型 ,引用数据类型包括类,接口和数组 。这些该概念在以后会慢慢梳理 。

那我就来简单说一下基本数据类型和引用数据类型的区别 。给大家一个感性的认识 。程序中用到的数据肯定都是要存储在内存中的,不然 CPU怎么给你计算呢? 前面也说了变量就像是遥控器操作电视机一样那样操作我们的数据 。我们数据在内存中会分为栈内存和堆内存,而变量就存放在栈中,栈的内存占比比较小,大概 10 % - 20 %左右。而基本数据类型的数据就放在栈中,引用类型的数据放在堆中,而变量或说实例放在栈中。

下面我就来定义一个大胆的场景,我们的变量(实例)是一个遥控器,而数据就是电视机,电视机旁边有一个遥控器盒专门放遥控器就相当于基本数据类型的在栈中的情况,一个区域分为数据域和指针域。而引用类型的变量就相当于我们手握遥控器来操作客厅的遥控器,手中的空间就是栈,而客厅就是堆。我们是通过栈中的引用来操作堆中的数据。不知道这么说大家有没有一个感性的认识,为什么要这么分呢 ?在栈中操作数据肯定要比堆中处理的快呀,所以为了加快速度,就把那些常用的类型划为了基本数据类型。

Java 中的数据类型的更多相关文章

  1. Java中的数据类型及相互转换方法

    本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...

  2. Java中基本数据类型和包装类

    参考:深入剖析Java中的装箱和拆箱; Java中基本数据类型和包装类互转中 缓冲机制的使用; java学习笔记:装箱和拆箱,包装器和缓冲池 Java 各 类型数据在内存中分配情况详解 一 java内 ...

  3. java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;

    <java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...

  4. 讲说问题:|和||的区别以及&和&&的区别。2、Java中的数据类型分几类?基本数据类型有哪些?

    |和||的区别以及&和&&的区别. |或 为或运算 判断为逻辑或 || 为短路或 只有逻辑判断 当左侧为真不再继续判断 &与 为与运算 判断为逻辑与 && ...

  5. Java中关于数据类型的一些问题

    Java中关于数据类型的一些问题 总结一下最近笔试遇到的一些关于Java中数据类型的一些问题. 虽然比较基础,但在实际做题却很容易出错的点,而且往往这些题出错了会给面试官很不好的感觉:你的基础不好. ...

  6. Java中基本数据类型byte的溢出问题

    Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...

  7. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

  8. 零基础学习java------day2------关键字、标志符、常量、进制键的转换、java中的数据类型、强制类型转换的格式

    今日内容要求: 1. 了解关键字的概念及特点,了解保留字 2. 熟练掌握标识符的含义,特点,可使用字符及注意事项 3. 了解常量的概念,进制,进制之间相互转换,了解有符号标识法的运算方式 4. 掌握变 ...

  9. Java中基本数据类型的对比记忆

    Java中八种基本类型数据情况: 数据类型 所占字节数 所占位数(二进制位数) 可表示范围 默认值 包装类 备注 byte(字节) 1 8 -128 - 127  0  Byte   short(短整 ...

  10. java中的数据类型

    通常情况下,为了方便物品的存储,我们会规定每个盒子可以存放的物品种类,就好比在"放臭袜子的盒子"里我们是不会放"面包"的!同理,变量的存储也讲究"分门 ...

随机推荐

  1. hadoop启动步骤

    一.ssh的启动 ssh localhost二.hadoop的HDFS的格式化 bin/hadoop namenode -format三.hadoop的start-all.sh的启动 bin/tart ...

  2. HDU 1181 变形课 (深搜)

    题目连接 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形 ...

  3. Python练习-生成器表达式-筛选与运算

    # 编辑者:闫龙 l = [10, 2, 3, 4, 5, 6, 7] l1 = [int(i)**2 for i in l] # 得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方 pr ...

  4. Shell脚本-自动化部署反向代理、WEB、nfs

    部署nginx反向代理三个web服务,调度算法使用加权轮询(由于物理原因只开启两台服务器) AutoNginxNfsService.sh #/bin/bash systemctl status ngi ...

  5. Sysmon + NXlog构建简单的windows安全监控

    工具: Sysmon (sysmon 5.0) ,NXlog(nxlog-ce-2.9.1716.msi) . Sysmon监控系统并生成windows event log,   NXlog将wind ...

  6. discuz过滤词语无效

    1.是由于一些特殊的字导致serialize序列化错误.过滤词语在表 common_word中,序列化房子common_syscache的censor中,看看是否有特殊符号.

  7. mysql 在windons下的备份命令

    1. @echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" mysqldump -uroot -proot jy510 > ...

  8. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写

    1.源码免杀 1.1 定位产生特征的源码 定位文件特征 1.根据MyCCL的特征码定位工具,定位出有特征的地址 2.根据VS的反汇编窗口,输入有特征的地址得到特征地址与源码的关系 3.插入Messag ...

  9. mini2440的程序下载

    mini2440拿到手有四天了,抱着很大的兴趣看韦东山老师的视频,但是因为电脑是win7 64bit的系统,dnw的驱动没有,经查询可以使用supervivi,就查找相关的资料.但是始终弄不好,后来使 ...

  10. HDU 6199 2017沈阳网络赛 DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6199 题意:n堆石子,Alice和Bob来做游戏,一个人选择取K堆那么另外一个人就必须取k堆或者k+1 ...