知识大全 JAVA中toString方法的作用

Posted

篇首语:别裁伪体亲风雅,转益多师是汝师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA中toString方法的作用相关的知识,希望对你有一定的参考价值。

JAVA中toString方法的作用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

以下是对在JAVA中toString方法的作用进行了详细的分析介绍 需要的朋友可以参考下  

  因为它是Object里面已经有了的方法 而所有类都是继承Object 所以“所有对象都有这个方法” 它通常只是为了方便输出 比如System out println(xx) 括号里面的“xx”如果不是String类型的话 就自动调用xx的toString()方法 总而言之 它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法   回答补充 写这个方法的用途就是为了方便操作 所以在文件操作里面可用可不用 例子

复制代码 代码如下: public class Orc        public static class A                      public String toString()                                    return "this is A";                             public static void main(String[] args)                      A obj = new A();               System out println(obj);       

   如果某个方法里面有如下句子 A obj=new A(); System out println(obj); 会得到输出:this is A 例子

复制代码 代码如下: public class Orc        public static class A                      public String getString()                                    return "this is A";                             public static void main(String[] args)                      A obj = new A();               System out println(obj);               System out println(obj getString());       

   会得到输出:xxxx@xxxxxxx的类名加地址形式 System out println(obj getString()); 会得到输出:this is A 看出区别了吗 toString的好处是在碰到“println”之类的输出方法时会自动调用 不用显式打出来

复制代码 代码如下: public class Zhang        public static void main(String[] args)                      StringBuffer MyStrBuff = new StringBuffer();               MyStrBuff append("Hello Guys!");               System out println(MyStrBuff toString());               MyStrBuff insert( );               System out println(MyStrBuff toString());       

   值得注意的是 若希望将StringBuffer在屏幕上显示出来 则必须首先调用toString方法把它变成字符串常量 因为PrintStream的方法println()不接受StringBuffer类型的参数

复制代码 代码如下: public class Zhang     public static void main(String[] args)             String MyStr = new StringBuffer();         MyStr = new StringBuffer() append(MyStr) append(" Guys!") toString();         System out println(MyStr);           

   toString()方法在此的作用是将StringBuffer类型转换为String类型

复制代码 代码如下: public class Zhang     public static void main(String[] args)             String MyStr = new StringBuffer() append("hello") toString();         MyStr = new StringBuffer() append(MyStr) append(" Guys!") toString();         System out println(MyStr);           

  

  关于String StringBuffer的性能

  通过使用一些辅助性工具来找到程序中的瓶颈 然后就可以对瓶颈部分的代码进行优化 一般有两种方案 即优化代码或更改设计方法 我们一般会选择后者 因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能 而一个设计良好的程序能够精简代码 从而提高性能

  下面将提供一些在JAVA程序的设计和编码中 为了能够提高JAVA程序的性能 而经常采用的一些方法和技巧

   .对象的生成和大小的调整

  JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数 从而常常会生成大量的对象(或实例) 由于系统不仅要花时间生成对象 以后可能还需花时间对这些对象进行垃圾回收和处理 因此 生成过多的对象将会给程序的性能带来很大的影响

  例 关于String StringBuffer +和append

  JAVA语言提供了对于String类型变量的操作 但如果使用不当 会给程序的性能带来影响 如下面的语句

   String name=new String("HuangWeiFeng");

  System out println(name+"is my name");

  看似已经很精简了 其实并非如此 为了生成二进制的代码 要进行如下的步骤和操作

  ( ) 生成新的字符串 new String(STR_ );

  ( ) 复制该字符串;

  ( ) 加载字符串常量"HuangWeiFeng"(STR_ );

  ( ) 调用字符串的构架器(Constructor);

  ( ) 保存该字符串到数组中(从位置 开始);

  ( ) 从java io PrintStream类中得到静态的out变量;

  ( ) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_ );

  ( ) 复制该字符串缓冲变量;

  ( ) 调用字符串缓冲的构架器(Constructor);

  ( ) 保存该字符串缓冲到数组中(从位置 开始);

  ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)类中的append方法;

  ( ) 加载字符串常量"is my name"(STR_ );

  ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)类中的append方法;

  ( ) 对于STR_BUF_ 执行toString命令;

  ( ) 调用out变量中的println方法 输出结果

  由此可以看出 这两行简单的代码 就生成了STR_ STR_ STR_ STR_ 和STR_BUF_ 五个对象变量 这些生成的类的实例一般都存放在堆中 堆要对所有类的超类 类的实例进行初始化 同时还要调用类极其每个超类的构架器 而这些操作都是非常消耗系统资源的 因此 对对象的生成进行限制 是完全有必要的

  经修改 上面的代码可以用如下的代码来替换

  StringBuffer name=new StringBuffer("HuangWeiFeng");

  System out println(name append("is my name ") toString());

   系统将进行如下的操作

  ( ) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_ );

  ( ) 复制该字符串缓冲变量;

  ( ) 加载字符串常量"HuangWeiFeng"(STR_ );

  ( ) 调用字符串缓冲的构架器(Constructor);

  ( ) 保存该字符串缓冲到数组中(从位置 开始);

  ( ) 从java io PrintStream类中得到静态的out变量;

  ( ) 加载STR_BUF_ ;

  ( ) 加载字符串常量"is my name"(STR_ );

  ( ) 以STR_ 为参数 调用字符串缓冲(StringBuffer)实例中的append方法;

  ( ) 对于STR_BUF_ 执行toString命令(STR_ );

  ( )调用out变量中的println方法 输出结果

  由此可以看出 经过改进后的代码只生成了四个对象变量 STR_ STR_ STR_ 和STR_BUF_ 你可能觉得少生成一个对象不会对程序的性能有很大的提高 但下面的代码段 的执行速度将是代码段 的 倍 因为代码段 生成了八个对象 而代码段 只生成了四个对象

  代码段

  String name= new StringBuffer("HuangWeiFeng");

  name+="is my";

  name+="name";

  代码段

  StringBuffer name=new StringBuffer("HuangWeiFeng");

  name append("is my");

  name append("name ") toString();

cha138/Article/program/Java/JSP/201311/20542

相关参考

知识大全 Datetime.Tostring用法

Datetime.Tostring用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DateT

知识大全 asp.net ToString()格式汇总

asp.netToString()格式汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C  

知识大全 浅析Java内部类在GUI设计中的作用(1)

浅析Java内部类在GUI设计中的作用(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于

知识大全 浅析Java内部类在GUI设计中的作用(2)

浅析Java内部类在GUI设计中的作用(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四方

知识大全 高级java工程师-------hibernate的作用和关键点

  一在ssh框架中hibernate的作用是什么呢?  hibernate是一种ORM(对象映射)框架的持久性框架它是对JDBC做了轻量级的封装使得程序员可以面向对象思维的对数据库进行操作  支持各

知识大全 java项目流程怎么控制

java项目流程怎么控制1、块作用域语句(复合语句)即用一对花括号将若干语句括起来,目的是从语法上将多条语句解释为一条语句。这里要注意一点,java语言中块作用域语句可以嵌套,但不可以在嵌套的两层中声

知识大全 Java开源项目Hibernate包作用详解

Java开源项目Hibernate包作用详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hi

知识大全 Java 线程缺陷和副作用的解决办法(1)

Java线程缺陷和副作用的解决办法(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  sync

知识大全 Java 线程缺陷和副作用的解决办法(2)

Java线程缺陷和副作用的解决办法(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  表A:演

知识大全 戏说java web开发中的listener和filter

  今天在公司看到有同事在写filter晚上一个人在家无聊就想聊聊这个东西  jsp开发中的监听器和过滤器这两个东西要说起来很大很繁今天我想用一个现实的例子来说明这两个东东的作用  案例描述  假设你