Java中字符串string的数据类型
Java中字符串string的数据类型
时间:2017-07-03 08:01:47 YuanMxy
原⽂:blog.csdn/YuanMxy/article/details/74170775
Java 基本数据类型
字符串是什么类型的变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能⽤来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、⼩数或者字符。
Java 的两⼤数据类型:
内置数据类型
引⽤数据类型
内置数据类型
Java语⾔提供了⼋种基本类型。六种数字类型(四个整数型(byte short int long),两个浮点型(float double)),⼀种字符类型(char),还有⼀种布尔型(boolean)。
2.问题描述:Java中字符串string属于什么数据类型?
3.问题解答:
(1)⾸先给出数据类型的分类
(2)Java数据类型在内存中的存储:
1)基本数据类型的存储原理:所有的简单数据类型不存在“引⽤”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本⾝的值就是存储在栈空间⾥⾯,⽽Java语⾔⾥⾯⼋种数据类型是这种存储模型;
2)引⽤类型的存储原理:引⽤类型继承于Object类(也是引⽤类型)都是按照Java⾥⾯存储对象的内存模型来进⾏数据存储的,使⽤Java内存堆和内存栈来进⾏这种类型的数据存储,简单地讲,“引⽤”是存储在有序的内存栈上的,⽽对象本⾝的值存储在内存堆上的;
区别:基本数据类型和引⽤类型的区别主要在于基本数据类型是分配在栈上的,⽽引⽤类型是分配在堆上的(需要java中的栈、堆概念).
(3)那Java中字符串string属于什么数据类型?
Java中的字符串String属于引⽤数据类型。因为String是⼀个类,
"=="和 equals ⽅法究竟有什么区别?
==操作符专门⽤来⽐较两个变量的值是否相等,也就是⽤于⽐较变量所对应的内存中所存储的数值是否相同,要⽐较两个基本类型的数据或两个引⽤变量是否相等,只能⽤==操作符。
如果⼀个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本⾝占⽤⼀块内存(堆内存),变量也占⽤⼀块内存,例如 Objet obj = new Object();变量 obj 是⼀个内存,new Object()是另⼀个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占⽤的那块内存的⾸地址。对于指向对象类型的变量,如果要⽐较两个变量是否指向同⼀个对象,即要看这两个变量所对应的内存中的数值是
否相等,这时候就需要⽤==操作符进⾏⽐较。
equals ⽅法是⽤于⽐较两个独⽴对象的内容是否相同,就好⽐去⽐较两个⼈的长相是否相同,它⽐较的两个对象是独⽴的。
String a=new String("foo");
String b=new String("foo");
两条 new 语句创建了两个对象,然后⽤ a/b 这两个变量分别指向了其中⼀个对象,这是两个不同的对象,它们的⾸地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,表达式 a==b 将返回 false,⽽这两个对象中的内容是相同的,所以,表达式 a.equals(b)将返回true。
java中String是引⽤数据类型
为什么
String str="scce"; String str2="scce";
str==str2 返回true
⽽String str2=new String("scce");
str==str2返回false
String str="scce"; //这是在静态数据区创建了⼀个对象
String str2="scce"; //创建静态数据对象是先在静态数据区查,如果存在则不创建新的,保证静态数据区中的数据只有⼀份,
str==str2返回true //指向同⼀个对象
String str2=new String("scce"); str==str2返回false //在堆中创建⼀个对象,引⽤值当然不同
Stirng特殊在如果静态数据区中存在,那么不创建新的对象,⽽是指向这个对象。
那么为什么:
String str="scce";
String str2=new String("scce");
str.equals(str2)为true呢
因为String重新了equals⽅法
=================== End

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。