数据类型

数据类型是对数据存储在内存中位置的一种抽象表示,java的数据类型总体上分为两大类:基本数据类型和引用数据类型。

1、基本数据类型

基本数据类型是语言本身定义的,数据结构上有说基本数据类型表示的是真实的数字和字符,在java中,基本数据类型的数据都是存储在栈内存中,基本数据类型包含四类八种,介绍如下。

第一类:整型,包含四种数据类型,字节型(byte)、短整型(short)、整型(int)和长整型(long)。byte类型的数据在内存中占1个字节(8位),取值范围换成十进制是-2^7到2^7-1,默认值为0;short类型的数据在内存中占2个字节(16位),取值范围是-2^15到-2^15,默认值是0;int类型的数据在内存中占4个字节(32位),取值范围是-2^31到2^31,默认值是0;long类型的数据在内存中占8个字节(64位),取值范围是-2^63~2^63-1,默认值是0L。

第二类:浮点型,包含两种数据类型,单精度浮点数(float)和双精度浮点数(double),float类型的数据在内存中占4个字节(32位),取值范围是1.4E-45~3.4028235E38 (程序打印的),默认值是0.0;double类型的数据在内存中占8个字节(64位),取值范围是4.9E-324~1.7976931348623157E308,默认值是0.0。两者区别在于double表示的小数更加精确,一般表示浮点数时都是用double,如果声明float型则数值需加F,例如:float f = 20L;

第三类:字符型,用于存储字符类型数据,占2个字节(16位),取值范围时0到65535,默认值为空。说起字符就要说一下Unicode字符集,0到65535每一个数再Unicode字符集中都对应一个特定的字符,声明的字符型数据需要用单引号引起来,例如:char ch = ‘A’;还有一种就是转义类字符,以”\”开头。

第四类:布尔型,用于存储布尔类型数据,占用1个字节(8位),只有两个数值true和false,默认值是false。

补充:数据在内存中是以二进制形式表示的,以byte类型为例,在内存中占8位,由于整型数据有正负之分,所以八位中的最高为用来表示符号位,0为正,1为负。正数在内存中以被保存数据的二进制原码进行存储,而负数是以其对应正数补码形式存在,也就是正数的原码取反后加1。也正是因为存储的数据因为类型不同占用的存储单元也不同,所以就会存在一个问题,当使用占存储单元少的数据类型去强制存储占用存储单元多的数据类型的数据时就会发生精度缺失的错误,这就是强制类型转换会使得数据丢失精度的本质。所以在使用时应注意避免不要造成精度确实。

2、引用数据类型

引用数据类型可以是String 、数值 、java中的或用户自定义的各种类,引用数据类型的数据在内存中的存储和基本数据类型不同,在栈中存储的仅是变量和存储具体数据的地址,而具体的数据是存储在堆上的,这也是之所以叫做引用类型的原因,栈中存储的仅是引用的存储在堆中的具体数据一个地址而已。(String有点特别)

对于引用数据类型没什么介绍的,这东西需要长期积累。

这里着重说一下,java中引用数据类型是遵循引用传递的(string类型有点特别),这里的引用传递指的是可以将引用类型数据的值进行修改,而不是真的去修改地址,java是无法直接去修改地址的。

运算符

1、算术运算符

顾名思义,就是加(+)、减(-)、乘(*)、除(/)、取余(%)等,其中还有两个特殊的自加和自减操作,简单说一下,自加运算符,例如:i++,就表示i本身加上1,然后将值重新赋值给i,就相当于i = i + 1; ,自减与自加相同只是减1而已。

2、赋值运算符

就是将值赋给声明的变量,例如:i = 1; 说白了就是将右边的值赋给左边

3、关系运算符

就是用来比较两个数据之间关系的符号,对于基本数据类型而言,比较的就是大小,而对于引用的数据类型比较的就是两个数据是否存储在同一地址下(只有”!=”和”==”才使用于引用个类型)。符号标识有:> 、<、>=、<=、!=、== 。

这里说一下”=”和”==”,前一个是赋值运算符,而后一个是比较运算符,例如比较1和2是否相等,使用”==”。

4、逻辑运算符

Java中的逻辑运算符包括与(&&)、或(||)、非(!)、异或(^),简单介绍以下

与:A&&B,就是当A并且B 同时满足,才表示条件成立

或:A||B,表示当A或者B有一个满足时,条件就成立

非:!A,表示当不满足条件A时,整体的条件就成立

异或:A^B,当A或B只要有一个为true,整个条件就成立

5、位运算符

用来操作二进制的运算符,包括:按位与(&)、按位或(|)、右移(>>)、左移(<<)、无符号右移(>>),还有其他的位运算,想了解的非常清楚话建议学习以下编译原理,这里只是简单的介绍以下常用的用法。

先说一下按位与和逻辑与的区别,两者都是表示与,只有两个条件都成立才可以,但是逻辑与又被称为短路与,意思就是当A&&B中如果A不满足条件则不会再去判断B是否满足条件,而按位与则会去继续判断。按位或同于按位与

说一下左移,这里不进行具体的位运算演示,只说一下值的变化, a<<b ,a左移b位,相当于a = a * 2 ^ b,就是将a乘以2的b次方的值赋给a。右移相当于除以2的b次方。不过这些操作都需要在合理的数值范围内进行,不然会产生错误.

6、三目运算符

这个也是开发中经常使用的,具体格式如下:

String a = 条件是否成立 ?  “1” : “2”;

如上给a赋值,当条件成立时,则将1赋给a,否则将2赋给a,也就是条件如果成立则取分号前边的值,否则分号后边.

3、java中的数据类型和运算符相关推荐

  1. java异或运算结果数据类型_java中的数据类型和运算符的总结归类。

    首先学习java肯定先要了解java的发展史,以及java的特点,常见的dos命令,jdk的安装,如何开发java程序等等一下概念行的东西,这里面我都不一一说了. 今天这一章主要想总结一下java中的 ...

  2. JAVA学习脚印2: 数据类型和运算符

    JAVA学习脚印2: 数据类型和运算符 本节将记录java中的数据类型和运算符. 1. java中的数据类型 java中变量的数据类型有两种:基本类型(primitive)和引用(reference) ...

  3. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

  4. 《Java疯狂讲义》第3章(数据类型和运算符):博主李俊德的阅读笔记与知识拓展

    一.问题背景 博主在准备应聘的笔试.面试时,再次采用了多年以来的Java工具书<Java疯狂讲义>,并决定在每章详细复习后都要在博客中写下详细的阅读笔记. 二.阅读笔记与知识拓展--< ...

  5. Java第二章:数据类型和运算符

    今天刚上课,杨老师讲了进制之间的相互转换:16进制:1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.已经掌握,就一笔带过! 十进制整数,如:99, -500, 0 八进制整数,要求以 0 ...

  6. double类型怎么取余_数据类型和运算符

    数据类型和运算符 1.进制 1.1文件存储单位 ​ 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . ​ 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...

  7. 操作数数据类型 char 对于 sum 运算符无效。_数据类型和运算符

    数据类型和运算符 1.进制 1.1文件存储单位 ​ 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . ​ 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...

  8. Java基础以及变量和运算符、包机制、javadoc生成

    Java基础以及变量和运算符.包机制.javadoc生成 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive ...

  9. 【JavaSE】02-变量、数据类型和运算符

    二. 变量.数据类型和运算符 2.1 变量 2.1.1 变量的声明 type varName [=value][,varName[=value]...]; //[ ]中的内容为可选项,即可有可无 数据 ...

最新文章

  1. 还需要“attention”吗?一堆“前馈层”在ImageNet上表现得出奇得好
  2. 让人造太阳更近!DeepMind强化学习算法控制核聚变登上Nature
  3. 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...
  4. 程序员应该如何更有效率
  5. 【mysql学习】疑问点记录
  6. jquery的2.0.3版本源码系列(2):21行-94行定义了一些变量和函数 jQuery=function(){}
  7. 如何使用 C# 扩展方法
  8. TypeScript 2.8引入条件类型
  9. 最全介绍Document对象内容集合
  10. 浅谈Johnson算法
  11. 睡眠时间 数据_我测试了Apple Watch睡眠追踪以节省您的时间和电池寿命
  12. mysql5.6安装步骤详细_详解MySQL5.6安装步骤
  13. T-test检验中的P,α理解
  14. Hadoop2.7.2 分布式集群搭建(CentOS 7)
  15. texstudio设置暗黑主题
  16. Python特定场景数据内型“解压”操作
  17. 还能不能愉快地装完Win7了
  18. 76个常识,你知几个
  19. qt 侧边栏 Sidebar
  20. [从头读历史] 第271节 诗经 郑风

热门文章

  1. c语言歌手预测成绩,5个裁判可以对10个歌手进行打分,计算各个歌手的最终得分排列...
  2. python 百度ai批量识别_Python基于百度AI的文字识别的示例
  3. python调用libvirt_通过python获取kvm虚拟机的监控信息(基于libvirt API)
  4. 能源36号文解读_IDC报告预测:今年中国新能源汽车销量将达116万辆,未来五年复合增长率36%_详细解读_最新资讯_热点事件...
  5. 数据结构 快速排序(详解)
  6. 平衡二叉树(AVL树)-详解平衡调整
  7. Strongly connected HDU - 4635(tarjan+强连通分量)
  8. c语言case怎么输入字母,如何使用switch case语句将字母转换为数字
  9. Java修炼之路——基础篇——平台无关性
  10. K-D Tree学习笔记