Intro to Java for C++ Developers


Published on

An Intro to Java for C++ Developers

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Intro to Java for C++ Developers

  1. 1. Zachary BlairApril 10, 2012
  2. 2.  Intro to Java and the JVM Basic Types/Arrays Classes/Inheritance Nested Classes Exceptions Enums Autoboxing/unboxing Annotations Generics
  3. 3.  Originally developed by Sun for embedded devices, version 1.0 released in 1996 James Gosling (Father of Java, Officer of the Order of Canada), photo by Peter Campbell
  4. 4.  Intended as an alternative to C++ that is: ◦ Simpler ◦ Higher-level ◦ Multithreaded ◦ Dynamic ◦ Object-oriented ◦ Trivially portable (“Write Once, Run Everywhere”) ◦ No pointer arithmetic ◦ Automatic garbage collection
  5. 5.  Emulates a “virtual” CPU Java Source Files (.java) Executes “bytecode” javac (each opcode is one byte Java bytecode long) stored in ‘.class’ files (.class) files The same “bytecode” can x86 Java ARM Java run on any machine with Virtual Virtual Machine (JVM) Machine (JVM) a JVM implemented for it
  6. 6.  Not specific to the Java language. Other languages compile for the JVM: ◦ Groovy ◦ Clojure ◦ Jython ◦ JRuby ◦ Dozens of others…
  7. 7.  Similar to C: byte -> 8 bits short -> 16 bits int -> 32 bits long -> 64 bits float -> 32 bits double -> 64 bits char -> 16 bits boolean Numeric types are always signed ‘char’ is a 16 bits instead of 8! No conversion between int and boolean as in C++. if(0) or while(1) are compile-time errors in Java.
  8. 8. Eight bytes walk into a bar.  The bartender asks, “Can I get you anything?”“Yeah,” reply the bytes.  “Make us a double.” ** I didn’t come up with this joke, but it’s comedy Gold.
  9. 9.  Similar to C in syntax int[] numbers = new int[10]; numbers[0] = 1000; Arrays are Objects with members and methods (member functions)! for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } Trying to index past the end of an array results in ArrayIndexOutOfBoundsException
  10. 10. public class Vector2D{ public int x; public int y; public float magnitude() { return Math.sqrt(x * x + y * y); }} Method implementations must be defined in the class body. No ‘.h’ files, just ‘.java’! Classes themselves can have access modifiers! Each ‘public’ class must reside in a ‘.java’ file of the same name (e.g.
  11. 11. public class Velocity extends Point2D { public boolean isTooFast() { return (magnitude() > 60); } } Uses ‘extends’ to specify a base class Only single inheritance is supported All inheritance equivalent to ‘public’ in C++ All classes implicitly inherit from Object
  12. 12. public class OuterClass { public int var; class InnerClass { public void foo() { System.out.println(var); } } } Non-static inner classes have access to the outer class’s members! Instantiated using ‘’ instead of ‘new’.
  13. 13. public void foo() { class Point { public int x; public int y; } Point p = new Point(); } You can even declare a class inside a method!
  14. 14. button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(“The button was pressed”); }} Defined and instantiated an anonymous class that implements an “ActionListener” interface, all in the parameter list to a method call! Used as Java’s alternative to function pointers in C for callbacks.
  15. 15. try { int a[] = new int[2]; System.out.println(“A three:" + a[3]);}catch (ArrayIndexOutOfBoundsException e) { System.out.println("Exception:" + e);}  Handle error conditions, similar to C++’s try/catch.  Some exceptions are ‘checked’, meaning it is a compile-time error to not either catch them, or explicitly mark your method as possibly throwing that exception to its caller.
  16. 16. public enum Color{ RED, ORANGE, YELLOW, GREEN, BLUE}…Color c = Color.RED; Like C enums, but in Java, enum is a sort of class with enum values as static members. You can add data and methods to the enum!Color c = Color.RED;if (c.isWarmColor()) System.out.println(c.toString());
  17. 17. int x = 10;Integer y = new Integer(x);Integer z = x;int a = z;list list = new List();list.append(x); // x converted toInteger  Automatically convert between primitive types (e.g. int, double, char) to their Object-based (boxed) types (e.g. Integer, Double, Character).  Useful because boxed types can be stored in collection classes just like any other Object
  18. 18. public class Base{ public void foo() { }}…public class Subtype extends Base{ @Override public void foo() { bar(); }} @Override marks a method as explicitly overriding a base class method, triggering a compilation error if it doesn’t!
  19. 19. class<T> Pair { public T first; public T second; } Pair<int> p = new Pair<int>(); p.first = 10; p.second = 20; A bit like templates in C++ (except that internally only one implementation is created).
  20. 20.  Java has some similar syntax to C++ Rather than compiling to native code, it compiles to bytecode for the JVM to execute Java makes it more difficult to make certain mistakes (automatic garbage collection and no pointer arithmetic). Learn more at