Learn Java for Android Development: Java Shorthand

Learn Java for Android Development: Java Shorthand

Tutorial Details
  • Estimated Completion Time: 20 Minutes
  • Difficulty: Beginner
  • Technology: Java + Android SDK
This entry is part 13 of 13 in the series Learn Java for Android Development

These quick tips discuss some of the most common Java shorthand techniques you’ll come across when you’re getting started in Android development.

You’ll find these little code tidbits—which we are calling Java shorthand—used in the Android SDK sample code, and just about every Android development book published at this time, not to mention online tutorials and developer forums. None of these tips are Android-specific; they are simply Java techniques that routinely confound beginners new to Java and Android, based upon the emails we receive from our readers.

Tip #1:Java’s Unary Operators (Increment/Decrement Variable Shorthand)

Many developers like their code short and easy to read. Like some other programming languages, Java includes unary operators for easily incrementing and decrementing variable values by 1.

In other words,

int counter = 1;
counter++;
counter--;

This code is equivalent to:

int counter = 1;
counter = counter + 1;
counter = counter – 1;

These unary operators can appear before (prefix) or after (postfix) the variable. The location of the operator dictates whether the increment/decrement operation happens before or after the rest of the expression is evaluated. For example, the following code shows how unary operators work by manipulating a variable called counter using Android logging:

int counter = 0;
Log.i(DEBUG_TAG, "The counter value is ="+counter++);       // prints 0
Log.i(DEBUG_TAG, "The counter value is ="+counter);         // prints 1
Log.i(DEBUG_TAG, "The counter value is ="+counter--);       // prints 1
Log.i(DEBUG_TAG, "The counter value is ="+counter);         // prints 0
Log.i(DEBUG_TAG, "The counter value is ="+(++counter));     // prints 1
Log.i(DEBUG_TAG, "The counter value is ="+--counter);       // prints 0

Tip #2:Skipping Temporary Variables (Unnecessary Variables Shorthand)

Java developers generally avoid creating variables they don’t really need. This is especially true of temporary, ortemp ,variables that are used once to store the result of a statement, only to be abandoned.

Instead, Java developers frequently just use the statement to be evaluated as the “resulting” value itself. This is seen often when it comes to return statements, but you’ll also see it in other places as well. For example, the following verbose method uses a “temp” variable called sum to store the sum of two integers and then returns this value:

int sumVerbose(int a, int b)
{
    int temp = a + b;
    return temp;
}

Many Java developers would simply skip the overhead and hassle of creating the temp variable, and just evaluate the statement as part of the return statement, like this:

int sum(int a, int b)
{
    return (a+b);
}

This style holds true for cases where the temp variable is only used once. If the method included further operations on that value, it is usually prudent to use a well-named variable for code readability. In addition, you’ll often see more “verbose” coding style in code that has a lot of debugging features.

Tip #3: The Java “this” Keyword and Chaining Methods

You will often see Java methods chained together. Frequently, these methods are called on the instance of the current class (thus, the this keyword). Similar to the tip discussed above, the return values of each method are only being used to access an underlying method. Therefore, the return value is not stored in a container value, instead the underlying method is just called. For example:

InputStream is = getResources().openRawResource(R.drawable.icon);

This code is logically equivalent to the following:

Resources myAppResources = this.getResources();
InputStream is = myAppResources.openRawResource(R.drawable.icon);

Tip #4: Java’s Ternary Operators (If-Else Shorthand)

One conditional statement you will likely see will use Java’s ternary operator support. This is a shorthand way of designing a simple If-Else statement using a conditional statement (which may or may not be encapsulated in parentheses), followed by a question mark (?), then a statement to occur if the conditional is true, then a colon (:) and another statement to occur if the conditional is false.

Here’s an example of a ternary operator in use:

int lowNum = 1;
int highNum = 99;
int largerNum = lowNum < highNum ? highNum : lowNum;

This is the logical equivalent of the following, much longer, code snippet:

int largerNum;
if(lowNum < highNum)
{
    largerNum = highNum;
} else {
    largerNum = lowNum;
}

This sort of Java shorthand is really only appropriate when your If-Else statement is simple. You’ll sometimes see developers cram a lot of logic into one of these statements; we do not recommend this. Only use ternary operators when they make your code easier to read, not harder.

Tip #5: Empty Statements (Infinite Loop Shorthand)

In Java, you can have empty statements simply by terminating a blank line of code with its semicolon. This trick is often used to specify for() loop conditionals to create an infinite loop, like this:

for (;;) {
    //Do something over, and over, and over again.
}

Each of the for() loop components is an empty statement. This evaluates to be true and therefore the loop continues indefinitely. As with any code design, make sure any infinite loops you create have reasonable exit cases.

Conclusion

It can be frustrating when developers new to Java encounter strange code syntax on their first day working with Android— syntax that is not normally covered in the typical “Master Everything in Java in 20 Minutes” tutorial. Now you know what some of these “shorthand” tricks look like, and what they mean. Whether or not you use them yourself is up to you, but at least they won’t confound you when you see them in sample code! Good luck and feel free to share some of your favorite shorthand Java code you come across in the comment section as well!

About the Authors

Mobile developers Lauren Darcey and Shane Conder have coauthored several books on Android development: an in-depth programming book entitled Android Wireless Application Development and Sams TeachYourself Android Application Development in 24 Hours. When not writing, they spend their time developing mobile software at their company and providing consulting services. They can be reached at via email to androidwirelessdev+mt@gmail.com, via their blog at androidbook.blogspot.com, and on Twitter @androidwireless.

Need More Help Writing Android Apps? Check out our Latest Books and Resources!

Buy Android Wireless Application Development, 2nd Edition  Buy Sam's Teach Yourself Android Application Development in 24 Hours  Mamlambo code at Code Canyon

Series Navigation«Learn Java for Android Challenge: Strings

Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://www.qubesys.com/ Magento Web Design

    All the 13 parts can turn a noob developer to a complete Android Developer for sure. Stunning series. Need to go through them during the weekend.

  • http://www.khalsait.com Raman

    Very well Written i like the Java Android Series very much

    Thanks a lot :)

  • gavin

    I was wondering where the best site to go to for just Java tutorials? Any good bookmarked sites?

  • http://tutopod.com Arif

    i’ve just visit mobile tuts, and long last from net tuts subscriber. i dunno if mobile tuts do excelent training android java and document it as tutorial. i love it.

  • Ouroborus

    These are the sort of things you should already know either from experience with a previous language or in the first couple weeks of learning Java.

  • Anantwar D.M.

    this is an useful website for me to indtorduce myself with androids development with java..
    Can u tell me where i can get more detailed information about the development of android using java….

  • razorcookie

    Thanks, this is more usefull than most of the books on the market.

  • http://www.organicthinkn.com Bethel Goka

    Fantastic work, I am trying my hand at android apps- keep it up

  • JOe

    Thanks for this set of tutorials. I was struggling a bit when trying to learn Java and these tutorials covered everything I needed to know.

    Thanks,

    Joe.

  • markus

    I’m printint the tuts and there is not printversion !?
    So i have to select the text and print the selected text. not the optimal way.

    thanks for the tuts

  • onurski

    Giving the basics by examples in a very short period of time. Thanks to authors..

  • Mubashir Gul

    Thanks a lot. This material is very useful for java android developers. You Rock

  • Ahmed Hegazy

    Thanks for this awesome series
    I read it all
    I recommend it for anybody with C# programming background

  • Adi

    infinite loop:
    while (true) {
    }

    bitewise operations:
    int value = 10;

    System.out.println(value >> 1); // 5 (10 / 2)
    System.out.println(value << 1); // 20 (10 * 2)