Java Programming - Language Fundamentals - Discussion

Discussion Forum : Language Fundamentals - General Questions (Q.No. 9)
9.
Which three are valid declarations of a char?
  1. char c1 = 064770;
  2. char c2 = 'face';
  3. char c3 = 0xbeef;
  4. char c4 = \u0022;
  5. char c5 = '\iface';
  6. char c6 = '\uface';
1, 2, 4
1, 3, 6
3, 5
5 only
Answer: Option
Explanation:

(1), (3), and (6) are correct. char c1 = 064770; is an octal representation of the integer value 27128, which is legal because it fits into an unsigned 16-bit integer. char c3 = 0xbeef; is a hexadecimal representation of the integer value 48879, which fits into an unsigned 16-bit integer. char c6 = '\uface'; is a Unicode representation of a character.

char c2 = 'face'; is wrong because you can't put more than one character in a char literal. The only other acceptable char literal that can go between single quotes is a Unicode value, and Unicode literals must always start with a '\u'.

char c4 = \u0022; is wrong because the single quotes are missing.

char c5 = '\iface'; is wrong because it appears to be a Unicode representation (notice the backslash), but starts with '\i' rather than '\u'.

Discussion:
24 comments Page 1 of 3.

Swetha said:   4 weeks ago
How can a char variable carry integer value? Anyone, please explain.

Aditya Sharma Bussooa said:   3 months ago
064770 is octal, but it's outside the valid range for char (greater than 65535).

So, 1 is not valid.

Shreya said:   6 years ago
I think its option 1 and 2. You can initialize an integer directly in a char as it represents a number in hexadecimal form. And 2 is correct too as in single quotes we can initialize any character.
(1)

Niharika patidar said:   6 years ago
064770 is an octal representation of the integer value of 27128 then how can we store it in char literal?
(1)

Imsurya said:   9 years ago
Anyone can explain about these two differences?

char c5 = '\iface'; //illegal
char c6 = '\uface'; //legal
(2)

Shahnaz said:   1 decade ago
Can anyone say how c3 is correct? Anyone explain this?

Aruni Mishra said:   1 decade ago
A char literal is represented by a single character in single quotes.

char a = 'a';
char b = '@';

You can also type in the Unicode value of the character, using the Unicode.

Notation of prefixing the value with \u as follows:

char letterN = '\u004E'; // The letter 'N'.

Remember, characters are just 16-bit unsigned integers under the hood. That means you can assign a number literal, assuming it will fit into the unsigned 16-bit range (65535 or less). For example, the following are all legal:

char a = 0x892; // hexadecimal literal.
char b = 982; // int literal.
char c = (char) 70000; // The cast is required; 70000 is out of char range.
char d = (char) -98; // Ridiculous, but legal.

And the following are not legal and produce compiler errors:

char e = -29; // Possible loss of precision; needs a cast.
char f = 70000 // Possible loss of precision; needs a cast.

You can also use an escape code if you want to represent a character that can't be. Typed in as a literal, including the characters for linefeed, newline, horizontal tab, Backspace, and single quotes.

char c = '\"'; // A double quote.
char d = '\n'; // A newline.
(1)

Stanley said:   1 decade ago
How to its possible for 6th one?

Saurabh Vishwakarma said:   1 decade ago
Java doesn't support unsigned integer. char c1 = 064770; should give an error.

Kalyani said:   1 decade ago
What are the differences between NULL, ' ', '\b' and '\0'?


Post your comments here:

Your comments will be displayed after verification.