mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-05-09 00:08:32 +00:00

1. Added JavaDoc comments. 2. Mentioned and used tab character by giving an example on escape character for Tab. 3. Fixed the condition evaluation to true or false instead of 1 or 0. 4. Added switch case statement example for Strings. 5. Added default access level modifier to the Java class. 6. Added Java Tutorial trail to links for further research. 7. Added link for OOP Concepts for Java and have put all the corresponding links as a children to this. 8. Fixed various other statements for consistency.
425 lines
14 KiB
Markdown
425 lines
14 KiB
Markdown
---
|
|
|
|
language: java
|
|
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.](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 ArrayList class inside of the java.util package
|
|
import java.util.ArrayList;
|
|
// 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; else it 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; else 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
|
|
[Java Bitwise Operators](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html)
|
|
*/
|
|
|
|
// 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){ // 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
|
|
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 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";
|
|
break;
|
|
case 2:
|
|
monthString = "February";
|
|
break;
|
|
case 3:
|
|
monthString = "March";
|
|
break;
|
|
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.");
|
|
}
|
|
|
|
|
|
///////////////////////////////////////
|
|
// Converting Data Types And Typcasting
|
|
///////////////////////////////////////
|
|
|
|
// 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
|
|
|
|
// For other conversions check out the following classes:
|
|
// Double
|
|
// Long
|
|
// String
|
|
|
|
// 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
|
|
|
|
|
|
///////////////////////////////////////
|
|
// 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); // Should always use setter and getter methods to access the attributes of a class
|
|
trek.setCadence(100);
|
|
|
|
// 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
|
|
} // End LearnJava class
|
|
|
|
|
|
// You can include other, non-public classes in a .java file
|
|
|
|
|
|
// Class Declaration Syntax:
|
|
// <public/private/protected> class <class name>{
|
|
// //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 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
|
|
public 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, 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;
|
|
}
|
|
|
|
// void methods require no return statement
|
|
public void setCadence(int newValue) {
|
|
cadence = newValue;
|
|
}
|
|
|
|
public void setGear(int newValue) {
|
|
gear = newValue;
|
|
}
|
|
|
|
public void speedUp(int increment) {
|
|
speed += increment;
|
|
}
|
|
|
|
public void slowDown(int decrement) {
|
|
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: " + 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:
|
|
|
|
* [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)
|
|
|
|
* [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)
|
|
|
|
* [Interfaces](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html)
|
|
|
|
* [Generics](http://docs.oracle.com/javase/tutorial/java/generics/index.html)
|
|
|
|
* [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html)
|