初心者は作ったプログラムが動く喜びを知ったほうがいいと思うので『創るJava 第3版』を勧める
金銭的に余裕があるならProcessingという言語の適当な入門書(ジェネラティブ・アートなど)を見繕って
このへんで人の書いたコードをいじって遊んでみるのもいい
http://www.openprocessing.org/
ProcessingはJavaの上に乗っかっているお遊び言語。Javaに近い書き方ですぐに動くアプリが作れる
ただしこれらを読んだところで自分が頭に思い描いたアプリが作れるようになるということは絶対にありえない

実際のところ完全初心者がいきなりJavaから習得しようとするのは挫折率9割超の茨の道
時間等が許すならば言語からいきなり習得しようとせずに
まず適当な大学等のシラバスを参照しながら参考書を買うなり図書館で借りるなりして
計算機科学の基礎をじっくりと勉強することを強く勧める

あとプログラミング能力は筋力と同じで毎日書かなければすぐに衰える
特に初心者は一日サボるだけで忘れる。全然書けなくなる
AOJ(高校プロコン過去問)やTopCoder(Div2 SRM250)などの簡単な問題を毎日解いてコーディング能力を鍛えるべき
いわゆる蟻本やチーター本、世界で闘うプログラミング力〜のような本は手元に置いておいて損はない
以上はアプリを作る役には立たないが、自分で考えて書けるようになるためには必須

多分普通にJava開発者に聞くと入門書読んでからEffective Javaやオブジェクト指向やアルゴリズムやデザパタ本読んで〜みたいな事言われると思うけど
アンチョコで文法うろ覚え、なんとなく分かった気になってもコード書けなければ全く意味が無いので
とにかく初めのうちは練習問題を解くべき
>>219の人という前提で答えたけどAndroidの開発情報は
ここに書かれたことやって(特に第3段落)ある程度脳に配線通った状態なら
情報の取捨能力も普通に身についてるしググればすぐに見つかるようになる