Java千百问_06数据结构(007)_String属于基本数据类型吗-阿里云开发者社区

开发者社区> 开发与运维> 正文

Java千百问_06数据结构(007)_String属于基本数据类型吗

简介:

1、String属于基本数据类型吗

首先要明确的是,在Java中,String不是基本数据类型,它继承于Object,是一个jdk提供的字符串类。 
了解基本数据类型看这里:java有哪8种基本数据类型2 
但是,String和其他对象相比,jdk做了很多特殊的处理。体现在如下几个方面:

  • String可以通过new构造对象,也可以直接赋值。例如:
String str = new String( "abc" );//第一种
String str = "abc" ;//第二种



  • 第一种用new()来新建对象,它会在存放于中,每调用一次就会创建一个新的对象。 
    第二种是先在中创建一个对String类的对象引用变量str,然后查找栈中有没有存放”abc”,如果没有,则将”abc”存放进栈,并令str指 向”abc”,如果已经有”abc” 则直接令str指向”abc”。 
    了解java内存堆栈看这里:

  • 第二种方式(String str1 =”abc”)创建多个”abc”字符串,在内存中其实只存在一个对象而已。这种方式节省内存空间,同时它可以在一定程度上提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。 
    而对于String str = new String(“abc”)的代码,则一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担

  • 比较类里面的数值是否相等时,用equals()方法;当比较两个引用变量是否指向同一个对象时,用==(可以理解为比较逻辑地址,实际是比较对象号)。 例如:

String str1 = "abc" ;
String str2 = "abc" ;
System.out.println(str1==str2); 


运行结果: 
true

可以看出str1和str2是栈中对象。

String str1 = new String ( "abc" );
String str2 = new String ( "abc" );
System.out.println(str1==str2); 



运行结果: 
false

了解String更多看这里:

原文地址:http://blog.csdn.net/ooppookid/article/details/51335389







版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章