Java 中的数据类型
我们学习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 中的数据类型的更多相关文章
- Java中的数据类型及相互转换方法
本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...
- Java中基本数据类型和包装类
参考:深入剖析Java中的装箱和拆箱; Java中基本数据类型和包装类互转中 缓冲机制的使用; java学习笔记:装箱和拆箱,包装器和缓冲池 Java 各 类型数据在内存中分配情况详解 一 java内 ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- 讲说问题:|和||的区别以及&和&&的区别。2、Java中的数据类型分几类?基本数据类型有哪些?
|和||的区别以及&和&&的区别. |或 为或运算 判断为逻辑或 || 为短路或 只有逻辑判断 当左侧为真不再继续判断 &与 为与运算 判断为逻辑与 && ...
- Java中关于数据类型的一些问题
Java中关于数据类型的一些问题 总结一下最近笔试遇到的一些关于Java中数据类型的一些问题. 虽然比较基础,但在实际做题却很容易出错的点,而且往往这些题出错了会给面试官很不好的感觉:你的基础不好. ...
- Java中基本数据类型byte的溢出问题
Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...
- 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型
010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...
- 零基础学习java------day2------关键字、标志符、常量、进制键的转换、java中的数据类型、强制类型转换的格式
今日内容要求: 1. 了解关键字的概念及特点,了解保留字 2. 熟练掌握标识符的含义,特点,可使用字符及注意事项 3. 了解常量的概念,进制,进制之间相互转换,了解有符号标识法的运算方式 4. 掌握变 ...
- Java中基本数据类型的对比记忆
Java中八种基本类型数据情况: 数据类型 所占字节数 所占位数(二进制位数) 可表示范围 默认值 包装类 备注 byte(字节) 1 8 -128 - 127 0 Byte short(短整 ...
- java中的数据类型
通常情况下,为了方便物品的存储,我们会规定每个盒子可以存放的物品种类,就好比在"放臭袜子的盒子"里我们是不会放"面包"的!同理,变量的存储也讲究"分门 ...
随机推荐
- VBS 重启 TP-Link 路由器
分享一个自己用的小工具,重启TP-Link路由器的,好像还是大学时候写的,献丑了. 其他路由器可能有些不同,但是思路都是差不多的. user = "admin" '路由器帐号 pa ...
- asp.net WebForm程序删除.designer.cs文件之后的故事
1.介绍 正常情况下添加一个WebForm程序结构如下(命名为:myWebForm.aspx) 文件说明:.aspx文件:书写html代码部分,以及javascript,css等代码书写及引用 .as ...
- 使用jQuery仿淘宝商城多格焦点图滚动切换效果
1.效果及功能说明 图片滚动切换特效,高仿2012淘宝商城首页多格子焦点图切换,鼠标滑过焦点图片各个格子区域聚光灯效果展示 2.实现原理 在显示div的下面有一个按钮条在鼠标触及到按钮的时候会改变那妞 ...
- 超酷JQuery动画分页按钮,鼠标悬停滑动展开
1.效果及功能说明 animate动画分页按钮制作鼠标悬停分页按钮上滑动展开分页按钮,鼠标离开后分页按钮收缩 2.实现原理 主要是靠动画方法,来让原本的箭头图像的长度发生变长,正好可以融入下标题的文字 ...
- 连接mysql提示Establishing SSL connection without server's identity verification is not recommended错误
Establishing SSL connection without server's identity verification is not recommended. According to ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 1005 HDU 6154 CaoHaha's staff (找规律)
题目链接 Problem Description "You shall not pass!" After shouted out that,the Force Staff appe ...
- Hive笔记之导出查询结果
一.导出到本地 导出查询结果到本地: INSERT OVERWRITE LOCAL DIRECTORY "/tmp/hive-result/t_visit_video" SELEC ...
- nginx配置php时fastcgi_pass参数问题
更多内容推荐微信公众号,欢迎关注: 在配置nginx的时候,fastcgi_pass的配置问题,如下所示: location ~ \.php$ { root /home/wwwroot; fastcg ...
- 树形dp(B - Computer HDU - 2196 )
题目链接:https://cn.vjudge.net/contest/277955#problem/B 题目大意:首先输入n代表有n个电脑,然后再输入n-1行,每一行输入两个数,t1,t2.代表第(i ...
- 图片懒加载之lazyload.js插件使用
简介 lazyload.js用于长页面图片的延迟加载,视口外的图片会在窗口滚动到它的位置时再进行加载,这是与预加载相反的. 使用 lazyload依赖与jquery.所以先引入jquery和lazyl ...