String是否是基本数据类型?

失落夏天
Android领域优质创作者
博客专家认证
2013-05-07 12:11:35
今天突发奇想,不知道怎么的就想到了String是否是基本数据类型这个概念上了。。
在我的印象中,String是基本数据类型,但是百度了一下,很多说String是一个对象,而不是基本数据类型。
这样就产生了一个问题,如果一个方法传入一个String类型,外面的String类型的值是不会变的,而这属于基本数据类型的特性吧?
求高手详细解答下。
...全文
2583 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
muzi1314_ 2015-09-14
  • 打赏
  • 举报
回复
一个类型引发的xxxxxxx
失落夏天 2013-06-06
  • 打赏
  • 举报
回复
不是基本数据类型。。。
我确信了。
ObertShen 2013-05-10
  • 打赏
  • 举报
回复
不是基本数据类型,是一个类.......
sxnbo 2013-05-10
  • 打赏
  • 举报
回复
不是 java基础类型就是 整型,实型,布尔型,字符型四类
oh_Maxy 2013-05-09
  • 打赏
  • 举报
回复
引用 26 楼 xinyundeqiang 的回复:
不是,基本类型只有四类八种 整型 :int long 浮点 :double float 字符 :char 布尔 :boolean
数来数去,只有6种。。。
xianwangkai 2013-05-09
  • 打赏
  • 举报
回复
应该不是基本类型,是类,引用类型。
q592281095 2013-05-09
  • 打赏
  • 举报
回复
我在想是不是把String当参数的话。穿进去的是String的副本。即内部通过clone复制一个副本传进去。
张某码 2013-05-09
  • 打赏
  • 举报
回复
Technically String is not a wrapper class,because there is no corresponding primitive type 是最近在hao to Think like a computer scientist 中看到了这能不能说明他不是基本类型呢?
光明矢 2013-05-09
  • 打赏
  • 举报
回复
java是面向对象的语言。所以,java希望所有东西都是对象。但是将八种基本类型只设计为对象类型是不合适的。所以,才会有八种基本数据类型独立于对象类型之外。但是做为面向对象的语言,java也给出了基本类型对应的包装类。而String显然是对象类型。因为String类是final的,所以是断子绝孙的这么个东西。你也可以写属于自己的String工具类啊。
树成 2013-05-08
  • 打赏
  • 举报
回复
引用 11 楼 fei1710 的回复:
基本类型应该是cpu直接支持的这种类型吧
这样说的话long就有可能不是基本数据类型了,在32位cpu下,在一个时间片段内不能处理64位的long。
hatom 2013-05-08
  • 打赏
  • 举报
回复
我认为可以这样理解。String 不是基本数据类型。它是一个对象,它是有属性和方法的。平常对字符的操作比较多。像int 它是基本数据类型,但是你能说Integer是基本数据类型吗?Integer是一个封装类。它是一个类,也可以说是一个对象。就像String一样,也是一个对象,也是一个类,它是有属性和方法的。不知道我这样说对否?
BadPattern 2013-05-08
  • 打赏
  • 举报
回复
搬出Java虚拟机规范的描述: The primitive data types supported by the Java Virtual Machine are the numeric types, the boolean type (§2.3.4), and the returnAddress type (§2.3.3). The numeric types consist of the integral types (§2.3.1) and the floating-point types (§2.3.2). 因此基本数据类型就是: integral types , floating-point types , boolean type 和returnAddress type 至于有些脑残的面试官要是问为什么String不是基本数据类型,就搬这句话出来吧。。。
朗晴 2013-05-08
  • 打赏
  • 举报
回复
不是基本数据类型
齐岳 2013-05-08
  • 打赏
  • 举报
回复
String不是基本数据类型 8大基础类型 byte,short,int,long,float,double,char,boolean String 是个对象,是引用类型 基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构 基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为 java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer类。
BadPattern 2013-05-08
  • 打赏
  • 举报
回复
我自己对"基本数据类型"的定义是这样的哦: 内存中一段连续的字节数据,根据不同的数据类型可以用数字或某个符号来解释其含义。 像long,double,int,boolean这些啊,可以简单的解释成某个数字。 而String这样的类型,包含了很多其他额外的信息,如方法区信息,类型修饰符,继承信息等,这些都是面向对象中的概念,也是将"基本数据类型"组合而成的一些概念,所以这里像上面所说的"原生类型","组合类型"感觉更恰当些。 如果说c语言中的char* 字符串是基本类型那还说的过去,java中的就算了
  • 打赏
  • 举报
回复
书上面写的String是引用数据类型...
fei1710 2013-05-08
  • 打赏
  • 举报
回复
引用 21 楼 spiniper 的回复:
[quote=引用 11 楼 fei1710 的回复:] 基本类型应该是cpu直接支持的这种类型吧
这样说的话long就有可能不是基本数据类型了,在32位cpu下,在一个时间片段内不能处理64位的long。 [/quote] 搞笑,你以为怎么计算long型的呢?
五哥 2013-05-08
  • 打赏
  • 举报
回复
final class
_VV_ 2013-05-08
  • 打赏
  • 举报
回复
如果一个方法传入一个String类型是不变的,而Stringbuffer是会变的。。。
  • 打赏
  • 举报
回复
基本数据类型只有那么8种而已: byte,short,int,long,float,double,char,boolean 而你所说的“如果一个方法传入一个String类型,外面的String类型的值是不会变的,而这 属于基本数据类型的特性吧?”这个问题,那是因为String类型是jdk中的一个不可变类,也 就是无论你怎么去虐待它,它依旧是当初的那个样子,给它剪头发也不行,这就是不可变类型 的彪悍所在
加载更多回复(19)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧