diff --git a/java.html.markdown b/java.html.markdown index 418bd649..38b3c9aa 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -15,6 +15,9 @@ Java is a general-purpose, concurrent, class-based, object-oriented computer pro /* Multi-line comments look like this. */ +/** +JavaDoc comments look like this. Used to describe the Class or various attributes of a Class. +*/ // Import ArrayList class inside of the java.util package import java.util.ArrayList; @@ -58,12 +61,12 @@ public class LearnJava { // Long - 64-bit signed two's complement integer // (-9,223,372,036,854,775,808 <= long <= 9,223,372,036,854,775,807) - long fooLong = 100000L; + long fooLong = 100000L; // L is used to denote that this variable value is of type Long; else it is treated as integer by default. - // (Java has no unsigned types) + // Note: Java has no unsigned types // Float - Single-precision 32-bit IEEE 754 Floating Point - float fooFloat = 234.5f; + float fooFloat = 234.5f; // f is used to denote that this variable value is of type float; else it is treated as double. // Double - Double-precision 64-bit IEEE 754 Floating Point double fooDouble = 123.4; @@ -83,8 +86,11 @@ public class LearnJava { // \n is an escaped character that starts a new line String barString = "Printing on a new line?\nNo Problem!"; + // \t is an escaped character that adds a tab character + String bazString = "Do you want to add a tab?\tNo Problem!"; System.out.println(fooString); System.out.println(barString); + System.out.println(bazString); // Arrays //The array size must be decided upon declaration @@ -128,12 +134,12 @@ public class LearnJava { System.out.println("11%3 = "+(11 % 3)); // => 2 // Comparison operators - System.out.println("3 == 2? " + (3 == 2)); // => 0 (false) - System.out.println("3 != 2? " + (3 != 2)); // => 1 (true) - System.out.println("3 > 2? " + (3 > 2)); // => 1 - System.out.println("3 < 2? " + (3 < 2)); // => 0 - System.out.println("2 <= 2? " + (2 <= 2)); // => 1 - System.out.println("2 >= 2? " + (2 >= 2)); // => 1 + System.out.println("3 == 2? " + (3 == 2)); // => false + System.out.println("3 != 2? " + (3 != 2)); // => true + System.out.println("3 > 2? " + (3 > 2)); // => true + System.out.println("3 < 2? " + (3 < 2)); // => false + System.out.println("2 <= 2? " + (2 <= 2)); // => true + System.out.println("2 >= 2? " + (2 >= 2)); // => true // Bitwise operators! /* @@ -144,10 +150,11 @@ public class LearnJava { & Bitwise AND ^ Bitwise exclusive OR | Bitwise inclusive OR + [Java Bitwise Operators](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html) */ // Incrementations - int i=0; + int i = 0; System.out.println("\n->Inc/Dec-rementation"); System.out.println(i++); //i = 1. Post-Incrementation System.out.println(++i); //i = 2. Pre-Incrementation @@ -160,12 +167,13 @@ public class LearnJava { System.out.println("\n->Control Structures"); // If statements are c-like - if (false){ - System.out.println("I never run"); - }else if (false) { - System.out.println("I am also never run"); - } else { - System.out.println("I print"); + int j = 10; + if (j == 10){ // Evaluates to true only if value of j is equal to 10. + System.out.println("In this case, I get executed and I print this since j is equal to 10."); + } else if (i > 10) { // Evaluates to true only if value of j is greater than 10. + System.out.println("I never run if j = 10; I will run only if j is greater than 10"); + } else { // If none of the above if-conditions match, then control will fall back to else-condition; In this case, if value of j is less than 10. + System.out.println("I also never run if j = 10; I will run only if j is less than 10"); } // While loop @@ -200,19 +208,47 @@ public class LearnJava { System.out.println("fooFor Value: " + fooFor); // Switch Case + //A switch works with the byte, short, char, and int primitive data types. + //It also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: Character, Byte, Short, and Integer. int month = 3; String monthString; switch (month){ - case 1: monthString = "January"; + case 1: + monthString = "January"; break; - case 2: monthString = "February"; + case 2: + monthString = "February"; break; - case 3: monthString = "March"; + case 3: + monthString = "March"; break; - default: monthString = "Some other month"; + default: //The default section handles all values that are not explicitly handled by one of the case sections. + monthString = "Some other month"; break; } System.out.println("Switch Case Result: " + monthString); + + // Effective JDK 7.0, Strings can be used for case-matching in Switch statement. + final String dayOfWeek = "Friday"; + switch (dayOfWeek) { + case "Monday": + System.out.println("Aargh!! Start of the work week!"); + break; + case "Tuesday": + case "Wednesday": + case "Thursday": + System.out.println("Midweek"); + break; + case "Friday": + System.out.println("Awesome! End of work week"); + break; + case "Saturday": + case "Sunday": + System.out.println("Weekend"); + break; + default: + System.out.println("There is no such weekday, at least on our planet."); + } /////////////////////////////////////// @@ -251,10 +287,11 @@ public class LearnJava { Bicycle trek = new Bicycle(); // Call object methods - trek.speedUp(3); + trek.speedUp(3); // Should always use setter and getter methods to access the attributes of a class trek.setCadence(100); - // toString is a convention + // toString is a convention to display the attribute values of this Object. + // Has to be overridden in the POJO (Plain Old Java Objects) to see the actual values else internal representation of the address will be displayed. System.out.println("trek info: " + trek.toString()); } // End main method @@ -266,15 +303,17 @@ public class LearnJava { // Class Declaration Syntax: // class { -// //data fields, constructors, functions all inside +// //data fields, constructors, functions all inside. +// //functions are called as methods in Java. // } class Bicycle { // Bicycle's Fields/Variables public int cadence; // Public: Can be accessed from anywhere - private int speed; // Private: Only accessable from within the class - protected int gear; // Protected: Accessible from the class and subclasses + private int speed; // Private: Only accessible from within the class + protected int gear; // Protected: Accessible from the class and all the subclasses + String name; // default: Only accessible from within this package // Constructors are a way of creating classes // This is a default constructor @@ -282,13 +321,15 @@ class Bicycle { gear = 1; cadence = 50; speed = 5; + name = "Bontrager"; } // This is a specified constructor (it contains arguments) - public Bicycle(int startCadence, int startSpeed, int startGear) { - gear = startGear; - cadence = startCadence; - speed = startSpeed; + public Bicycle(int startCadence, int startSpeed, int startGear, String name) { + this.gear = startGear; + this.cadence = startCadence; + this.speed = startSpeed; + this.name = name; } // Function Syntax: @@ -319,10 +360,21 @@ class Bicycle { speed -= decrement; } + public void setName(int newName) { + name = newName; + } + + public String getName() { + return name; + } + + //Method to display the attribute values of this Object. + @Override public String toString() { - return "gear: "+Integer.toString(gear)+ - " cadence: "+Integer.toString(cadence)+ - " speed: "+Integer.toString(speed); + return "gear: " + gear + + " cadence: " + cadence + + " speed: " + speed + + " name: " + name; } } // end class Bicycle @@ -333,7 +385,7 @@ class PennyFarthing extends Bicycle { public PennyFarthing(int startCadence, int startSpeed){ // Call the parent constructor with super - super(startCadence, startSpeed, 0); + super(startCadence, startSpeed, 0, "PennyFarthing"); } // You should mark a method you're overriding with an @annotation @@ -350,13 +402,18 @@ class PennyFarthing extends Bicycle { ## Further Reading +The links provided here below are just to get an understanding of the topic, feel free to Google and find specific examples. + Other Topics To Research: -* [Inheritance](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) +* [Java Tutorial Trail from Sun / Oracle](http://docs.oracle.com/javase/tutorial/index.html) -* [Polymorphism](http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) +* [Java Access level modifiers](http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) -* [Abstraction](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) +* [Object-Oriented Programming Concepts](http://docs.oracle.com/javase/tutorial/java/concepts/index.html): + * [Inheritance](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) + * [Polymorphism](http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) + * [Abstraction](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) * [Exceptions](http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html) @@ -365,5 +422,3 @@ Other Topics To Research: * [Generics](http://docs.oracle.com/javase/tutorial/java/generics/index.html) * [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html) - -* The links provided are just to get an understanding of the topic, feel free to google and find specific examples