1、前言
首先提出一个问题在 Java 中 String 属于那种数据类型?
我的一个朋友是这么说的,「what?是不是有很多疑惑,int、double、String 不都是经常一起使用的么,应该都是同一种数据类型吧,基本数据类型?」
大家认为呢?「老公你快说句话啊!」
对于初学者而言可能没有对数据类型没有很强的意识,没有特别的注意到这里,都会认为 int、double、String 基本上都是经常使用的,都差不多,应该都属于基本数据类型。最后还会给自己打气(小声bb:恩是的没错!)。
那到底是不是这样呢?哎,等一等莫着急,且继续往下看,真相只有一个,且听正文详叙。
2、正文
数据这个词我们并不陌生,互联网中无时无刻不产生数据,只不过数据展示到计算机显示器上的表现形式都各不相同;例如:数字、文字、音频、视频等都是属于数据。
数据是一个抽象的概念,并且缺乏分类,不能表达明确事物的意义。
而数据类型则是程序设计语言用来描述不同事物的,不同的程序设计语言对应的数据类型都有所相同(大致分类相同),也有所不同(关键字不同)。
在 Java 中数据类型分为了内置数据类型和扩展数据类型两大类, 内置类型就是 Java 语言本身提供的基本数据类型,比如,整型数,浮点数,字符,布尔值等等。
而扩展类型则是 Java 语言根据基本类型扩展出的其他类型,Java 要求所有的扩展类型都必须包括在类定义里面,这也是 Java 被叫做面向对象编程语言的原因。
同时内置数据类型和扩展数据类型也会被称为基本数据类型和引用数据类型。
2.1、基本数据类型
Java 的基本数据类型有八种
「我的妈呀!这么多,我咋就知道三个呢!」,那个朋友说到。
我继续说道:「别吵,听我的,都听我的」。八种基本数据类型分别为:byte、short、int、long、float、double、char、boolean;好吧,再细化一下,大体上分为三类:数值型、字符型、布尔型。而数值型还可以分为整数和浮点数,整数包括:byte、short、int、long;浮点数包括:float、double。字符型包括:char。布尔型包括:boolean。这就是 Java 的基本数据类型,「朋友若有所思…」基本数据类型的存储原理是:基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面。
int intNum = 1;
double doubleNum = 1.11;
注意:
使用 f/F 后缀显式表示 float 类型;
使用 d/D 后缀显式使用 double 类型;
小数后边没有标明 f/F 则默认是 double 类型。
2.2、引用数据类型
Java 的引用数据类型有五种;其分别为:类、接口、枚举、注解、数组。
引用类型的底层结构和基本类型差别较大,主要是在创建对象上有所不同。
引用类型的数据创建对象时需要通过关键字 new 创建对象,创建的对象将会保存在堆中,然后将该对象赋值给一个引用,也就是这个引用将会指向该对象堆中的地址,而这个引用则存储在栈中。
下边以 Student 类为例展示引用类型的数据在内存中的存储原理:
Student student = new Student(1001,"looper");
3、总结
那么瞎 bb 了这么多,String 到底属于什么类型呢?
String str1 = "looper";
String str2 = new String("looper");
怎么基本数据类型和引用数据类型都涉及到了???
总的来说 Java 中规定了 String 不属于基本数据类型,只是代表一个类,属于引用类型
因为对象的默认值是 null,所以String的默认值也是 null。
但是怎么 String 也可不用 new 的形式来创建对象呢?
那是因为 Java 有字符串常量池机制
所以不用 new 关键字创建对象时,会在常量池中创建对象。
String 类也是一个比较特殊的类后边还会有详细的叙述。
欢迎各位讨论(老公你说句话啊!)
感谢支持与点赞!