`

string类

    博客分类:
  • java
 
阅读更多
1、考查"=="的结果

2、String的intern()函数的返回值

java 代码
1.package com.test;   
2.  
3.public class StringTest {   
4.  
5.    public static void main(String[] args)   
6.    {   
7.        //有关字符串new 的解释:new String("abc"),首先会在String pool中查找值为"abc"的字符串,如果没有找到,则将在String pool中创建一个对象,然后在String堆中创建一个对象,此时,共产生了两个对象,分别指向不同的内存地址(String pool 和 String 堆)   
8.        //如果在String pool中找到有"abc"这个值存在,则不会再在String pool中创建对象,而只在String堆中创建对象   
9.        //此时s指向的是String堆中的对象,也就是String堆中的值为"abc"的对象的引用,s的值也就是String堆中的值为"abc"的对象的内存地址   
10.        String s = new String("abc");   
11.           
12.        //s1指向的是String pool中值为"abc"的对象,s1的值也就是String pool中的值为"abc"的对象的内存地址   
13.        //此时因为String pool中值为"abc"的对象已经在上面的String s = new String("abc");步骤中被创建了,所以此时并没有创建对象   
14.        String s1 = "abc";   
15.           
16.        //s2指向的是在String堆中新创建的值为"abc"的对象   
17.        //此时也就创建了一个对象(String堆中的值为"abc"的对象,因为String pool中值为"abc"的对象已经在上面的String s = new String("abc");步骤中被创建了)   
18.        String s2 = new String("abc");   
19.           
20.           
21.        //==比较的永远是两个对象的内存地址   
22.        //s、s1、s2都指向的是不同的内存地址对应的对象   
23.        System.out.println(s == s1);//false   
24.        System.out.println(s == s2);//false   
25.        System.out.println(s1 == s2);//false   
26.           
27.           
28.        //String的intern()函数返回的是String pool中对应的对象   
29.        //s.intern()返回的是String pool中值为"abc"的对象,而s是指向String堆中的值为"abc"的对象,所以他们的内存地址肯定不同   
30.        System.out.println(s == s.intern());//false   
31.        System.out.println(s1 == s1.intern());//true   
32.        System.out.println(s.intern() == s2.intern());//true   
33.           
34.        String hello = "hello";   
35.        String hel = "hel";   
36.        String lo = "lo";   
37.           
38.        //原型字符串用"+"连接,过程是:字符串连接后("hello"),再去String pool中查找   
39.        System.out.println(hello == "hel" + "lo");//true   
40.        //原型字符串与字符串对象用"+"连接,过程是:字符串连接后("hello"),在String堆中创建一个新的对象,用于存放这个字符串   
41.        System.out.println(hello == "hel" + lo);//false   
42.           
43.    }   
44.} 
分享到:
评论

相关推荐

    c++作业设计string类

    设计string类 要求: 1、为该类定义构造函数,析构函数和赋值操作。构造函数至少应有三个:无参构造函数、C风格字符串构造函数和复制构造函数 2、为string类提供必要的成员函数,可以参考C++类库的string类提供了...

    C++ String 类常用成员函数汇总

    C++ String 类常用成员函数汇总 C++ 的 String 类提供了多种成员函数来操作字符串,这些成员函数可以分为构造函数、字符操作、特性描述、输入输出操作和赋值五大类。 首先,String 类的构造函数有多种重载版本,...

    string 类及所有的方法(c++)

    string类 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)...

    java基础String类选择题练习题

    java基础String类选择题练习题,文档包含了答案与分析,适合学习用,本文档仅仅用于学习分享,不得用于商业用途

    Educoder题目:Java面向对象 - String类答案解析.md

    Educoder题目:Java面向对象 - String类答案解析

    C++重写String类

    C++重写String类C++重写String类C++重写String类C++重写String类

    C++ String类实现

    C++实现的String类,可以支持UTF-8编码

    String类的完整实现包括

    *String类中包括以下函数:* *默认构造函数,带参数构造函数 , 拷贝构造函数 *取字符串函数GetString(),取字符串长度函数GetLength(),查找字串位置函数Find() *重载,>>,[],=,+,> *析构函数 *String类中包括2个...

    设计string类

    2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得字符串长度、字符串比较这几个函数 3、利用该string类完成测试程序:统计一...

    string类的构造方法_String类重要吗_C++_STL_string_

    C++ stl中重要容器string类的构造方法与基本概念和一些有用的字符串操作

    C++string类仿写

    C++编写的类似于string类,自己改动实现相关库函数功能 C++的一般编译器都定义和封装了字符串功能,请模仿定义string类的实现,可以实现并支持如下功能: (1)string s = “rubbish大学”; (2)string t = s; ...

    string类讲解文档

    该文档讲解了C++string类的各项函数,讲解详细,内容充实且举例较多

    C++语言string类的实现 完整源代码 pdf

    C++语言string类的实现 完整源代码 pdf

    c++自定义string类

    自定义String类 构造函数 拷贝构造 =运算符重载 +运算符重载 运算符重载 等 等

    string类常用函数

    string类常用函数 包括各种方法 c++ c语言

    Object,String类练习.doc

    Object,String类练习.doc

    介绍java中String类的方法

    介绍java中String类的方法,String类实例的创造

    Java程序设计基础:String类的常用方法(一.pptx

    String类的常用方法(一) 目录 课程导入 掌握获取字符串长度的方法 掌握字符串连接、截取子串的方法 方法定义:public int length() 获取字符串的长度 例如: String message = “Welcome to Java”; System.out....

    JAVA 中string类的运用

    Java中String类和常用方法 实例化String对象

    String类的intern、split方法

    java中String类的intern、split方法的详细讲解。

Global site tag (gtag.js) - Google Analytics