1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-06 06:47:54 +02:00

Merge pull request #1371 from zfergus2/master

[java/en] Added additional definitions and edited comments
This commit is contained in:
Levi Bostian
2015-10-09 10:01:18 -05:00

View File

@@ -5,6 +5,7 @@ contributors:
- ["Jakukyo Friel", "http://weakish.github.io"] - ["Jakukyo Friel", "http://weakish.github.io"]
- ["Madison Dickson", "http://github.com/mix3d"] - ["Madison Dickson", "http://github.com/mix3d"]
- ["Simon Morgan", "http://sjm.io/"] - ["Simon Morgan", "http://sjm.io/"]
- ["Zachary Ferguson", "http://github.com/zfergus2"]
filename: LearnJava.java filename: LearnJava.java
--- ---
@@ -31,7 +32,7 @@ import java.security.*;
// the file. // the file.
public class LearnJava { public class LearnJava {
// A program must have a main method as an entry point. // In order to run a java program, it must have a main method as an entry point.
public static void main (String[] args) { public static void main (String[] args) {
// Use System.out.println() to print lines. // Use System.out.println() to print lines.
@@ -45,6 +46,8 @@ public class LearnJava {
System.out.print("Hello "); System.out.print("Hello ");
System.out.print("World"); System.out.print("World");
// Use System.out.printf() for easy formatted printing.
System.out.printf("pi = %.5f", Math.PI); // => pi = 3.14159
/////////////////////////////////////// ///////////////////////////////////////
// Variables // Variables
@@ -93,7 +96,7 @@ public class LearnJava {
// Float - Single-precision 32-bit IEEE 754 Floating Point // 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; // f or F is used to denote that this variable value is of type float;
// otherwise it is treated as double. // otherwise it is treated as double.
// Double - Double-precision 64-bit IEEE 754 Floating Point // Double - Double-precision 64-bit IEEE 754 Floating Point
@@ -106,9 +109,12 @@ public class LearnJava {
// Char - A single 16-bit Unicode character // Char - A single 16-bit Unicode character
char fooChar = 'A'; char fooChar = 'A';
// final variables can't be reassigned to another object. // final variables can't be reassigned to another object,
final int HOURS_I_WORK_PER_WEEK = 9001; final int HOURS_I_WORK_PER_WEEK = 9001;
// but they can be initialized later.
final double E;
E = 2.71828;
// Strings // Strings
String fooString = "My String Is Here!"; String fooString = "My String Is Here!";
@@ -166,6 +172,7 @@ public class LearnJava {
System.out.println("2-1 = " + (i2 - i1)); // => 1 System.out.println("2-1 = " + (i2 - i1)); // => 1
System.out.println("2*1 = " + (i2 * i1)); // => 2 System.out.println("2*1 = " + (i2 * i1)); // => 2
System.out.println("1/2 = " + (i1 / i2)); // => 0 (0.5 truncated down) System.out.println("1/2 = " + (i1 / i2)); // => 0 (0.5 truncated down)
System.out.println("1/2 = " + (i1 / (i2*1.0))); // => 0.5
// Modulo // Modulo
System.out.println("11%3 = "+(11 % 3)); // => 2 System.out.println("11%3 = "+(11 % 3)); // => 2
@@ -178,12 +185,17 @@ public class LearnJava {
System.out.println("2 <= 2? " + (2 <= 2)); // => true System.out.println("2 <= 2? " + (2 <= 2)); // => true
System.out.println("2 >= 2? " + (2 >= 2)); // => true System.out.println("2 >= 2? " + (2 >= 2)); // => true
// Boolean operators
System.out.println("3 > 2 && 2 > 3? " + ((3 > 2) && (2 > 3))); // => false
System.out.println("3 > 2 || 2 > 3? " + ((3 > 2) || (2 > 3))); // => true
System.out.println("!(3 == 2)? " + (!(3 == 2))); // => true
// Bitwise operators! // Bitwise operators!
/* /*
~ Unary bitwise complement ~ Unary bitwise complement
<< Signed left shift << Signed left shift
>> Signed right shift >> Signed/Arithmetic right shift
>>> Unsigned right shift >>> Unsigned/Logical right shift
& Bitwise AND & Bitwise AND
^ Bitwise exclusive OR ^ Bitwise exclusive OR
| Bitwise inclusive OR | Bitwise inclusive OR
@@ -236,9 +248,8 @@ public class LearnJava {
System.out.println("fooDoWhile Value: " + fooDoWhile); System.out.println("fooDoWhile Value: " + fooDoWhile);
// For Loop // For Loop
int fooFor;
// for loop structure => for(<start_statement>; <conditional>; <step>) // for loop structure => for(<start_statement>; <conditional>; <step>)
for (fooFor = 0; fooFor < 10; fooFor++) { for (int fooFor = 0; fooFor < 10; fooFor++) {
System.out.println(fooFor); System.out.println(fooFor);
// Iterated 10 times, fooFor 0->9 // Iterated 10 times, fooFor 0->9
} }
@@ -332,9 +343,9 @@ public class LearnJava {
private static final Set<String> COUNTRIES = new HashSet<String>(); private static final Set<String> COUNTRIES = new HashSet<String>();
static { static {
validCodes.add("DENMARK"); validCodes.add("DENMARK");
validCodes.add("SWEDEN"); validCodes.add("SWEDEN");
validCodes.add("FINLAND"); validCodes.add("FINLAND");
} }
// But there's a nifty way to achive the same thing in an // But there's a nifty way to achive the same thing in an
@@ -357,7 +368,8 @@ public class LearnJava {
} // End LearnJava class } // End LearnJava class
// You can include other, non-public outer-level classes in a .java file // You can include other, non-public outer-level classes in a .java file,
// but it is good practice. Instead split classes into separate files.
// Class Declaration Syntax: // Class Declaration Syntax:
@@ -377,6 +389,8 @@ class Bicycle {
// Constructors are a way of creating classes // Constructors are a way of creating classes
// This is a constructor // This is a constructor
public Bicycle() { public Bicycle() {
// You can also call another constructor:
// this(1, 50, 5, "Bontrager");
gear = 1; gear = 1;
cadence = 50; cadence = 50;
speed = 5; speed = 5;
@@ -392,13 +406,13 @@ class Bicycle {
this.name = name; this.name = name;
} }
// Function Syntax: // Method Syntax:
// <public/private/protected> <return type> <function name>(<args>) // <public/private/protected> <return type> <function name>(<args>)
// Java classes often implement getters and setters for their fields // Java classes often implement getters and setters for their fields
// Method declaration syntax: // Method declaration syntax:
// <scope> <return type> <method name>(<args>) // <access modifier> <return type> <method name>(<args>)
public int getCadence() { public int getCadence() {
return cadence; return cadence;
} }
@@ -429,7 +443,7 @@ class Bicycle {
} }
//Method to display the attribute values of this Object. //Method to display the attribute values of this Object.
@Override @Override // Inherited from the Object class.
public String toString() { public String toString() {
return "gear: " + gear + " cadence: " + cadence + " speed: " + speed + return "gear: " + gear + " cadence: " + cadence + " speed: " + speed +
" name: " + name; " name: " + name;
@@ -464,26 +478,26 @@ class PennyFarthing extends Bicycle {
// Example - Food: // Example - Food:
public interface Edible { public interface Edible {
public void eat(); // Any class that implements this interface, must public void eat(); // Any class that implements this interface, must
// implement this method. // implement this method.
} }
public interface Digestible { public interface Digestible {
public void digest(); public void digest();
} }
// We can now create a class that implements both of these interfaces. // We can now create a class that implements both of these interfaces.
public class Fruit implements Edible, Digestible { public class Fruit implements Edible, Digestible {
@Override @Override
public void eat() { public void eat() {
// ... // ...
} }
@Override @Override
public void digest() { public void digest() {
// ... // ...
} }
} }
// In Java, you can extend only one class, but you can implement many // In Java, you can extend only one class, but you can implement many
@@ -491,81 +505,120 @@ public class Fruit implements Edible, Digestible {
public class ExampleClass extends ExampleClassParent implements InterfaceOne, public class ExampleClass extends ExampleClassParent implements InterfaceOne,
InterfaceTwo { InterfaceTwo {
@Override @Override
public void InterfaceOneMethod() { public void InterfaceOneMethod() {
} }
@Override @Override
public void InterfaceTwoMethod() { public void InterfaceTwoMethod() {
} }
} }
// Abstract Classes // Abstract Classes
// Abstract Class declaration syntax // Abstract Class declaration syntax
// <access-level> abstract <abstract-class-name> extends <super-abstract-classes> { // <access-level> abstract <abstract-class-name> extends <super-abstract-classes> {
// // Constants and variables // // Constants and variables
// // Method declarations // // Method declarations
// } // }
// Methods can't have bodies in an interface, unless the method is // Marking a class as abstract means that it contains abstract methods that must
// static. Also variables are NOT final by default, unlike an interface. // be defined in a child class. Similar to interfaces, abstract classes cannot
// Also abstract classes CAN have the "main" method. // be instantiated, but instead must be extended and the abstract methods
// Abstract classes solve these problems. // defined. Different from interfaces, abstract classes can contain a mixture of
// concrete and abstract methods. Methods in an interface cannot have a body,
// unless the method is static, and variables are final by default, unlike an
// abstract class. Also abstract classes CAN have the "main" method.
public abstract class Animal public abstract class Animal
{ {
public abstract void makeSound(); public abstract void makeSound();
// Method can have a body // Method can have a body
public void eat() public void eat()
{ {
System.out.println("I am an animal and I am Eating."); System.out.println("I am an animal and I am Eating.");
// Note: We can access private variable here. // Note: We can access private variable here.
age = 30; age = 30;
} }
// No need to initialize, however in an interface // No need to initialize, however in an interface
// a variable is implicitly final and hence has // a variable is implicitly final and hence has
// to be initialized. // to be initialized.
private int age; protected int age;
public void printAge() public void printAge()
{ {
System.out.println(age); System.out.println(age);
} }
// Abstract classes can have main function. // Abstract classes can have main function.
public static void main(String[] args) public static void main(String[] args)
{ {
System.out.println("I am abstract"); System.out.println("I am abstract");
} }
} }
class Dog extends Animal class Dog extends Animal
{ {
// Note still have to override the abstract methods in the // Note still have to override the abstract methods in the
// abstract class. // abstract class.
@Override @Override
public void makeSound() public void makeSound()
{ {
System.out.println("Bark"); System.out.println("Bark");
// age = 30; ==> ERROR! age is private to Animal // age = 30; ==> ERROR! age is private to Animal
} }
// NOTE: You will get an error if you used the // NOTE: You will get an error if you used the
// @Override annotation here, since java doesn't allow // @Override annotation here, since java doesn't allow
// overriding of static methods. // overriding of static methods.
// What is happening here is called METHOD HIDING. // What is happening here is called METHOD HIDING.
// Check out this awesome SO post: http://stackoverflow.com/questions/16313649/ // Check out this awesome SO post: http://stackoverflow.com/questions/16313649/
public static void main(String[] args) public static void main(String[] args)
{ {
Dog pluto = new Dog(); Dog pluto = new Dog();
pluto.makeSound(); pluto.makeSound();
pluto.eat(); pluto.eat();
pluto.printAge(); pluto.printAge();
} }
} }
// Final Classes
// Final Class declaration syntax
// <access-level> final <final-class-name> {
// // Constants and variables
// // Method declarations
// }
// Final classes are classes that cannot be inherited from and are therefore a
// final child. In a way, final classes are the opposite of abstract classes
// because abstract classes must be extended, but final classes cannot be
// extended.
public final class SaberToothedCat extends Animal
{
// Note still have to override the abstract methods in the
// abstract class.
@Override
public void makeSound()
{
System.out.println("Roar");
}
}
// Final Methods
public abstract class Mammal()
{
// Final Method Syntax:
// <access modifier> final <return type> <function name>(<args>)
// Final methods, like, final classes cannot be overridden by a child class,
// and are therefore the final implementation of the method.
public final boolean isWarmBlooded()
{
return true;
}
}
``` ```
## Further Reading ## Further Reading