The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Question from Jaworski mock exam Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Professional Certification » Programmer Certification (SCJP/OCPJP)
Reply Bookmark "Question from Jaworski mock exam" Watch "Question from Jaworski mock exam" New topic
Author

Question from Jaworski mock exam

Matt DeLacey
Ranch Hand

Joined: Oct 12, 2000
Posts: 318
I was just taking the Jaworski mok exam and I keep having this problem. There is this one question where you are writing the string "test" out to a file. It asks you how many bytes are written. The answer is 4 bytes. How do you get that?! Seems to me since a char is 2 bytes and there are 4 chars, wouldn't it be 8? This question keeps bugging me.
Matt
poorna k
Greenhorn

Joined: Oct 16, 2000
Posts: 7
I dont know what the exact question is,but it depends on whether you are using a byte stream or character oriented stream.
If you use one of the byte streams classes, the output is written as bytes and the write() method takes a int as argument for byte streams.
so if "test" were written to a file using a bytestream class,4 bytes would be needed
Matt DeLacey
Ranch Hand

Joined: Oct 12, 2000
Posts: 318
in fact, it WAS a byte stream, but could you explain to me HOW exactly you can write 4 chars in 4 bytes? This confuses me.
Matt
P.S. Thanks for your help.
poorna k
Greenhorn

Joined: Oct 16, 2000
Posts: 7
as per the API the write(int b) method of InputStream class
"Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored. "
The subclasses of InputStream /OutputStream write to the stream as bytes.
A character is stored as 16 bits in Unicode character set.All
the characters in the ASCII character set are represented as a subset in the Unicode character set convention by ignoring the first 8 significant bits in the Unicode representation.
In the ascii convention,characters can be represented as integers also,
e.g the character 'A' can be represented as 065 in decimal
Since automatic type promotion is allowed in java from char to int,your write() method would convert the char argument to int,and as per the above quote, write only the 8 low-order bits to the stream
coming back to your qn when you invoke
write('t'),
't' can be represented as 116 in decimal.so type promotion occurs from char to int.116 can be represented within the lower order 8 bits,and the 8 high
-order bits are zeros.So you will not
be losing any information from the high-order bits.
If you use other characters from the unicode character set(e.g characters from other languages such as spanish)
you would need to use the subclasses of Reader / Writer ,so that all the 16 bits can be output to the stream
I hope this is clear.
[This message has been edited by poorna k (edited October 18, 2000).]
[This message has been edited by poorna k (edited October 18, 2000).]
 
 
subject: Question from Jaworski mock exam
 
Threads others viewed
how many bytes in char
To Ranch With Love
I/O, Applets and GBLayout
Comparison...
Passed 92%
IntelliJ Java IDE

cast iron skillet 49er

more from paul wheaton's glorious empire of web junk: cast iron skillet diatomaceous earth rocket mass heater sepp holzer raised garden beds raising chickens lawn care CFL flea control missoula heat permaculture