Home of The JavaSpecialists' Newsletter

197What is the Meaning of Life?

Posted: 2011-12-06Category: LanguageJava Version: 1.5+Dr. Heinz M. Kabutz

Abstract: In this newsletter we try to calculate the meaning of life, with surprising results.


Welcome to the 197th issue of The Java(tm) Specialists' Newsletter sent to you from Chania in Greece. This past weekend I hit the "big four". I had asked Helene if she could perhaps organize a "surprise party" for me. I like celebrations, but do not enjoy being part of the steering committee. Well, it certainly was a surprise, since she drove off without telling me where the party was being held! She had told my sister, who had flown down from London to be with us, but Bettina had forgotten the name. Fortunately at this time of year most restaurant are closed, so we managed to find the "surprise party" on first attempt. Where else, but Irene's Taverna?

Birthday and Anniversary Special: Since the 30th November 2017 is the 17th anniversary of our newsletter and my birthday is coming up on the 4th December, we are giving away a 30% discount on our new Data Structures for Java 9 Course (Late 2017 Edition). Whether you are a seasoned Java programmer or you just want to get ready for your next job interview, this course will help you. Besides detailed lectures, the course has over 130 questions that will help you discover what you missed.

What is the Meaning of Life?

This morning, whilst waiting for my Suzuki Jimny to be serviced, I wrote some demo code for my new concurrency course. I needed a long running method that would eventually return with some value. Since I had just experienced a change in age that typically precipitates introspection, I thought it would be fun to finally calculate the meaning of life. Since life appears to be filled with random "black swan" events, we should probably include Math.random() in our calculation.

public class MeaningOfLife {
  public static String findOutWhatLifeIsAllAbout() {
    int meaning = 0;
    for (int i = 0; i < 10; i++) {
      for (int j = 0; j < 20; j++) {
        for (int k = 0; k < 300; k++) {
          for (int m = 0; m < 7000; m++) {
            meaning += Math.random() + 1;
    return String.valueOf(meaning).replaceAll("0*$", "");

  public static void main(String[] args) {

Think about what the output should be before you run it. Then try it out, preferably with the -server switch. On my machine it takes 15 seconds to find the meaning of life with -server and 25 seconds with -client. Patience is apparently a virtue.

The question is: Why is it giving this result? And why does it even compile?

Kind regards



Related Articles

Browse the Newsletter Archive

About the Author


Java Champion, author of the Javaspecialists Newsletter, conference speaking regular... About Heinz

Java Training

We deliver relevant courses, by top Java developers to produce more resourceful and efficient programmers within their organisations.

Java Consulting

Nobody ever wants to call a Java performance consultant, but with first-hand experience repairing and improving commercial Java applications - JavaSpecialists are a good place to start...

Threading Emergency?

If your system is down, we will review it for 15 minutes and give you our findings for just 1 € without any obligation.