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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user