基本数据类型和引用类型的区别是什么?
一、含义不同:
基本数据类型存放的是一个值,而引用类型存放的是一个(对象)地址。
二、影响不同:
基本数据类型由于在内存中的一个地址存放的是这些变量的值,所以调用函数,函数里的形参,就是复制这些变量的值,以后对形参值的变化,不会影响到原来变量的值;
引用数据类型由于在内存中是引用他的一个内存地址而不是具体的值,所以调用函数,函数里的形参, 就是复制这些变量的值的地址,当对形参的值进行修改的时候,就等于是对这些变量的值,进行修改,所以会影响到原来变量的值。
引用的规则
(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 倍。
例如:byte a = 100 , byte b = -50
短整形
short
短整数是一种 16 位有正负的二进制整数
最小值是 -32768(-2^15)
最大值是 32767(2^15-1)
短整数类型的数据也可以像字节型一样用于节省空间。短整数比整数小两倍
默认值为 0
例如:short s = 10000, short r = -20000
整数型
int
整数型是一种 32 位有正负的二进制整数
最小值是 - 2,147,483,648(-2^31)
最大值是 2,147,483,647(2^31 -1)
整数型一般默认被应用于整数值除非担心内存不够用。
默认值为 0
例如:int a = 100000, int b = -200000
长整形
long
长整型是一种 64 位有正负的二进制整数
最小值是 -9,223,372,036,854,775,808(-2^63)
最大值是 9,223,372,036,854,775,807 (2^63 -1)
这种数据类型一般是在需要比整数型范围更大时应用。
默认值为 0L
例如:long a = 100000L, int b = -200000L
浮点型
float
浮点型数据是一种单精度的 32 位 IEEE 754 标准下的浮点数据。
浮点型数据主要是为了在大型浮点数字数组中节约内存。
默认值是 0.0f。
浮点型数据不能用于如货币这样的精确数据。
例如:float f1 = 234.5f
双精度型
double
双精度型数据是一种双精度的 64 位 IEEE 754 标准下的浮点数据。
这种数据类型主要是默认被用于表示小数的值,一般是默认的选择。
双精度型数据不能用于如货币这样的精确数据。
默认值是 0.0d
例如:double d1 = 123.4
布尔型
boolean
布尔型数据代表一个信息比特。
它只有两个可能的值:真(true)和假(false)
这种数据类型用于真假条件下的简单标记。
默认值是假(false)
例如:boolean one = true
字符型
char
字符型数据是简单的 16 位 Unicode 标准下的字符。
最小值是: '\u0000' (或 0)。
最大值是: '\uffff' (或 65,535 )。
字符型数据可以用来储存任意字母。
例如: char letter A(字符型的字母A) ='A'
2.引用数据类型
引用数据类型是由类的编辑器定义的。他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Employee, Puppy 等等。
类对象和数组变量就是这种引用数据类型。
任何引用数据类型的默认值都为空。
一个引用数据类型可以被用于任何声明类型和兼容类型的对象。
例如:Animal animal = new Animal("giraffe");
Java常量
常量是代表固定值的源代码。他们直接以代码的形式代表而没有任何估计。常量可以被分配给任意的原始变量类型。例如:
byte a = 68; char a = 'A';
字节型,整数型,长整型和短整型也可以由十进制,十六进制和八进制计数系统表示。
当用这些技术系统表示直接量时,前缀 0 是为了标明八进制,前缀 0x 是为了标明十六进制。例如:
int decimal = 100; int octal = 0144; int hexa = 0x64;
Java 中的字符串型常量的规定和其他大多数语言一样,也是要写在双引号中间。字符串型直接量的例子如下:
"Hello World" "two\nlines" "\"This is in quotes\""
字符和字符串型常量可以包含任意的 Unicode 字母。例如:
char a = '\u0001'; String a = "\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
赋值:byte I = 127
short 短整型
short类型在内存中占2个字节,取值范围从 -32768到32767
赋值:short i = 32767;
char 字符型
char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从 0 到 65535
赋值:char i = ‘a’; 或者 char i = 97;
int 整型
int型在内存中占4个字节。取值范围从 -2147483648 到 2147483647
赋值:int i = 10;
float 单精度浮点型
float型在内存中占4个字节。取值范围从 -3.4E38 到 3.4E38
赋值:float i = 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条规则。
初始化简单数据类型时要注意赋值的范围,超出则会产生编译错误。
基本数据类型默认初值
类型 初始值
boolean false
byte 0
char 0
short 0
int 0
float 0.0
double 0.0
long 0
基本数据类型默认初值表
引用数据类型
JAVA中,非简单数据类型的类型都是引用数据类型。
基本数据类型和引用类型的区别
基本数据类型和引用类型的区别如下:
一、声明变量时内存分配不同
基本类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值。
二、不同的内存分配带来不同的访问机制
在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获得这个对象中的值,这就是传说中的按引用访问。 而原始类型的值则是可以直接访问到的。
三、参数传递的不同
原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,这一点你要时刻铭记在心!
四、复制变量时的不同
原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。
引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。
在java中,怎么理解原生数据类型和引用数据类型。原生数据类型有哪些,引用数据类型有哪些。
你可以这样理解,基本数据类型:int,long boolean char byte float,double
引用数据类型:类,接口,数组,