is there any concept called \"Constant Folding\" in java? if yes what is it?
Yes, there is.
From this JavaWorld article (which you could've googled yourself!):
static final int length = 25;
static final int width = 10;
int res = length * width;
Execution time is not used to multiply those values; instead, multiplication is done at compile time. The code for the following variable assignment is modified to produce bytecode that represents the product of width and length:
int res = 250;