java的数据类型相关知识点

总结就是八个字:

数据2型,四类八种 (个人理解,仅供参考)

解析图如下:

基本数据类型:

1.逻辑类:boolean
布尔类型,它比较特殊,布尔类型只允许存储true(真)或者false(假),不可以用0或者非0表示
可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转
换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte数
组来实现的。

2.文本类:char
字符类型,它在内存中占用2个字节,也就是16 bit,因为java本身的字符集不是用ASCII码来存储的,
而是用的16位的Unicode字符集,所以它的字符存储范围也就是‘\u0000 -- u\ffff‘,默认值呢?就是‘\u0000‘

3.整数类:
下面从小到大来一一介绍:

byte:可以说是java中最少的数据类型了,它在内存中占用1个字节,也就是8位(bit),值得范围是:-128~127,
也就是-2的7次方到2的7次方减一,默认值是0B.

short:短整型,它在内存中占用的是2个字节,16位,值得取值范围是-32768~32767,也就是-2的15次方到2的15次方减一,
默认值也是0S.

int:整型,在内存中占4个字节,32位,值得取值范围是-2147483648~2147483647,也就是-2的31次方到2的31次方减一,
默认值还是0

long:长整型,在内存中占8个字节,64位,值的取值范围是-2的63次方到2的63次方减一,默认值要注意了,因为是长整型,
所以默认是虽说是0,但是准确的说是0L,必须要加上L来表示它是long类型,不加就成了int类型了.

4.浮点类:

不声明小数类型的情况下,默认为double

float :单精度浮点型, 在内存中占4个字节,32位,主要用来存储小数的,但是有限制,有效小数位只有6~7位,默认是0.0f ,
取值范围是:3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示  乘以10的负45次方)

double:双精度浮点型,在内存中占8个字节,64位,也是用来存储小数的,默认是0.0,取值范围是1.797693e+308 到
4.9000000e-324(e+308表示是乘以10的308次方,同样,e-324表示乘以10的负324次方)

数据类型转换(boolean不参与数据类型的转换):
		    char(16 bit)
			|
byte(1 bit) ->  short(16 bit)  -> int(32 bit)  -> long(64 bit)
			|                |
		     float(32 bit)    double(64 bit)
根据类型所占内存大小,由高位类型转换低位类型没问题,低位转高位会出现精度丢失

引用数据类型:

基本类型和引用类型的关系:
基本类型	二进制位数	包装器类(引用类型)
boolean			1		Boolean
byte			8		Byte
char			16		Character
short			16		Short
int				32		Integer
long			64		Long
float			32		Float
double			64		Double

对于取值范围,在对应的包装器类中有常量已经声明:
基本类型byte 二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
基本类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
基本类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
基本类型double 二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE

两者的异同:

1.Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java1.5开始,
JVM就可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候
就可以像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有
的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类
也无法重写它们的任何方法。而引用数据类型是存储在堆中的.

2.基本类型的优势:数据存储相对简单,运算效率比较高

3.包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想

4.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

5.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

6.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null

7.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到

原 https://www.csdn.net/gather_24/NtjaAg2sMzAxLWJsb2cO0O0O.html

原文地址:https://www.cnblogs.com/PasserByOne/p/11323673.html

时间: 2024-08-30 10:40:12

java的数据类型相关知识点的相关文章

java线程池相关知识点总结

Android中常见到的很多通用组件一般都离不开"池"的概念,如各种图片加载库,网络请求库,即使Android的消息传递机制中的Meaasge当使用Meaasge.obtain()就是使用的Meaasge池中的对象,因此这个概念很重要.本文将介绍的线程池技术同样符合这一思想. 线程池的优点:重用线程池中的线程,减少因对象创建,销毁所带来的性能开销;能有效的控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞;能够多线程进行简单的管理,使线程的使用简单.高效. 线程

java基础数据类型相关

以往数据类型都不清晰,后来工作需要,tcp协议发送数据,要占几个字节几个字节,蒙圈了,彻底给整理整理.java对于每一种数据都明确地定义了具体的数据类型,不同的数据类型占用不同的内存空间. 数据类型:基本数据类型.引用数据类型 基本数据类型:数值型.字符型(char).布尔型(boolean)                     数值型:整数类型(byte.short.int.long).浮点类型(float.double) 引用数据类型:类(class).接口(interface).数组(

JavaScript 的数据类型 相关知识点

(1)基本数据类型介绍 JavaScript的数据类型分为两类:原始类型(primitive type)和对象类型(object type) 或者说是:可以拥有方法的类型和不能拥有方法的类型 或者说是:可变(mutable)类型和不可变(immutable)类型 原始类型主要包括:数字(number).字符串(string).布尔值(boolean).undefined (一般来说 未定义的值和定义未赋值的为undefined ) 其中NaN属于一种特殊的number 对象类型说白了数据类型就是

JAVA File对象相关知识点

public class DirList { public static void main(String[] args) { File file=new File("."); String[] list; if(args.length==0) { list=file.list(); }else { list=file.list(new DirFilter(args[0]));//new DirFilter出代码因为实现了FilenameFilter接口:所以只要实现了该接口的类都可以

java中的小知识点

1.数据类型的相关知识点 1.1.java内置封装类的转换 java中内置的封装类Byte.Integer.Float.Double和Long都可以转换成double类型的数值:因为这些封装好的类中都有doubleValue()的方法,进而调用此方法就可以转换成Double类型的数值啦:[各个类声明的引用对象,都会有相应的xxxValue()方法,转换成自己需要的数据类型] 比如: package fdx.test.ShuJuKind; public class TestOne { public

深入理解Java之数据类型

一.概述 我们通过编程解决一个具体问题时,首先要做的工作是用各种“数据结构”表示问题中的实体对象,而后才能着手研究描述具体业务逻辑的算法.这也正印证了”程序 = 数据结构 + 算法“.而这里的数据结构,便对应着各种数据类型. 数据类型指的是一组值以及相关的一组操作.Java中有两大类数据类型:一类是原始(primitive)数据类型,包括boolean.int.double等等:还有一类是引用类型,也就是类(class),包括Java类库提供给我们的类和我们自己使用关键字class定义的类.Ja

Java中级开发工程师知识点归纳

(一)Java 1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法. ②抽象类中可以有普通成员变量,而接口中不能有普通成员变量. ③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法. ④抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只有public和默认类型. ⑤ 抽象类中可以包含静态方法,接口内不能包含静态方法. ⑥抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问

Android开发涉及有点概念&相关知识点(待写)

前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由于Android是基于Linux,而Linux又是用c山寨Unix的,但是为什么Android不用开发App,其实我也不懂,我想可能是java比较简单. 同样的,IOS为啥没用java,这个我也想可能是因为IOS是封闭的吧..晕,又废话了..好,开始吧,不过这次很多要查资料了,很多名词.单词不会啊! 首先还

Java基本数据类型及其封装器的一些千丝万缕的纠葛

一些概念 ????想必大家都知道Java的基础数据类型有:char.byte.short.int.long.float.double.boolean 这几种,与C/C++等语言不同的是,Java的基础数据的位数是固定不变的. ????Java作为一门面向对象的语言,自然少不了对象了,因此基础数据类型都对应存在一个基本类型封装器类,它们的封装器分别为:Character.Byte.Short.Integer.Long.Float.Double.Boolean. ????在JDk1.5之前,在基础数