d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > [java] Small Stringbuffer And Append Question !
Add Reply New Topic New Poll
Member
Posts: 12,938
Joined: May 10 2009
Gold: 0.00
Warn: 10%
Feb 28 2013 05:56pm
So I want to do a simple toString() method in one of my class, however it looks like there's error when I run it and it also tells me to use a StringBuilder instead of Buffer ? What's the difference ?
Oh and I think I could use the concat() option instead of append() but it doesn't show up ... ?

Code :

Code
@Override
   public String toString() {
       StringBuffer printJobString = new StringBuffer();
       printJobString.append("Print Job ID : " + jobID + " = ");
       for (int i = 0; i <= printJob.length; i++) {
           printJobString.append("Print Job Name : " + printJob[i].getFileName() + " | File Path : " + printJob[i].getFilePath() + " | File Size : " + printJob[i].getFileSize() + " kB");
       }
       return "It failed mofo.";
   }


Errors :

Code
at edu.colval.javase.spooler.model.PrintJob.toString(PrintJob.java:52)
at edu.colval.javase.spooler.control.PrintManager.main(PrintManager.java:66)
Member
Posts: 4,688
Joined: Jun 20 2009
Gold: 12,590.00
Feb 28 2013 06:02pm
Why are you even using stringbuffer and printjobstring append?
Member
Posts: 12,938
Joined: May 10 2009
Gold: 0.00
Warn: 10%
Feb 28 2013 06:04pm
Quote (crazykfkid @ Feb 28 2013 08:02pm)
Why are you even using stringbuffer and printjobstring append?


I don't know, looks like I'm doing thing blindly now.
Here's a my re-worked code :

Code
@Override
   public String toString() {
       String printJobString;
       StringBuilder printJobStringBuilder = new StringBuilder();
       printJobString = printJobStringBuilder.append("Print Job ID : ").append(jobID).append(" = ").toString();
       for (int i = 0; i <= printJob.length; i++) {
           printJobString += printJobStringBuilder.append("Print Job Name : ").append(printJob[i].getFileName()).append(" | File Path : ").append(printJob[i].getFilePath()).append(" | File Size : ").append(printJob[i].getFileSize()).append(" kB");
       }
       return printJobString;
   }
Member
Posts: 32,925
Joined: Jul 23 2006
Gold: 3,804.50
Feb 28 2013 06:28pm
Quote
Code
at edu.colval.javase.spooler.model.PrintJob.toString(PrintJob.java:52)
at edu.colval.javase.spooler.control.PrintManager.main(PrintManager.java:66)


You should tell us what the exception is too....

Quote (Infernaldeath @ Feb 28 2013 07:04pm)
I don't know, looks like I'm doing thing blindly now.
Here's a my re-worked code :

Code
@Override
   public String toString() {
       String printJobString;
       StringBuilder printJobStringBuilder = new StringBuilder();
       printJobString = printJobStringBuilder.append("Print Job ID : ").append(jobID).append(" = ").toString();
       for (int i = 0; i <= printJob.length; i++) {
           printJobString += printJobStringBuilder.append("Print Job Name : ").append(printJob[i].getFileName()).append(" | File Path : ").append(printJob[i].getFilePath()).append(" | File Size : ").append(printJob[i].getFileSize()).append(" kB");
       }
       return printJobString;
   }


use more than one line dude. that's so hard to read. and there's no reason to have a string += that if you have a string builder. you just remove any performance gain.

Code
@Override
   public String toString() {
       StringBuilder sb = new StringBuilder("");
       sb.append("Print Job ID : ");
       sb.append(jobID);

       for (PrintJob pj : printJob) {
           sb.append("Print Job Name : ");
           sb.append(pj.getFileName());
           sb.append(" | File Path : ");
           sb.append(pj.getFilePath());
           sb.append(" | File Size : ");
           sb.append(pj.getFileSize());
           sb.append(" kB\n");
       }
       return sb.toString();
   }



difference between stringbuilder and stringbuffer is performance. one of them is faster, the other is threadsafe.

This post was edited by carteblanche on Feb 28 2013 06:32pm
Go Back To Programming & Development Topic List
Add Reply New Topic New Poll