码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-07 08:47:36      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

点击进入_更多_Java千百问

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更多看这里:

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!