Your SlideShare is downloading. ×
Intro to Java for C++ Developers
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intro to Java for C++ Developers

2,496

Published on

An Intro to Java for C++ Developers

An Intro to Java for C++ Developers

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,496
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
44
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Zachary BlairApril 10, 2012
  • 2.  Intro to Java and the JVM Basic Types/Arrays Classes/Inheritance Nested Classes Exceptions Enums Autoboxing/unboxing Annotations Generics
  • 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.  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.  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.  Not specific to the Java language. Other languages compile for the JVM: ◦ Groovy ◦ Clojure ◦ Jython ◦ JRuby ◦ Dozens of others…
  • 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. 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.  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. 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. Vector2D.java).
  • 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. 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 ‘this.new’ instead of ‘new’.
  • 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. 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. 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. 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. 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. 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. 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.  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 http://docs.oracle.com/javase/

×