First, if you do any lengthy calculations, make sure to use an int. If you use shorts, it will be slow because Java will convert all of them to ints.
Indeed, a colleague (actually, my dad - nepotism ftw
) recently did some benchmarks of some intensive number-crunching in c# to see what difference various basic tweaks would make. It was basically synthesising a load of sin waves at audio rate via totally straightforward calls to Math.sin() IIRC. Doing processing with floats rather than doubles had a significant impact; significantly slower with floats! I can't remember how big the difference was, and I wouldn't rate the precision of the benchmark anyway, but it was enough to be quite clearly significant.
edit: it's just occurred to me that if it was indeed calling Math.sin(), that's fairly obviously the cause of the slowness given that it uses doubles, requiring lots of casts in the float case. Now I feel like I've brought shame on my whole family... shucks. I suppose the point that casts are costly, which was already made by Intuit, is the real point.