This week's book giveaway is in the Mac OS forum.
We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line!
See this thread for details.
The moose likes Java in General and the fly likes Final variables Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Java » Java in General
Bookmark "Final variables" Watch "Final variables" New topic

Final variables

Parinitha Paramesh

Joined: Jan 21, 2013
Posts: 5

I am a beginner to programming. I am currently preparing for SCJP 6 when I came across this code on final variables. Can anybody just help me out with this?

final int a = 1;
final int b;
b = 2;
int x = 0;
switch (x) {
case a: // OK
case b: // compiler error

When I tried this code, I got a compile error like this:

constant expression required for case b:

My doubt is if final variables can be initialized anytime(not necessarily at the time of the declaration of the variable), then why am I getting this error for variable b?
Thanks in advance.
Stephan van Hulst

Joined: Sep 20, 2010
Posts: 3647

Because switch cases require constant expressions, and final variables are not constant expressions unless they are initialized in the same line they're declared. It's just a language rule.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 39100
And welcome to the Ranch
Parinitha Paramesh

Joined: Jan 21, 2013
Posts: 5
Thanks Stephan van Hulst. Your answer really helped.
Parinitha Paramesh

Joined: Jan 21, 2013
Posts: 5
Thanks Campbell Ritchie. I'm hoping to get most of my doubts cleared through this portal as I'm a beginner to programming and I don't have much help around me to resolve my queries.
I agree. Here's the link:
subject: Final variables