原始数据类型和引用数据类型(原始类型和引用类型有什么区别)

如题所述

第1个回答  2024-09-18
基本数据类型和引用类型的区别是什么?

一、含义不同:

基本数据类型存放的是一个值,而引用类型存放的是一个(对象)地址。

二、影响不同:

基本数据类型由于在内存中的一个地址存放的是这些变量的值,所以调用函数,函数里的形参,就是复制这些变量的值,以后对形参值的变化,不会影响到原来变量的值;

引用数据类型由于在内存中是引用他的一个内存地址而不是具体的值,所以调用函数,函数里的形参,就是复制这些变量的值的地址,当对形参的值进行修改的时候,就等于是对这些变量的值,进行修改,所以会影响到原来变量的值。

引用的规则

(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。

(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。

(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

以下示例程序中,k被初始化为i的引用。

语句k=j并不能将k修改成为j的引用,只是把k的值改变成为6。

由于k是i的引用,所以i的值也变成了6。

以上内容参考:百度百科-引用类型

Java基本数据类型都有什么呢?

变量就是用来储存值而保留的内存位置。这就意味着当你创建一个变量时就会在内存中占用一定的空间。

基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母。

Java中有两种有效地数据类型:原始数据类型,引用数据类型。

1.原始数据类型

Java支持8种原始数据类型。原始数据类型是由该语言预先定义的并用关键词命名的。下面让我们深入学习一下这8种数据类型。

字节型

byte

字节型是一种8位有正负的二进制整数

最小值是-128(-2^7)

最大值是127(2^7-1)

默认值为0

字节型数据类型主要是为了在大型数组内节省空间,主要是替代整数由于字节型比整数小4倍。

例如:bytea=100,byteb=-50

短整形

short

短整数是一种16位有正负的二进制整数

最小值是-32768(-2^15)

最大值是32767(2^15-1)

短整数类型的数据也可以像字节型一样用于节省空间。短整数比整数小两倍

默认值为0

例如:shorts=10000,shortr=-20000

整数型

int

整数型是一种32位有正负的二进制整数

最小值是-2,147,483,648(-2^31)

最大值是2,147,483,647(2^31-1)

整数型一般默认被应用于整数值除非担心内存不够用。

默认值为0

例如:inta=100000,intb=-200000

长整形

long

长整型是一种64位有正负的二进制整数

最小值是-9,223,372,036,854,775,808(-2^63)

最大值是9,223,372,036,854,775,807(2^63-1)

这种数据类型一般是在需要比整数型范围更大时应用。

默认值为0L

例如:longa=100000L,intb=-200000L

浮点型

float

浮点型数据是一种单精度的32位IEEE754标准下的浮点数据。

浮点型数据主要是为了在大型浮点数字数组中节约内存。

默认值是0.0f。

浮点型数据不能用于如货币这样的精确数据。

例如:floatf1=234.5f

双精度型

double

双精度型数据是一种双精度的64位IEEE754标准下的浮点数据。

这种数据类型主要是默认被用于表示小数的值,一般是默认的选择。

双精度型数据不能用于如货币这样的精确数据。

默认值是0.0d

例如:doubled1=123.4

布尔型

boolean

布尔型数据代表一个信息比特。

它只有两个可能的值:真(true)和假(false)

这种数据类型用于真假条件下的简单标记。

默认值是假(false)

例如:booleanone=true

字符型

char

字符型数据是简单的16位Unicode标准下的字符。

最小值是:'\u0000'(或0)。

最大值是:'\uffff'(或65,535)。

字符型数据可以用来储存任意字母。

例如:charletterA(字符型的字母A)='A'

2.引用数据类型

引用数据类型是由类的编辑器定义的。他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Employee,Puppy等等。

类对象和数组变量就是这种引用数据类型。

任何引用数据类型的默认值都为空。

一个引用数据类型可以被用于任何声明类型和兼容类型的对象。

例如:Animalanimal=newAnimal("giraffe");

Java常量

常量是代表固定值的源代码。他们直接以代码的形式代表而没有任何估计。常量可以被分配给任意的原始变量类型。例如:

bytea=68;chara='A';

字节型,整数型,长整型和短整型也可以由十进制,十六进制和八进制计数系统表示。

当用这些技术系统表示直接量时,前缀0是为了标明八进制,前缀0x是为了标明十六进制。例如:

intdecimal=100;intoctal=0144;inthexa=0x64;

Java中的字符串型常量的规定和其他大多数语言一样,也是要写在双引号中间。字符串型直接量的例子如下:

"HelloWorld""two\nlines""\"Thisisinquotes\""""

字符和字符串型常量可以包含任意的Unicode字母。例如:

chara='\u0001';Stringa=""\u0001"";

Java语言也支持一些特殊的转义序列的字符和字符串直接量。他们是:

转义字符??????含义

\n?????????换行(0x0a)

\r?????????回车(0x0d)

\f?????????换页(0x0c)

\b?????????退格(0x08)

\s?????????空格(0x20)

\t??????????tab

\""?????????双引号

\'??????????单引号?

\??????????反斜杠????

\uxxxx??????十六进制UNICODE字符(xxxx)

欢迎想学习Java的小伙伴加入Java学习交流群,群号码:495273252?【长按复制】?我们一起学Java!

java原始数据类型有哪些

JAVA数据类型分基本数据类型和引用数据类型。

基本数据类型

Java里面包含8个基本数据类型,分别是:

boolean、byte、char、short、int、float、douboe、long

byte字节

byte是JAVA中最小的数据类型,它在内存中占8位(8个bit),取值范围从-128到127

赋值:byteI=127

short短整型

short类型在内存中占2个字节,取值范围从-32768到32767

赋值:shorti=32767;

char字符型

char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0到65535

赋值:chari=‘a’;或者chari=97;

int整型

int型在内存中占4个字节。取值范围从-2147483648到2147483647

赋值:inti=10;

float单精度浮点型

float型在内存中占4个字节。取值范围从-3.4E38到3.4E38

赋值:floati=1.0f;

long长整型

long型在内存中占8个字节。取值范围从-9223372036854775808到9223372036854775807

double双精度浮点型

double型在内存中占8个字节。取值范围从-1.7E308到1.7E308

boolean布尔型

boolean类型只有两个值:true和false。

基本数据类型的相互转换

转型规则

JAVA中所有的数字变量都是有符号(正负)的。

JAVA不允许类型的随意转换。只有数字变量可以进行转换,但是不能随意。

带有小数点的数字变量默认都为double型。定义float型必须进行强制类型转换。

所占字节数小的数字型变量赋值给所占字节数比它大的类型时不用强制类型转换,此时是自动转型。

int型变量赋值给char型变量时,JVM会以int型变量值到ASCII码表中查找出所对应的字符,再赋值给char型变量。反之也是。但是遵循第4条规则。

初始化简单数据类型时要注意赋值的范围,超出则会产生编译错误。

基本数据类型默认初值

类型初始值

booleanfalse

byte0

char0

short0

int0

float0.0

double0.0

long0

基本数据类型默认初值表

引用数据类型

JAVA中,非简单数据类型的类型都是引用数据类型。

基本数据类型和引用类型的区别

基本数据类型和引用类型的区别如下:

一、声明变量时内存分配不同

基本类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值。

二、不同的内存分配带来不同的访问机制

在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获得这个对象中的值,这就是传说中的按引用访问。?而原始类型的值则是可以直接访问到的。

三、参数传递的不同

原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。

引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,这一点你要时刻铭记在心!

四、复制变量时的不同

原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。

引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。

在java中,怎么理解原生数据类型和引用数据类型。原生数据类型有哪些,引用数据类型有哪些。

你可以这样理解,基本数据类型:int

logo设计

创造品牌价值

¥500元起

APP开发

量身定制,源码交付

¥2000元起

商标注册

一个好品牌从商标开始

¥1480元起

公司注册

注册公司全程代办

¥0元起

    官方电话官方服务
      官方网站八戒财税知识产权八戒服务商企业需求数字市场

原始数据类型和引用数据类型(原始类型和引用类型有什么区别)
原始数据类型和引用数据类型(原始类型和引用类型有什么区别)基本数据类型和引用类型的区别是什么?一、含义不同:基本数据类型存放的是一个值,而引用类型存放的是一个(对象)地址。二、影响不同:基本数据类型由于

Java的引用类型
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实...

基础数据类型和数据包裹类的不同用处在哪?
原始类型和引用类型的最大区别在于,原始数据类型没有方法属性,而引用数据类型有方法属性,举个例吧.Intger可以可以点出方法来,而int不能.

Java引用类型比原始类型的好在哪里?
对象可以被序列化,原始类型不行。对象提供的方法可以灵活转换,可以扩展,原始类型不行 在集合类中只能使用对象,不能使用原始类型 原始类型没有null的概念,对象有,某些情况下需要辨别某个参数是否被初始化了,如果使用原始类型,那么0的值不知道是初始值还是没有初始化系统自动给的。我凭借自己的使用体...

Java语音分几大类型
,引用类型。1、原始类型包括:boolean ,byte,char,int,short,float,long,double,值得注意的是:在 原始数据 类型中,除了boolean类型所占长度与平台有关外,其他数据类型长度都是与平台无关的。比如,int永远占4个字节。2、引用类型常见的有:String,StringBuffer ,ArrayList ,HashSet,HashMap等。

基本数据类型和引用类型的区别
基本数据类型和引用类型的区别如下:一、声明变量时内存分配不同 基本类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值。二、不同的内存分配带来不同的访问机制 在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的...

数据类型有哪几种?
原始类型:包括基本的数据类型,如整数、浮点数、字符等,它们占用固定的内存空间。多元组和记录单元:用于组合多个值,如数组和结构体,可以存储不同类型的数据。代数数据类型:抽象数据类型,如集合、树等,用于描述更复杂的数据结构。抽象数据类型:基于函数定义的数据结构,如栈、队列等,具有特定的运算...

java中基本数据类型和引用数据类型各有什么特点
一、从概念方面来说 基本数据类型:变量名指向具体的数值引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值 二、从内存构建方面来说 基本数据类型:变量在声明之后java就会立刻分配给他内存空间 引用数据类型:它以特殊的方式(类似C指针)指向对象实体(具体的值),这类变量声明时不会分配...

引用数据类型是什么意思?举个例子呗
引用类型,顾名思义,是指数据类型中通过实际值的引用来表示,类似于指针,但不涉及值的复制。当为变量分配引用类型时,变量将直接关联到原始值,而不是创建副本。这种类型在编程中常见,包括类、接口、委托和某些装箱值类型。让我们通过一个C++的例子来理解:在编程中,引用就像一个变量的别名,如变量n...

JavaScript基础篇(一):数据类型
JavaScript基础篇(一):数据类型在学习JavaScript过程中数据类型是必不可少的一环,今天我们来看看JavaScript中有哪些数据类型吧。ECMAScript语言类型ECMAScript语言类型是分为Undefined、Null、Boolean、String、

相似回答
大家正在搜