java的数据类型

  

  由上图,java的数据类型分为基本数据类型、引用数据类型两大类。

1、基本数据类型

  与c不同,java的各种数据类型占有固定长度的内存,与具体的软硬件平台无关;另外,每种数据类型都对应一个默认的数值,是的这种数据类型的变量的取值总是确定(存在)的,这两点保证了java的跨平台性和安全稳定性。

  基本数据类型分为4类8种。

  基本数据类型长度

  

  1)逻辑型boolean

    boolean数据类型的值只允许去true或false,不可以用0或非0的整数代替true或false,这是java与c不同的地方。

  2)文本类型char

    字符常量为用单引号括起来的单个字符,java的字符型采用unicode编码(c语言采用ASCII编码,每个数据8比特),每个字符占用2字节,因此可以表示单个字母或汉字,如:

    char c1 = 'a';  char c3 = '中';

    也可用十六进制的形式表示(范围'\u0000'~'\uFFFF')

    char c2 = '\u0061'; char c4 = '\u4e2d'; 

public static void main(String arg[]){
char c1 = 'a';
char c2 = '\u0061';
char c3 = '中';
char c4 = '\u4e2d';
System.out.println("c1 = " + c1);
System.out.println("c2 = " + c2);
System.out.println("c3 = " + c3);
System.out.println("c4 = " + c4);
}

  输出结果如下:

c1 = a
c2 = a
c3 = 中
c4 = 中

  java语言还允许使用转义字符'\'将其后面的字符转换为其它含义(详情参考JAVA中转义字符),如:

  char c5 = '\n'; //代表换行符

  3)整数型(byte、short、int、long)

  • java的整型常量的三种表示形式

  十进制,如:10

  八进制,要求以'0'开头,如:012

  十六进制,要求以'0x'或'0X'开头,如:o10

  注意:上述0、0x或0X,中的0为数字0。

 System.out.println("十进制 :" + 10);
System.out.println("八进制 :" + 012);
System.out.println("十六进制 :" + 0xa);

  输出结果

十进制 :10
八进制 :10
十六进制 :10
  • 整型常量按长度不同又可分为一般整型常量(int,32位)和长整型常量(long,64位,尾部有一个大写的L或小写的l)

  4)浮点型(float、double)

  浮点型常量表示的是可以含有小数部分的数值常量,据长度不同分为浮点常量(32位,用F或f表示,如19.4F,3.0513E3,8701.52f)和双精度常量(64位,用D或d表示,如2.433E-5D,3.1415d)。同其它高级语言一样,浮点常量有一般表示法和指数表示法两种。

System.out.println(314F);
System.out.println(314D);
System.out.println(3.14e2); System.out.println(7.273F);
System.out.println(7.273D);

  输出结果

314.0
314.0
314.0
7.273
7.273
  • 最后

  浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
  数符占1位二进制,表示数的正负。
  指数符占1位二进制,表示指数的正负。
  尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
  指数存指数的有效数字。

  指数占多少位,尾数占多少位,由计算机系统决定。
  可能是数符加尾数占24位,指数符加指数占8位 -- float.
  数符加尾数占48位,指数符加指数占16位 -- double.

  知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是浮点数的数值范围。

  对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

2、数值型数据类型间的相互转换

  

  图中3个虚线表示可能有精度损失的转换,例如,123456789是一个大整数,它所包含的位数比float类型所能够表达的位数多。当将这个整型数值转换为float类型时,将会得到同样大小的结果,但却失去了一定的精度。

public static void main(String arg[]){
int n = 123456789l;
float f = l;
System.out.println("int= " + n);
System.out.println("float = " + f); }

  结果

int= 123456789
float = 1.23456792E8

  当使用上面两个数值进行二元操作时(例如 n+f  , n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。

  如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;

  否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;

  否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。

  否则,两个操作数都将被转换为int类型。

  • 强制转换

  强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。例如:

public static void main(String arg[]){
double d = 9.99;
int i = (int)d;
System.out.println("d = " + d);
System.out.println("i = " + i); }

  结果

d = 9.99
i = 9

警告:如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值

     不要在boolean类型与任何类型之间进行强制类型转换,这样可以防止发生错误。

java基础知识(一)数据类型(上)的更多相关文章

  1. JAVA基础知识之数据类型

    JAVA的数据类型知识点主要包括基本数据类型,包装类,字符串类(String,StringBuffer, StringBuilder区别和用法),数组,数据类型转换等等,暂时只想到这么多,后面会再补充 ...

  2. (6)java基础知识-基本数据类型、数据类型转换

    一.基本数据类型 基本的数据类型一共有四类八种 1.整型 byte:  1字节 取值范围 -128~127 short: 2字节    取值范围 -32768~32767 int:     4字节 取 ...

  3. 01-Java基础知识:数据类型与变量、标识符、运算符、表达式

    Java基础知识:数据类型与变量.标识符.运算符.表达式 一.数据类型 Java定义了基本数据类型.引用数据类型.自定义类型. 八种基本数据类型:byte (1). short (2).  int ( ...

  4. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  5. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  6. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  7. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  8. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  9. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  10. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

随机推荐

  1. insert、update select from

    1.insert select from <一棵树-博客园> 收集整理,转载请注明出处! 使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了. 1.INSE ...

  2. 监控jvm的一个坑

    监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...

  3. C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上)

    前言:上篇介绍了DDD设计Demo里面的聚合划分以及实体和聚合根的设计,这章继续来说说DDD里面最具争议的话题之一的仓储Repository,为什么Repository会有这么大的争议,博主认为主要原 ...

  4. ionic 开发笔记

    1.AngularJS 外部的控制器(DOM 事件.外部的回调函数如 jQuery UI 空间等)调用了 AngularJS 函数之后,必须调用$apply.在这种情况下,你需要命令 AngularJ ...

  5. 如何同时运行两个tomcat?

    两个以上,要更改端口号.1 下载tomcat的压缩包(不是安装的那种,直接解压缩就能用的)下载地址:http://tomcat.apache.org/download-55.cgi 下载好的文件名是: ...

  6. linux终端常用快捷键

    Ctrl + d       删除一个字符,相当于通常的Delete键(命令行若无任何字符,则相当于exit:处理多行标准输入时也表示EOF ) Ctrl + h       退格删除一个字符,相当于 ...

  7. js鼠标事件大全

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  8. ScrollView中嵌套recycleView 出现的不显示,显示不全,终极解决方案

    最近公司项目中用到了ScrollView去嵌套recycleView, 最开始我天真的把recycleView直接放入scrollView中,结果可想而知,什么都不显示,瞬间懵逼,我心想应该是和嵌套L ...

  9. BZOJ 4698: Sdoi2008 Sandy的卡片

    4698: Sdoi2008 Sandy的卡片 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 106  Solved: 40[Submit][Stat ...

  10. Mvc中Session导致action不异步的问题

    Session导致Action不异步 啊.回想起来,真是一个大坑啊,最近博主在做一个上传文件实时显示进度条的功能.博主的思路是在上传的时候用一个Task一秒一次向Redis中插入当前的上传进度 ,上传 ...