How did I get my Java SE8 Certification?

These are my study notes taken while preparing for Java Oracle Certified Associate exam and reading the “Oca: Oracle Certified Associate Java Se 8 Programmer I Study Guide: Exam 1z0–808” by Jeanne Boyarsky. Reading such study guide is in my opinion the best way to prepare for the exam, as it actually teaches you things you will need on the exam rather than what you need when you program in Java (which is entirely different than taking an exam, of course). Here I make notes on the stuff I found new, important or surprising.

Important things to considere during the exam

  • When they ask you about compilation errors, they ask you about all of them, not the first one.
  • When they ask for the “output” they can mean part of the output, it also counts (facepalm). Basically each bit of output can be a separate answer — in such case you need to mark them all.
  • If there is an answer like “an exception is thrown” it still does not mean that some other outputs are not true as well, that will happen before the exception; exception is not exclusive with other answers.
  • When there are no line numbers in a code snippet assume that missing imports do cause compilation errors.
  • public void MyClass() - this is how they may trick you, notice this is NOT a constructor since it has void return type..
  • StringBuilder str = "bla"; - another way to trick, this does not compile
  • Vocabulary: legal = valid = compiles.

The book

I used the following book for studying: OCA Oracle Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0–808 by Jeanne Boyarsky and Scott Selikoff. Just about anyone I asked about a decent study guide recommended this book to me, and I gotta say: it’s worth every penny! I’ve read one other book by the same authors (which I also recommend heartily!), so I was already familiar with their style. Somehow, the authors manage to make dull, theoretical stuff like Garbage Collection, sound fun and exciting. They approach every subject with lots of humor. The book is also filled with lots of practical hands-on tips for taking the exam. You quickly get an idea what to expect on the exam, and when it comes to that, you’re not spared one bit.

Enthuware Mock exams

I told you, we’d get there right? At some point I decided that reading and learn from the book, and make the questions from the book, wasn’t enough preparation. I needed some “fake” exams to practice. Looking around at Coderanch, I saw a lot of recommendations for the Enthuware mock exams. Well, those recommendations were spot on! Basically, what you get is cross-platform software that emulates the exam-software at the Pearson VUE institute where you’ll be taking the real exam. Together with that you get a question bank with as much as 13 practice exams and a series of questions for each exam objective. The questions are tuned to be a bit harder than “the real thing”, but that’s actually great to toughen you up. The software also has a built-in chat client so you can ask questions from the good people of Enthuware.

Expect to be using this program a lot, if you want to prepare decently!

Overview by chapters

Chapter 1 Java Building Blocks

  • asterisk in package import does not import child packages
  • if there is class name conflict in 2 imported packages, you get compilation error: The type … is ambiguous, but it is ok, if you point to one name explicitly (e.g. java.util.Date and java.sql.*); if both are explicit but collide, you get another compilation error: The import … collides with another import …
  • {..} directly in a class is called instance initilalizer (may be static or not); instance initilalizer is also a code block
  • order of initialization: fields and instance initializer blocks are run in the order they appear in the file, and constructor at the end
  • the opposite of primitive type is called reference type
  • there is eight primitive types: byte (from -128 to 127), short, int, long are respectively: 8, 16, 32, 64-bit; float and double are 32 and 64-bit floating-point(=decimal), respectively; char is 16-bit Unicode
  • int num; - and the 32 bits is already allocated by Java

Chapter 2 Operators and Statements

  • three types of operators: unary, binary, ternary, depending to how many operands they can be applied (1, 2, or 3)
  • order of operator precedence (most weird ones are not required for this exam):
  • i++, i--
  • ++i, --i
  • unary +, -, !
  • *, /, %
  • +, -
  • <<, >>, >>> (shift operators)
  • <, >, <=, >=, instanceof (relational operators)
  • ==, !=
  • &, ^, | (logical operators)
  • &&, || (short circuit logical operators)
  • ternary a ? b: c
  • =, +=, -=, *=, /=, %=, &=, ^=, !=, <<=, >>=, >>>= (assignment operators)
  • int t = 11/3 = 3! (floor)
  • numeric promotion
  • integer multiplied by double is type double
  • numeric promotion occurs actually before the operation, for any operator.
  • short multiplied by short is integer (same for char) for binary operators.

Chapter 3 Core Java APIs


  • System.out.println(1 + 2 + "c"); outputs 3c (order of operators)
  • Strings are immutable (so also final), so doing operations on them always returns a new String
  • str.indexOf() - returns first index of occurence, or -1
  • str.substring(inclusively, exclusively)
  • str.startsWith() and str.endsWith() is case sensitive
  • String implements CharSequence


  • An array is an area of memory on the heap with space for a designated number of elements; String is implemented as an array
  • int[] numbers = new int[3];
  • int[] numbers = new int[]{14,12,53};
  • int[] numbers = new int{14,12,53};
  • int [] numbers = new int[3];
  • int numbers[] = new int[3];
  • numbers is a reference variable — it points to the array object
  • int a[], b; - this is one int array and one int, and is correct!
  • [Ljava.lang.String;@160bc7c0 - array of reference type java.lang.String and 160bc7c0 hash code
  • Arrays of Strings does not allocate space for strings. Only allocates space for references to Strings.
  • Arrays will let you cast themselves and put inside it whatever matches the declared type — but gives no shit about runtime errors (ArrayStoreException is thrown on an attempt to store a an object that does not match the initialized type)


  • new ArrayList(10); - capacity
  • new ArrayList(anotherList);
  • Object arrayList.remove(index);
  • boolean arrayList.remove(object); - removes first matching
  • arrayList.removeIf(condition) - new! Java 8!
  • ReplacedObject set(index, object)
  • .isEmpty(), .clear()

Wrappers for Primitives

  • parseInt() returns a primitive, while valueOf() returns a wrapper class
  • autoboxing — since Java 5 primitives are automatically converted to wrappers, if needed (except predicates)
  • listOfIntegers.add(null) - is legal! but unboxing it into int will cause NullPointerException (as it’s not an int), meaning this: int h = listOfIntegers.get(0); btw adding null is no longer called autoboxing.

Dates and Times

  • completely different in Java 8, old way is not on the exam (yuppi!!)
  • import java.time.*
  • time zones are out of scope (yaaay!!)
  • LocalDate - date without time and timezone, use e.g. for birthday
  • the output depends on the locale where you are, but in the exam the US format is used: 2015-01-20
  • LocalDate.of(2015, Month.JANUARY, 1), same as LocalDate.of(2015, 1, 1)
  • LocalTime - time without timezone and without date

Chapter 4 Methods And Encapsulation

  • the difference between default (i.e., when you don’t specify any) and protected access - default is only available for the classes in same package, knows nothing about inheritance
  • optional specifiers are: static, abstract, synchronized (out of scope), native (out of scope), strictfp (out of scope), and they go between the access modifier and the return type
  • _ and $ are allowed in method name, cannot start with a number
  • a vararg must be the last parameter in the parameter list; so only 1 is allowed; if it’s absent it means it is an array of length 0; except you have passed null explicitly (works even for primitive types).
  • static variables vs static methods — a copy of static variable is copied to each class, the code of the static method not
  • static methods are used e.g. in utility classes where they don’t require object’s state, or for sharing state among all instances, e.g. counter
  • static methods can be accesses even after a null has been assigned to the object reference! k=null; and next k.callStaticMethod() — works!

Chapter 5 Class Design

  • in top level classes only public or default access is allowed
  • hiding static methods — when a static method is overridden, this is actually called hiding, not overriding ;) (“static” modifiers must match!)
  • class/instance variables are always hidden when extending — both instances exist in memory, within the child class object (and referring them does not work like invoking methods polymorphically).
  • Java compiler automatically inserts stuff like extends java.lang.Object or super(); call in constructor
  • you can also access fields with super, e.g. super.age
  • pay attention to the difference between this and this(), super and super()`
  • you can call super class’ method by calling SuperClassName.doSomething().

Chapter 6 Exceptions

  • Errors — they are the other subclass of Throwable, and are meant to express something that went very wrong; JVM throws them; you’re not supposed to catch them, as anyway you won’t be able to fix them;
  • RuntimeExceptions you may catch
  • you cannot omit braces with try-catch, like you can with if and with while
  • catch and finally blocks have to be in the right order; at least one must be present
  • finally runs always, except when System.exit(int code) is called!
  • catching a subtype of exception that was caught above does not compile
  • at most one catch block runs (first one matching) — remember about it when you read the code, it’s easy to forget!
  • exception thrown from inside finally block masks the exception thrown in the catch block! as if the previous exception was not thrown at all.

Buy the exam’s access

Creating a Oracle Web Account

Before taking the scheduled exam, you should verify you have an Oracle Web Account and then authenticate your account at

If you have not an Oracle Web account, go to and click on Sign In button:

There you have 2 choices, sign in or create account:

CertView Authentication

If you have previously authenticated your CertView account, you have no action at this time.

Go to where you will be given the option to create an Oracle Web Account if you do not already have one. You will also be prompted to authenticate your account.

If you have not previously authenticated your CertView account, you will be required to authenticate before logging into CertView. Authentication requires an Oracle Web Account username and password and the following information from your Pearson VUE profile: email address and Oracle Testing ID (right superior corner).

If you got login successful, you should see the following:

After account authentication, you will be able to login to CertView to obtain exam results, track exam and certification history and print eCertificates among other activities related to your account.

Note* For new users, please allow one hour after you create your Pearson VUE web account before you attempt to authenticate your CertView account. This time is required to ensure the Pearson VUE account information has been received into Oracle’s system for authentication.

Scheduling an Exam

Go to There you’ll see a screen like this:

You should put your username and password, then you can press the Sign In button.

Once that you have signed, you’ll be redirected to your dashboard account:

Click on Proctored Exams button, the following screen will appears:

On the field “Find an Exam” you can write the “Java” keyword and immediately will appears a combobox like this:

Click on “1Z0–808 Java SE8 Programmer I” option then clicking on “Go” button.

Next, you can choose the language what you desire to apply the exam in.

Once that you’ve chosen the exam language, click on “Next” button.

Other screen appears to show the details of the exam:

Click on “Schedule this Exam” button:

Click on “Proceed to Scheduling” button. In the next screen, you can see the test centers nearest to your location actual.

On the “Find test centers near” field you can put whatever location that you want. Once that you’ve chosen the test center, click on “Next” button.

To select the date and time:

Last, you have to confirm the order:

Go down and if you agree with the order, click on “Proceed to checkout”.

You’ll receive a confirmation via email with the details from your purchase.

The preparation

These are the steps I took to ensure a good passing rate for the exam:

  • I read the book cover to cover. I read chapter 1 and 2 twice, because I had a “false start”. This actually helped a lot because those chapters contain fundamental stuff that’s imperative to understand in order to fully comprehend the later chapters.
  • After reading and learning each chapter, I took some time making the practice questions for that chapter, and reviewing them. The reviewing part is especially important!
  • I made an overview in Excel detailing what exam objectives are covered in what chapters. I actually kept score of everything I did, including the practice questions in the book. It gives you a nice overview of your progress.
  • Now it was time to use the Enthuware software: I made all of the “Objective-wise tests”. Every Objective Test contains 36 questions about one broad exam objective. Before making each test, I carefully read the chapter summaries of the chapters dealing with those objectives. Enthuware took great pains in explaining the right and wrong answers to each question, so it’s really valuable to review each test thoroughly!
  • Then I started making the Standard Tests 1–12, each time reviewing the answers before going on to the next test. These tests are actually very very close to the real exam. They contain the same amount of questions, with those being a bit more difficult than the real exam. Expect each exam including reviewing afterwards, to take at least 2 hours.
  • Lastly I read all of the chapter summaries again and then I made the Last-Day test. The last-day test contains slightly more questions (72), and those questions are not only unique, but are also selected by Enthuware as being “The most important questions”.
  • The Exam!


Pass the exam isn’t impossible, you need to have discipline and be focused. Everyone has different ways learning, in my case, I always write notes on important aspects that I find in the way, in addition, VERY important, you have to practice as times as you can; remember, the practice makes a Master.

If I can help you, go ahead, let me know.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store