`
lufeng4321
  • 浏览: 58043 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用JAVA中String的一些体会

    博客分类:
  • java
阅读更多
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.racky.string;

/**
*
* @author Racky
*/
public class StringTest {
    public static void main(String args[])
    {
        String s0="racky";
        String s1="racky";
        String s2="rac"+"ky";
        /**
         * s0,s1均为常量,在编译时就已经确定
         * 当一个字符穿为多个常量字符穿连接时,它自己也是常量,所以s2也是"racky"的一个引用
         **/
        System.out.println(s0==s1);
        System.out.println(s1==s2);//==比较地址是否相同,也就是是否是同一个字符串的引用
        System.out.println(s0.equals(s1));//equals比较unicode是否相同
        System.out.println(s1.equals(s2));
        System.out.println("******************************************************");
        String s3="racky";
        String s4=new String("racky");
        String s5="rac"+new String("ky");
        /**
         *用new String() 创建的字符串不是常量,不能在编译期就确定,
         * 所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间
         * s3为常量池中"racky"的引用,而s4,s5均不能在编译时确定
         * */
        System.out.println(s3==s4);
        System.out.println(s3==s5);
        System.out.println(s4==s5);
        System.out.println(s3.equals(s4));
        System.out.println(s3.equals(s5));
        System.out.println(s4.equals(s5));
        System.out.println("*******************************");

        /*
         * 存在于.class文件中的常量池,在运行期被JVM装载,
         * 并且可以扩充。String的intern()方法就是扩充常量池的一个方法
         * 当一个String实例str调用intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,
         * 如果有,则返回其的引用,如果没有,
         * 则在常量池中增加一个Unicode等于str的字符串并返回它的引用;
         * */
        s4.intern();
        s5=s5.intern();
        System.out.println(s3==s4);
        System.out.println(s3==s4.intern());
        System.out.println(s3==s5);
        System.out.println(s4==s5);
        System.out.println(s4.intern()==s5);
        /*
         * 关于String是不可变的
         * 这一说又要说很多,大家只要知道String的实例一旦生成就不会再改变了,
         * 比如说:String str=”kv”+”ill”+” “+”ans”;
         * 就是有4个字符串常量,首先”kv”和”ill”生成了”kvill”存在内存中,
         * 然后”kvill”又和” “ 生成 ”kvill “存在内存中,
         * 最后又和生成了”kvill ans”;并把这个字符串的地址赋给了str,
         * 就是因为String的“不可变”产生了很多临时变量,
         * 这也就是为什么建议用StringBuffer的原因了,因为StringBuffer是可改变的。
         * */
     }
}
分享到:
评论

相关推荐

    Java编程思想(完整版)

    在本章,我们将探讨Java程序的基本组件,并体会为什么说Java乃至Java程序内的一切都是对象。 2.1 用句柄操纵对象 2.2 必须创建所有对象: 创建句柄时,我们希望它同一个新对象连接。通常用new关键字达到这一目的。...

    AIC的Java课程1-6章

    第5 版 清华大学出版社  “SCJP学习指南” 人民邮电出版社  “Java 编程思想” 第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 ...

    JAVA万年历课程设计报告.doc

    课程设计体会 18 参考文献 19 前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发 现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。 1997年J2SE1.1...

    深入体会Ruby的String类型有哪些强项

    本文介绍了Ruby语言的String类型,并根据Ruby语言的特性与C#和Java做了深入比较。

    JAVA看不了string源码-java-skills::hot_springs:在此存储库中,您可以获得许多Java技能

    JAVA看不了string源码 The Skills of Java 绪论  在编程这条路上走的越久,我们遇到的事情就越多,磕磕绊绊在所难免,很多坑只有在踩过之后,我们才会越能体会到那种「啊,原来是这么回事儿」的恍然大悟之感,这种...

    Java计算器实验报告(1).doc

    编程过程中,总体设计主要是窗口与组件的应用,具体执行则 是利用Java语言设计算法,而难点也在算法的设计上。虽然程序大体上符合要求,但由 于第一次编写这么复杂的程序,程序仍然存在一- 些漏洞,譬如由于未进行...

    java数据类型的转换简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换

    一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...

    实战体会Java的多线程编程

    Runnable 接口 ... import java.util.*; class TimePrinter implements Runnable { int pauseTime; String name; public TimePrinter(int x, String n) { pauseTime = x; name = n; } public v

    IO流的使用,自己的心得

    String writeString = "testOutPut:1231"; int tempLength = 2; StringBuffer bs = new StringBuffer(); int each = 0; try { ops = new FileOutputStream(filePath); byte ...

    超爽的自学课件(java)

    在这一章中,大家将学习在Java中重复使用代码的这两种方法,以及具体如何运用。 <br>(7) 第7章:多形性 若由你自己来干,可能要花9个月的时间才能发现和理解多形性的问题,这一特性实际是OOP一个重要的基础。...

    Java程序设计实验报告.doc

    } } 实验结果: 实验心得体会: 掌握了java的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义 及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。 实验二 实验题目: 自定义一个矩形...

    Java课程设计报告-学生成绩管理.doc

    (2)主体部分:引言( 设计目的、任务与要求等)、正文、结果、项目开发中遇到的困难及解决、体会、参考 文献。 2.设计的内容 该学生系统应具备能记录并添加学生的姓名、成绩和学号的功能,并且按平均分来排 序输出...

    学生信息管理系统java课程设计(含源代码)(1).doc

    学生信息管理系统java课程设计(含源代码) JAVA程序设计 课程设计报告 课 题: 学生信息管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 目 录 一、系统描述 2 1、需要实现的功能 3 2、设计...

    java大作业设计报告-JAVA聊天室.doc

    图 5-1聊天室服务器代码布局 服务器将用户操作抽象为不同的工作类,在接收到请求后根据消息协议在当前实现的 工作类名列表中找到类名(通过下标在CommandList类中的List<String> commandsList属性中得到),通过...

    学生信息管理系统java课程设计报告含源代码.doc

    JAVA程序设计 课程设计报告 课 题: 学生信息管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 目 录 一、系统描述 2 1、需要实现的功能 3 2、设计目的 3 二、分析与设计 3 1、功能模块划分 3 ...

    编写一个判断回文数java应用程序。

    编写一个java应用程序。用户从键盘输入一个1-9999之间的数,程序将判断这个数是几位数,并判断这个数是否回文数。回文数是指将数含有的数字逆序排列后得到的数和原数相同,例如12121,4224,6778776等都是回文数。 ...

    java设计模式CatalogDAOFactory是典型的工厂方法

    那么,我们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的Factory拓展成抽象工厂: public abstract class Factory{  public abstract Sample creator();  ...

    计算机网络实验报告 获取MAC socket通信

    服务器端: ... import java.io.FileNotFoundException; import java.io.IOException; public class FileServer { ... public static void main(String[] args) { ...有源码和体会,写的很详细和完整。

    java 记事本课程设计带源码和文档

    6系统设计心得体会 13 7参考文献 13 1、系统需求分析 1.1系统名称: Window记事本 1.2系统介绍: 开发一个window记事本,主要有一个主界面及以下功能: 1:文件的新建,打开,...

    吉娃娃犬和主人亲近活动设计,用java开发吉娃娃驱虫接种方案代码.docx

    2. 互动游戏:为狗狗和主人准备一些互动游戏,比如抓球、追逐等等,让它们一起玩乐。 3. 犬医咨询:请专业的犬医为你的狗狗提供健康咨询,包括驱虫接种等方面的建议。 4. 社交时间:在活动结束后,为吉娃娃犬和主人...

Global site tag (gtag.js) - Google Analytics