summaryrefslogtreecommitdiffhomepage
path: root/java.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'java.html.markdown')
-rw-r--r--java.html.markdown592
1 files changed, 337 insertions, 255 deletions
diff --git a/java.html.markdown b/java.html.markdown
index 8d882234..b4531635 100644
--- a/java.html.markdown
+++ b/java.html.markdown
@@ -1,280 +1,332 @@
---
language: java
-
-author: Jake Prather
-
-author_url: http://github.com/JakeHP
+contributors:
+ - ["Jake Prather", "http://github.com/JakeHP"]
+filename: LearnJava.java
---
Java is a general-purpose, concurrent, class-based, object-oriented computer programming language.
-Read more here: https://en.wikipedia.org/wiki/Java_(programming_language)
+[Read more here.](http://docs.oracle.com/javase/tutorial/java/index.html)
```java
// Single-line comments start with //
/*
Multi-line comments look like this.
*/
+/**
+JavaDoc comments look like this. Used to describe the Class or various
+attributes of a Class.
+*/
-// Import Packages
+// Import ArrayList class inside of the java.util package
import java.util.ArrayList;
-import package.path.here;
-// Import all "sub-packages"
-import java.lang.Math.*;
-
-// Your program's entry point is a function called main
-public class Main
-{
- public static void main (String[] args) throws java.lang.Exception
- {
- //stuff here
- }
-}
+// Import all classes inside of java.security package
+import java.security.*;
+
+// Each .java file contains one public class, with the same name as the file.
+public class LearnJava {
+
+ // A program must have a main method as an entry point
+ public static void main (String[] args) {
+
+ // Use System.out.println to print lines
+ System.out.println("Hello World!");
+ System.out.println(
+ "Integer: " + 10 +
+ " Double: " + 3.14 +
+ " Boolean: " + true);
+
+ // To print without a newline, use System.out.print
+ System.out.print("Hello ");
+ System.out.print("World");
+
+
+ ///////////////////////////////////////
+ // Types & Variables
+ ///////////////////////////////////////
+
+ // Declare a variable using <type> <name> [
+ // Byte - 8-bit signed two's complement integer
+ // (-128 <= byte <= 127)
+ byte fooByte = 100;
+
+ // Short - 16-bit signed two's complement integer
+ // (-32,768 <= short <= 32,767)
+ short fooShort = 10000;
+
+ // Integer - 32-bit signed two's complement integer
+ // (-2,147,483,648 <= int <= 2,147,483,647)
+ int fooInt = 1;
+
+ // 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;
+ // L is used to denote that this variable value is of type Long;
+ // anything without is treated as integer by default.
+
+ // Note: Java has no unsigned types
+
+ // Float - Single-precision 32-bit IEEE 754 Floating Point
+ float fooFloat = 234.5f;
+ // f is used to denote that this variable value is of type float;
+ // otherwise it is treated as double.
+
+ // Double - Double-precision 64-bit IEEE 754 Floating Point
+ double fooDouble = 123.4;
+
+ // Boolean - true & false
+ boolean fooBoolean = true;
+ boolean barBoolean = false;
+
+ // Char - A single 16-bit Unicode character
+ char fooChar = 'A';
+
+ // Use final to make a variable immutable
+ final int HOURS_I_WORK_PER_WEEK = 9001;
+
+ // Strings
+ String fooString = "My String Is Here!";
+
+ // \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
+ //The format for declaring an array is follows:
+ //<datatype> [] <var name> = new <datatype>[<array size>];
+ int [] intArray = new int[10];
+ String [] stringArray = new String[1];
+ boolean [] booleanArray = new boolean[100];
+
+ // Another way to declare & initialize an array
+ int [] y = {9000, 1000, 1337};
+
+ // Indexing an array - Accessing an element
+ System.out.println("intArray @ 0: " + intArray[0]);
+
+ // Arrays are zero-indexed and mutable.
+ intArray[1] = 1;
+ System.out.println("intArray @ 1: " + intArray[1]); // => 1
+
+ // Others to check out
+ // ArrayLists - Like arrays except more functionality is offered,
+ // and the size is mutable
+ // LinkedLists
+ // Maps
+ // HashMaps
+
+ ///////////////////////////////////////
+ // Operators
+ ///////////////////////////////////////
+ System.out.println("\n->Operators");
+
+ int i1 = 1, i2 = 2; // Shorthand for multiple declarations
+
+ // Arithmetic is straightforward
+ System.out.println("1+2 = " + (i1 + i2)); // => 3
+ System.out.println("2-1 = " + (i2 - i1)); // => 1
+ System.out.println("2*1 = " + (i2 * i1)); // => 2
+ System.out.println("1/2 = " + (i1 / i2)); // => 0 (0.5 truncated down)
+
+ // Modulo
+ System.out.println("11%3 = "+(11 % 3)); // => 2
+
+ // Comparison operators
+ 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!
+ /*
+ ~ Unary bitwise complement
+ << Signed left shift
+ >> Signed right shift
+ >>> Unsigned right shift
+ & Bitwise AND
+ ^ Bitwise exclusive OR
+ | Bitwise inclusive OR
+ */
+
+ // Incrementations
+ 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
+ System.out.println(i--); //i = 1. Post-Decrementation
+ System.out.println(--i); //i = 0. Pre-Decrementation
+
+ ///////////////////////////////////////
+ // Control Structures
+ ///////////////////////////////////////
+ System.out.println("\n->Control Structures");
+
+ // If statements are c-like
+ int j = 10;
+ if (j == 10){
+ System.out.println("I get printed");
+ } else if (j > 10) {
+ System.out.println("I don't");
+ } else {
+ System.out.println("I also don't");
+ }
-// Printing, and forcing a new line on next print = println()
-System.out.println("Hello World");
-System.out.println("Integer: "+10+"Double: "+3.14+ "Boolean: "+true);
-// Printing, without forcing a new line on next print = print()
-System.out.print("Hello World");
-System.out.print("Integer: "+10+"Double: "+3.14+ "Boolean: "+true);
-
-///////////////////////////////////////
-// Types
-///////////////////////////////////////
-
-// Byte - 8-bit signed two's complement integer
-// (-128 <= byte <= 127)
-byte foo = 100;
-
-// Short - 16-bit signed two's complement integer
-// (-32,768 <= short <= 32,767)
-short bar = 10000;
-
-//Integer - 32-bit signed two's complement integer
-// (-2,147,483,648 <= int <= 2,147,483,647)
-int foo = 1;
-
-//Long - 64-bit signed two's complement integer
-// (-9,223,372,036,854,775,808 <= long <= 9,223,372,036,854,775,807)
-long bar = 100000L;
-
-// (Java has no unsigned types)
-
-//Float - Single-precision 32-bit IEEE 754 Floating Point
-float foo = 234.5f;
-
-//Double - Double-precision 64-bit IEEE 754 Floating Point
-double bar = 123.4;
-
-//Boolean - True & False
-boolean foo = true;
-boolean bar = false;
-
-//Char - A single 16-bit Unicode character
-char foo = 'A';
-
-//Make a variable a constant
-final int HOURS_I_WORK_PER_WEEK = 9001;
-
-//Strings
-String foo = "Hello World!";
-// \n is an escaped character that starts a new line
-String foo = "Hello World!\nLine2!";
-System.out.println(foo);
-//Hello World!
-//Line2!
-
-//Arrays
-//The array size must be decided upon declaration
-//The format for declaring an array is follows:
-//<datatype> [] <var name> = new <datatype>[<array size>];
-int [] array = new int[10];
-String [] array = new String[1];
-boolean [] array = new boolean[100];
-
-// Indexing an array - Accessing an element
-array[0];
-
-// Arrays are mutable; it's just memory!
-array[1] = 1;
-System.out.println(array[1]); // => 1
-array[1] = 2;
-System.out.println(array[1]); // => 2
-
-//Others to check out
-//ArrayLists - Like arrays except more functionality is offered,
-// and the size is mutable
-//LinkedLists
-//Maps
-//HashMaps
-
-///////////////////////////////////////
-// Operators
-///////////////////////////////////////
-
-int i1 = 1, i2 = 2; // Shorthand for multiple declarations
-
-// Arithmetic is straightforward
-i1 + i2; // => 3
-i2 - i1; // => 1
-i2 * i1; // => 2
-i1 / i2; // => 0 (0.5, but truncated towards 0)
-
-// Modulo
-11 % 3; // => 2
-
-// Comparison operators
-3 == 2; // => 0 (false)
-3 != 2; // => 1 (true)
-3 > 2; // => 1
-3 < 2; // => 0
-2 <= 2; // => 1
-2 >= 2; // => 1
-
-// Bitwise operators!
-~ Unary bitwise complement
-<< Signed left shift
->> Signed right shift
->>> Unsigned right shift
-& Bitwise AND
-^ Bitwise exclusive OR
-| Bitwise inclusive OR
-
-// Incrementations
-int i=0;
-i++; //i = 1. Post-Incrementation
-++i; //i = 2. Pre-Incrementation
-i--; //i = 1. Post-Decrementation
---i; //i = 0. Pre-Decrementation
-
-///////////////////////////////////////
-// Control Structures
-///////////////////////////////////////
-
-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");
- }
-}
+ // While loop
+ int fooWhile = 0;
+ while(fooWhile < 100)
+ {
+ //System.out.println(fooWhile);
+ //Increment the counter
+ //Iterated 99 times, fooWhile 0->99
+ fooWhile++;
+ }
+ System.out.println("fooWhile Value: " + fooWhile);
+
+ // Do While Loop
+ int fooDoWhile = 0;
+ do
+ {
+ //System.out.println(fooDoWhile);
+ //Increment the counter
+ //Iterated 99 times, fooDoWhile 0->99
+ fooDoWhile++;
+ }while(fooDoWhile < 100);
+ System.out.println("fooDoWhile Value: " + fooDoWhile);
+
+ // For Loop
+ int fooFor;
+ //for loop structure => for(<start_statement>; <conditional>; <step>)
+ for(fooFor=0; fooFor<10; fooFor++){
+ //System.out.println(fooFor);
+ //Iterated 10 times, fooFor 0->9
+ }
+ System.out.println("fooFor Value: " + fooFor);
+
+ // Switch Case
+ // A switch works with the byte, short, char, and int data types.
+ // It also works with enumerated types (discussed in Enum Types),
+ // the String class, and a few special classes that wrap
+ // primitive types: Character, Byte, Short, and Integer.
+ int month = 3;
+ String monthString;
+ switch (month){
+ case 1:
+ monthString = "January";
+ break;
+ case 2:
+ monthString = "February";
+ break;
+ case 3:
+ monthString = "March";
+ break;
+ default:
+ monthString = "Some other month";
+ break;
+ }
+ System.out.println("Switch Case Result: " + monthString);
-// While loop
-int i = 0;
-while(i < 100){
- System.out.println(i);
- //Increment the counter
- i++;
-}
-// Do While Loop
-int i = 0;
-do{
- System.out.println(i);
- //Increment the counter
- i++;
-}while(i < 100);
-
-// For Loop
-int i;
-//for loop structure => for(<start_statement>;<conditional>;<step>)
-for(i=0;i<100;i++){
- System.out.println(i);
-}
+ ///////////////////////////////////////
+ // Converting Data Types And Typcasting
+ ///////////////////////////////////////
-// Switch Case
-int month = 8;
- String monthString;
- switch (month) {
- case 1: monthString = "January";
- break;
- case 2: monthString = "February";
- break;
- case 3: monthString = "March";
- break;
- case 4: monthString = "April";
- break;
- case 5: monthString = "May";
- break;
- case 6: monthString = "June";
- break;
- case 7: monthString = "July";
- break;
- case 8: monthString = "August";
- break;
- case 9: monthString = "September";
- break;
- case 10: monthString = "October";
- break;
- case 11: monthString = "November";
- break;
- case 12: monthString = "December";
- break;
- default: monthString = "Invalid month";
- break;
- }
- System.out.println(monthString);
+ // Converting data
+
+ // Convert String To Integer
+ Integer.parseInt("123");//returns an integer version of "123"
+
+ // Convert Integer To String
+ Integer.toString(123);//returns a string version of 123
-///////////////////////////////////////
-// Typecasting
-///////////////////////////////////////
+ // For other conversions check out the following classes:
+ // Double
+ // Long
+ // String
-// Converting data
+ // Typecasting
+ // You can also cast java objects, there's a lot of details and
+ // deals with some more intermediate concepts.
+ // Feel free to check it out here:
+ // http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
-//Convert String To Integer
-Integer.parseInt("123");//returns an integer version of "123"
-//Convert Integer To String
-Integer.toString(123);//returns a string version of 123
+ ///////////////////////////////////////
+ // Classes And Functions
+ ///////////////////////////////////////
+
+ System.out.println("\n->Classes & Functions");
+
+ // (definition of the Bicycle class follows)
+
+ // Use new to instantiate a class
+ Bicycle trek = new Bicycle();
+
+ // Call object methods
+ trek.speedUp(3); // You should always use setter and getter methods
+ trek.setCadence(100);
-//For other conversions check out the following classes:
-//Double
-//Long
-//String
+ // toString is a convention to display the value of this Object.
+ System.out.println("trek info: " + trek.toString());
-// You can also cast java objects, there's a lot of details and
-// deals with some more intermediate concepts.
-// Feel free to check it out here:
-// http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
+ } // End main method
+} // End LearnJava class
-///////////////////////////////////////
-// Classes And Functions
-///////////////////////////////////////
+// You can include other, non-public classes in a .java file
-// Classes Syntax shown below.
-// Function declaration syntax:
-// <public/private/protected> <return type> <function name>(<args>)
-// Here is a quick rundown on access level modifiers (public, private, etc.)
-// http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
+// Class Declaration Syntax:
+// <public/private/protected> class <class name>{
+// //data fields, constructors, functions all inside.
+// //functions are called as methods in Java.
+// }
-public class Bicycle {
+class Bicycle {
// Bicycle's Fields/Variables
- public int cadence;
- public int gear;
- public int speed;
+ public int cadence; // Public: Can be accessed from anywhere
+ private int speed; // Private: Only accessible from within the class
+ protected int gear; // Protected: Accessible from the class and subclasses
+ String name; // default: Only accessible from within this package
// Constructors are a way of creating classes
// This is a default constructor
- public Bicycle(){
+ public Bicycle() {
gear = 1;
cadence = 50;
- startGear = 1;
+ 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:
+ // <public/private/protected> <return type> <function name>(<args>)
+
+ // Java classes often implement getters and setters for their fields
+
+ // Method declaration syntax:
+ // <scope> <return type> <method name>(<args>)
+ public int getCadence() {
+ return cadence;
}
- // the Bicycle class has
- // four methods
+ // void methods require no return statement
public void setCadence(int newValue) {
cadence = newValue;
}
@@ -283,43 +335,73 @@ public class Bicycle {
gear = newValue;
}
- public void applyBrake(int decrement) {
+ public void speedUp(int increment) {
+ speed += increment;
+ }
+
+ public void slowDown(int decrement) {
speed -= decrement;
}
- public void speedUp(int increment) {
- speed += increment;
+ public void setName(String newName) {
+ name = newName;
}
-}
+ public String getName() {
+ return name;
+ }
-//Now..Later in the main / driver of your java program
-public class Main
-{
- public static void main (String[] args) throws java.lang.Exception
- {
- //Call bicycle's constructor
- Bicycle trek = new Bicycle();
- //Manipulate your object
- trek.speedUp(3);
- trek.setCadence(100);
+ //Method to display the attribute values of this Object.
+ @Override
+ public String toString() {
+ return "gear: " + gear +
+ " cadence: " + cadence +
+ " speed: " + speed +
+ " name: " + name;
+ }
+} // end class Bicycle
+
+// PennyFarthing is a subclass of Bicycle
+class PennyFarthing extends Bicycle {
+ // (Penny Farthings are those bicycles with the big front wheel.
+ // They have no gears.)
+
+ public PennyFarthing(int startCadence, int startSpeed){
+ // Call the parent constructor with super
+ super(startCadence, startSpeed, 0, "PennyFarthing");
}
+
+ // You should mark a method you're overriding with an @annotation
+ // To learn more about what annotations are and their purpose
+ // check this out: http://docs.oracle.com/javase/tutorial/java/annotations/
+ @Override
+ public void setGear(int gear) {
+ gear = 0;
+ }
+
}
```
## 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://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))
+* [Java Tutorial Trail from Sun / Oracle](http://docs.oracle.com/javase/tutorial/index.html)
+
+* [Java Access level modifiers](http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)
-* Abstraction (http://en.wikipedia.org/wiki/Abstraction_(computer_science))
+* [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://en.wikipedia.org/wiki/Exception_handling)
+* [Exceptions](http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html)
-* Interfaces (http://en.wikipedia.org/wiki/Interfaces_(computer_science))
+* [Interfaces](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html)
-* Generics (http://en.wikipedia.org/wiki/Generics_in_Java)
+* [Generics](http://docs.oracle.com/javase/tutorial/java/generics/index.html)
-* The links provided are just to get an understanding of the topic, feel free to google and find specific examples
+* [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html)