JAVA都有哪些基本数据类型啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA都有哪些基本数据类型啊相关的知识,希望对你有一定的参考价值。
详细点的
数据类型数据类型就是对内存位置的抽象表达。程序员可以利用多种数据类型:某些由编程语言定义,某些由外部库定义,还有 些则由程序员来定义。很多编程语言都依赖于特定的计算机类型和对数据类型属性的具体编译实现,比如word和integer数据类型的大小等。另一方面, Java的虚拟机负责定义其内置数据类型的各方面内容。这就意味着不管Java虚拟机(JVM)运行在何等低级的操作系统之上,数据类型的属性都是完全一 样的。
简单数据类型
简单数据类型是不能再简化的、内置的数据类型,由编程语言定义,表示真实的数字、字符和整数。更大、 更复杂的数据类型可以采用简单数据类型的组合来定义。在大多数情况下,简单数据类型都具有其硬件等价物。比方说,int简单类型有时存放在32位硬件寄存 器内。Java提供了几类简单数据类型表示数字和字符。
简单数据类型通常划分为以下几种类别:实数、整数、字符和布尔值。这些类别中又包 含了多种简单类型。比如说,Java定义了两种简单类型:float和double,它们都属于实数类别,另外4种简单类型:byte、short、 int和long则都属于整数类别。此外还有一种简单类型char则归于字符类型。布尔值类别只有一种简单类型:boolean。表A详细列出了Java 的简单数据类型.
表A Java简单数据类型
简单类型 大小 范围/精度
float 4 字节 32位IEEE 754单精度
double 8 字节 64位IEEE 754双精度
byte 1字节 -128到127
short 2 字节 -32,768到32,767
int 4 字节 -2,147,483,648到2,147,483,647
long 8 字节 -9,223,372,036,854,775,808到9,223,372,036, 854,775,807
char 2 字节 整个Unicode字符集
boolean 1 位 True或者false
Java的简单数据类型
Java中的所有数字变量都是有符号的,Java不允许数据类型之间随意的转换。只有数字变量之间可以进行类型转换。比如,boolean就不能转换为其他数据类型,而且其他数据类型也不能转换为boolean。
因为Java的简单数据类型都经过准确定义,而且直接内存访问也是不允许的,所以在Java语言中取消了sizeof运算符。
Java的简单数据类型并不是对象。为了采用面向对象方式对待Java简单数据类型,你需要首先用类封装它们。
封装类
Java 还提供了Byte、Short、Boolean、Character、Integer、Double、Float和Long等内置的封装类。这些封装 (wrapper)类提供了很直观的实用方法。比如,Byte、Float, Integer、Long和Double类都具有doubleValue()方法,通过它可以把存储在类的实例中的值转换为Double类型。还有,所有 的封装类都提供了静态的valueOf(String s)方法把给定的String转换为对应的简单类型。清单A的代码演示了这些封装类的一些用法。
简单数据类型初始化
在Java 语言中,简单数据类型作为类的成员变量声明时自动初始化为默认值,除非显式地声明。简单数据类型为某一方法声明局部变量时不会自动地初始化而且会导致编译 器扔出类似以下的错误消息“Variable x may not have been initialized.(x变量没有初始化)”表B定义了Java简单数据类型的默认值。
表B Java简单数据类型的默认值
类型
默认值
boolean
false
Byte
0
short
0
int
0
Long
0
Char
�0�7u0000�0�7
Float
0.0
double
0.0
Java简单数据类型的默认初始值
清单B 中的代码显示所有的Java简单数据类型都用做了Initialization类的成员变量。该例还显示Initialization类的构造器中局部声明了一个int变量。在不修改以上代码的情况下,编译器会在对以上代码进行编译的时候扔出错误。
一旦引发问题的代码行(那些引用未初始化变量导致错误发生的代码)被删除或者注释掉。程序成功编译和执行之后就会显示以下的结果:
byte: 0
short: 0
int: 0
long: 0
float: 0.0
double: 0.0
char: 0
boolean: false
我们还可以显式地初始化成员变量为其他值,如以下代码所示:
byte b = 5;
short s = 123;
int i = 1234;
long l = 12345;
float f = 123.45f;
double d = 12345.678;
char c = �0�7A�0�7;
boolean z = true; 参考技术A 数据类型就是对内存位置的抽象表达,数据类型指明了变量或表达式的状态和行为。Java语言中数据类型分为简单数据类型和复合数据类型,如下表所示。 * 简单数据类型:简单数据类型是不能再简化的、内置的数据类型,由编程语言定义,表示真实的数字、字符和整数。例如实数、整数、字符和布尔值。 * 复合数据类型:由简单数据类型的组合形成的更大、更复杂的数据类型。例如类、接口和数字。 注意: (1)在Java语言中,字符串没有被当做数组,而是被当做对象来处理的,类String和StringBuffer都可以被用来表示一个字符串。 (2)Java语言不支持C、C++中的指针类型、结构类型、枚举类型和联合类型。 (3)Java语言中所有简单数据类型的所在内存位数都是固定的。 (4)Java语言没有提供无符号整数类型。 (5)Java语言的short数据类型很少使用,因为它限制数据有存储为先高字节,后低字节,这样在某些机器中会出错。 Java 语言的数据类型 简单数据类型 布尔数据类型 (boolean) 1 位 字符类型 (char) 2 字节 整数类型 (integer) byte 1 字节 short 2 字节 int 4 字节 long 8 字节 浮点数类型 (float) float 4 字节 double 8 字节复合数据类型 类 (class) 接口 (interface) 数组 String 是对像 参考技术B ava语言提供了八种基本类型: 六种数字类型(四个整数型,两个浮点型) 字节型byte 8位 短整型short 16位 整型int 32位 长整型long 64位 单精度float 32位 双精度double 64位 一种字符类型 字符型char 8位 还有一种布尔型。 布尔型:boolean 8位 可存储"True"和"false"
string是对象不是数据类型 String的变量名是对String类的引用
JS开发中基本数据类型都有哪些
数据类型
听我来慢慢跟你说,根据Ecmascript规范规定
5种简单数据类型:Undefined, Null, Boolean, Number, String.
1种复杂数据类型:Object。
其中5种简单数据类型又称为基本数据类型,复杂数据类型又称为引用数据类型。
存储结构
以下理论所有程序语言通用:
基本数据类型保存在栈内存,引用数据类型实际上是一个指针,这个指针也保存在栈中,但是这个指针指向的对象则保存在堆内存中。
两种数据访问方式
基本数据类型:按值访问,读写的是它们实际保存的值。 引用数据类型:按引用访问,读写它们时需要先从栈中读取堆内存地址,然后找到保存在堆内存中的值。
两种类型的复制
基本数据类型变量的复制:从一个变量向另一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的空间中。 引用数据类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中为新变量分配的空间中,而这个指针副本和原指针指向的是同一个堆内存中的对象;复制操作后两个变量实际上将引用同一个对象,因此改变其中一个将影响到另外一个。
基本包装类型
学过java的就更好理解了,拆箱、装箱吧啦吧啦... es沿袭了java语言中基本数据类型不是面向对象的思想,这在实际使用时存在很多的不便。为了解决这个不足,在设计类时为某些基本数据类型设计了一个对应的类进行代表(Number、String和Boolean),这样和基本数据类型对应的类统称为包装类,然后就可以通过装箱的对象中的属性和行为操作基本数据了。---它们是特殊的引用类型,既与其他的引用类型相似,同时又具有与各自的原始类型相应的特殊行为。比如:
var res=a.substring(0,2);
console.log(res);//"he"
//上面这个例子中,变量a是一个字符串,字符创必然是基本类型的值,但是它却在第二行调用了substring()方法,并将结果返回保存在res中,
// 我们都知道,既然a是基本类型的值而不是对象,因而从逻辑上讲,它是没有方法的。
// 其实在在实现这个操作的时候,内部已经隐式地帮我们帮创建了一个包装对象了,java把这个过程叫做'自动装箱'
// 所以以上的实际的情形应该是这样的:
var a=new String("hello");
var res=a.substring(0,2);
console.log(res);//"he"
在实际运用中,我们可以显式的调用String、Number和Boolean来创建基本包装类型的对象,不过,应该在绝对必要的时候再这么做,因为这种做法很容易让人分不清自己是在处理基本类型还是引用类型。对基本包装类型的实例调用 typeof 会返回object
参考技术A var弱类型。number,string,boolean ,undefined,null 参考技术B number,boolean,null,undifind,string 参考技术C 基础类型:1. string
2. num
3. undef
4. bool
5. symbol
6. bigint
7. null
引用类型
Object typeof instance == "object",使用 new 关键字传进的数据,Object,Array等 参考技术D
值类型:字符串(string)、数值(number)、布尔值(boolean)、null、undefined
引用类型:对象(Object)、数组(Array)、函数(Function)
值类型和引用类型的区别
值类型:
占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这就是为何修改引用类型总会影响到其他指向这个地址的引用变量。
保存与复制的是值本身
使用typeof检测数据的类型
基本类型数据是值类型
引用类型:
占用空间不固定,保存在堆中(当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。
保存与复制的是指向对象的一个指针
使用instanceof检测数据类型
使用new()方法构造出的对象是引用型
以上是关于JAVA都有哪些基本数据类型啊的主要内容,如果未能解决你的问题,请参考以下文章