Intelligent Coding Assistance

IntelliJ IDEA brings you an advanced Java editor that lets you code as fast as you think. Intelligent coding assistance features save your time and spare you from tedious routine, keeping your focus on the code, not its syntax. We designed all this goodness for you - check it out!

Instant Completion

Code completion is auto-invoked instantly as you type. No need to press Ctrl-Space — makes coding faster for all supported languages.
Code faster with instant autocompletion popup

Built-in Spell Checker

A built-in spell checker verifies comments, literals and identifiers in your code.

Smart Java Code Completion

Ctrl+Shift+Space invokes the smart Java code completion, which analyzes the context you are currently working with and prepares the list of choices for:

  • The right side of assignment when an expression type can be determined
  • Constructor parameters
  • Abstract class and interface inheritors when declaring new on an abstract class or interface

In short, the Smart Java Code Completion works anywhere where IntelliJ IDEA can guess the expected expression type.

Class Name Completion

With Ctrl+Alt+Space you can complete the class and interface names. IntelliJ IDEA shows all available class names and automatically imports the selected class, if necessary.

Chained Java Code Completion

An improved version of Smart Code Completion: pressing Ctrl-Shift-Space twice looks up values of the expected type which can be retrieved through a chained method call.

This feature is also capable of auto-inserting conversions from collections to arrays and vice-versa.

Super Completion

Another improvement of Smart Code Completion lets you fill in several parameters at once (with single shortcut: Ctrl-Shift-Space).

Popup Parameter Info

A popup, showing all the possible method parameters and their combinations is open after you either type an opening ( in a method call, or position caret inside of ( ) and press Ctrl+P.

IntelliJ IDEA bolds the parameter at caret position and lets you jump between them with Tab/Shift+Tab. Moreover, you can use the Settings dialog to configure the automatic parameter popup display.

Extend/Shrink Selection

IntelliJ IDEA lets you quickly select expressions with Ctrl+W shortcut. By repeatedly pressing it, you can select the symbol at caret, then the closest expression that involves it, then the surrounding code block, and so on.

In this example, pressing Ctrl+W several times selects:

  1. getNamedItem
  2. olmaps.item(i).attributes.getNamedItem
  3. "//topic[@legacyid='" + olmaps.item(i).attributes.getNamedItem('target').nodeTypedValue
  4. The entire portedMap declaration
  5. The entire for statement

Pressing Ctrl+Shift+W collapses the selection back from broader to narrower scope.

You can also use this feature whenever you need to quickly align an existing selection to surrounding expression boundaries.

Auto-Import and Imports Optimization

IntelliJ IDEA automatically inserts import statements while you are typing, and detects non-imported classes found in pasted blocks of code. When a class is found, that has not yet been imported, IntelliJ IDEA displays a hint and allows you to quickly insert the required statement with Alt+Enter.

Pressing Ctrl+Alt+O allows you to quickly optimize the imports by grouping similar classes to a package level import, and removing the imports that are not used in the file. You can select whether this action affects only the selected file, or all files in the current folder.

You can use the Settings dialog to configure Add unambiguous imports on the fly and Optimize imports on the fly options and so let IntelliJ IDEA automatically handle the imports without your intervention.

Various Intention Actions

IntelliJ IDEA includes a lot of Intention Actions — commands that help you quickly carry out various coding tasks, like generating missing code, transforming the existing code and so on.

When an Intention Action is available, IntelliJ IDEA displays a bulb icon, indicating that you can press Alt+Enter to see the list of available actions.

In this example we're using an Intention Action that generates the declaration of method from its usage.

to the top