From 2b2951d0e0ae4de8f212ff4f9ee8c77db8e9458d Mon Sep 17 00:00:00 2001 From: oscarb-se Date: Mon, 8 Feb 2016 02:54:41 +0100 Subject: Fixed statement about many classes in one file Fixed statement on line 441 to say that it is _not_ good practice to keep many classes in the same file. --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 74140120..073135c9 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -438,7 +438,7 @@ public class LearnJava { // You can include other, non-public outer-level classes in a .java file, -// but it is good practice. Instead split classes into separate files. +// but it is not good practice. Instead split classes into separate files. // Class Declaration Syntax: -- cgit v1.2.3 From b02cceda8b6f63ee133c5c88cd31e16fe346c4a6 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Mon, 15 Feb 2016 10:29:42 -0800 Subject: new boolean[] not really required when initializing. Introducing this disrupts the flow a little bit to think, if specifying `new boolean[] ` required when intializing. --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 073135c9..50629ce1 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -175,7 +175,7 @@ public class LearnJava { // Another way to declare & initialize an array int[] y = {9000, 1000, 1337}; String names[] = {"Bob", "John", "Fred", "Juan Pedro"}; - boolean bools[] = new boolean[] {true, false, false}; + boolean bools[] = {true, false, false}; // Indexing an array - Accessing an element System.out.println("intArray @ 0: " + intArray[0]); -- cgit v1.2.3 From 3bb265de2e75eba68ca51d3c63173211bb4d59de Mon Sep 17 00:00:00 2001 From: Divay Prakash Date: Thu, 3 Mar 2016 12:07:58 +0530 Subject: removed whitespaces, fixed content extending beyond 80 chars --- java.html.markdown | 92 ++++++++++++++++++++---------------------------------- 1 file changed, 33 insertions(+), 59 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 50629ce1..946bfc17 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -8,6 +8,7 @@ contributors: - ["Zachary Ferguson", "http://github.com/zfergus2"] - ["Cameron Schermerhorn", "http://github.com/cschermerhorn"] - ["Rachel Stiyer", "https://github.com/rstiyer"] + - ["Divay Prakash", "http://github.com/divayprakash"] filename: LearnJava.java --- @@ -17,9 +18,11 @@ programming language. ```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. @@ -30,11 +33,12 @@ import java.util.ArrayList; // Import all classes inside of java.security package import java.security.*; -// Each .java file contains one outer-level public class, with the same name as -// the file. +// Each .java file contains one outer-level public class, with the same name +// as the file. public class LearnJava { - // In order to run a java program, it 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) { // Use System.out.println() to print lines. @@ -60,7 +64,8 @@ public class LearnJava { */ // Declare a variable using int fooInt; - // Declare multiple variables of the same type , , + // Declare multiple variables of the same + // type , , int fooInt1, fooInt2, fooInt3; /* @@ -69,7 +74,8 @@ public class LearnJava { // Initialize a variable using = int fooInt = 1; - // Initialize multiple variables of same type with same value , , = + // Initialize multiple variables of same type with same + // value , , = int fooInt1, fooInt2, fooInt3; fooInt1 = fooInt2 = fooInt3 = 1; @@ -119,18 +125,15 @@ public class LearnJava { final double E; E = 2.71828; - // BigInteger - Immutable arbitrary-precision integers // // BigInteger is a data type that allows programmers to manipulate // integers longer than 64-bits. Integers are stored as an array of // of bytes and are manipulated using functions built into BigInteger // - // BigInteger can be initialized using an array of bytes or a string. - + // BigInteger can be initialized using an array of bytes or a string. BigInteger fooBigInteger = new BigInteger(fooByteArray); - // BigDecimal - Immutable, arbitrary-precision signed decimal number // // A BigDecimal takes two parts: an arbitrary precision integer @@ -142,16 +145,13 @@ public class LearnJava { // // BigDecimal can be initialized with an int, long, double or String // or by initializing the unscaled value (BigInteger) and scale (int). - BigDecimal fooBigDecimal = new BigDecimal(fooBigInteger, fooInt); // Be wary of the constructor that takes a float or double as // the inaccuracy of the float/double will be copied in BigDecimal. // Prefer the String constructor when you need an exact value. - BigDecimal tenCents = new BigDecimal("0.1"); - // Strings String fooString = "My String Is Here!"; @@ -184,7 +184,7 @@ public class LearnJava { intArray[1] = 1; System.out.println("intArray @ 1: " + intArray[1]); // => 1 - // Others to check out + // Other data types worth checking out // ArrayLists - Like arrays except more functionality is offered, and // the size is mutable. // LinkedLists - Implementation of doubly-linked list. All of the @@ -212,7 +212,7 @@ public class LearnJava { 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 (int/int returns an int) + System.out.println("1/2 = " + (i1 / i2)); // => 0 (int/int returns int) System.out.println("1/2 = " + (i1 / (double)i2)); // => 0.5 // Modulo @@ -242,7 +242,7 @@ public class LearnJava { | Bitwise inclusive OR */ - // Incrementations + // Increment operators int i = 0; System.out.println("\n->Inc/Dec-rementation"); // The ++ and -- operators increment and decrement by 1 respectively. @@ -314,7 +314,6 @@ public class LearnJava { // for each loop structure => for ( : ) // reads as: for each element in the iterable // note: the object type must match the element type of the iterable. - for (int bar : fooList) { System.out.println(bar); //Iterates 9 times and prints 1-9 on new lines @@ -364,7 +363,6 @@ public class LearnJava { String bar = (foo < 10) ? "A" : "B"; System.out.println(bar); // Prints A, because the statement is true - //////////////////////////////////////// // Converting Data Types And Typecasting //////////////////////////////////////// @@ -387,7 +385,6 @@ public class LearnJava { // 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 /////////////////////////////////////// @@ -409,7 +406,6 @@ public class LearnJava { // Double Brace Initialization // The Java Language has no syntax for how to create static Collections // in an easy way. Usually you end up in the following way: - private static final Set COUNTRIES = new HashSet(); static { validCodes.add("DENMARK"); @@ -420,7 +416,6 @@ public class LearnJava { // But there's a nifty way to achieve the same thing in an // easier way, by using something that is called Double Brace // Initialization. - private static final Set COUNTRIES = new HashSet() {{ add("DENMARK"); add("SWEDEN"); @@ -436,11 +431,9 @@ public class LearnJava { } // End main method } // End LearnJava class - // You can include other, non-public outer-level classes in a .java file, // but it is not good practice. Instead split classes into separate files. - // Class Declaration Syntax: // class { // // data fields, constructors, functions all inside. @@ -454,7 +447,6 @@ class Bicycle { 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 - static String className; // Static class variable // Static block @@ -476,7 +468,6 @@ class Bicycle { speed = 5; name = "Bontrager"; } - // This is a constructor that takes arguments public Bicycle(int startCadence, int startSpeed, int startGear, String name) { @@ -501,23 +492,18 @@ class Bicycle { 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(String newName) { name = newName; } - public String getName() { return name; } @@ -566,10 +552,8 @@ public interface Digestible { public void digest(); } - // 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 public void eat() { // ... @@ -585,7 +569,6 @@ public class Fruit implements Edible, Digestible { // interfaces. For example: public class ExampleClass extends ExampleClassParent implements InterfaceOne, InterfaceTwo { - @Override public void InterfaceOneMethod() { } @@ -604,14 +587,13 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne, // // Method declarations // } -// Marking a class as abstract means that it contains abstract methods that must -// be defined in a child class. Similar to interfaces, abstract classes cannot -// be instantiated, but instead must be extended and the abstract methods -// defined. Different from interfaces, abstract classes can contain a mixture of +// Marking a class as abstract means that it contains abstract methods that +// must be defined in a child class. Similar to interfaces, abstract classes +// cannot be instantiated, but instead must be extended and the abstract +// methods defined. Different from interfaces, abstract classes can contain a // 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. - +// mixture of 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 void makeSound(); @@ -656,7 +638,7 @@ class Dog extends Animal // @Override annotation here, since java doesn't allow // overriding of static methods. // What is happening here is called METHOD HIDING. - // Check out this awesome SO post: http://stackoverflow.com/questions/16313649/ + // Check out this SO post: http://stackoverflow.com/questions/16313649/ public static void main(String[] args) { Dog pluto = new Dog(); @@ -695,33 +677,29 @@ public abstract class Mammal() // Final Method Syntax: // final () - // Final methods, like, final classes cannot be overridden by a child class, - // and are therefore the final implementation of the method. + // 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; } } - // Enum Type // // An enum type is a special data type that enables for a variable to be a set -// of predefined constants. The variable must be equal to one of the values that -// have been predefined for it. Because they are constants, the names of an enum -// type's fields are in uppercase letters. In the Java programming language, you -// define an enum type by using the enum keyword. For example, you would specify -// a days-of-the-week enum type as: - +// of predefined constants. The variable must be equal to one of the values +// that have been predefined for it. Because they are constants, the names of +// an enum type's fields are in uppercase letters. In the Java programming +// language, you define an enum type by using the enum keyword. For example, +// you would specify a days-of-the-week enum type as: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } // We can use our enum Day like that: - public class EnumTest { - // Variable Enum Day day; @@ -734,16 +712,13 @@ public class EnumTest { case MONDAY: System.out.println("Mondays are bad."); break; - case FRIDAY: System.out.println("Fridays are better."); - break; - + break; case SATURDAY: case SUNDAY: System.out.println("Weekends are best."); - break; - + break; default: System.out.println("Midweek days are so-so."); break; @@ -793,7 +768,6 @@ The links provided here below are just to get an understanding of the topic, fee * [Codingbat.com](http://codingbat.com/java) - **Books**: * [Head First Java](http://www.headfirstlabs.com/books/hfjava/) @@ -802,4 +776,4 @@ The links provided here below are just to get an understanding of the topic, fee * [Objects First with Java](http://www.amazon.com/Objects-First-Java-Practical-Introduction/dp/0132492660) -* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) +* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) \ No newline at end of file -- cgit v1.2.3 From 1cdfe9086d7084154b91f47d09f1234a51b162dd Mon Sep 17 00:00:00 2001 From: Divay Prakash Date: Sat, 12 Mar 2016 13:43:25 +0530 Subject: fixed --- java.html.markdown | 1 - 1 file changed, 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 946bfc17..48e6ec75 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -8,7 +8,6 @@ contributors: - ["Zachary Ferguson", "http://github.com/zfergus2"] - ["Cameron Schermerhorn", "http://github.com/cschermerhorn"] - ["Rachel Stiyer", "https://github.com/rstiyer"] - - ["Divay Prakash", "http://github.com/divayprakash"] filename: LearnJava.java --- -- cgit v1.2.3 From 898dcda0f2be31ed3ee232a623d854e63c373082 Mon Sep 17 00:00:00 2001 From: Justin Tervay Date: Tue, 19 Apr 2016 12:28:31 -0400 Subject: Fixed typo(s) in Java (EN) --- java.html.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 48e6ec75..ed7e4f53 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -407,9 +407,9 @@ public class LearnJava { // in an easy way. Usually you end up in the following way: private static final Set COUNTRIES = new HashSet(); static { - validCodes.add("DENMARK"); - validCodes.add("SWEDEN"); - validCodes.add("FINLAND"); + COUNTRIES.add("DENMARK"); + COUNTRIES.add("SWEDEN"); + COUNTRIES.add("FINLAND"); } // But there's a nifty way to achieve the same thing in an -- cgit v1.2.3 From f18a60dff4f1315001094a2041c6d51edcbb16ec Mon Sep 17 00:00:00 2001 From: Cameron Bernhardt Date: Sun, 1 May 2016 12:44:19 -0400 Subject: Update java.html.markdown --- java.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index ed7e4f53..a025bbba 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -734,7 +734,7 @@ public class EnumTest { // Enum types are much more powerful than we show above. // The enum body can include methods and other fields. -// You can se more at https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html +// You can see more at https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ``` @@ -775,4 +775,4 @@ The links provided here below are just to get an understanding of the topic, fee * [Objects First with Java](http://www.amazon.com/Objects-First-Java-Practical-Introduction/dp/0132492660) -* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) \ No newline at end of file +* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) -- cgit v1.2.3 From ebd74da99a73d9cbdba23285afc745a740a87e28 Mon Sep 17 00:00:00 2001 From: Harry Date: Sun, 26 Jun 2016 13:45:20 +0100 Subject: Added main attributes of javadocs. (#1850) --- java.html.markdown | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index a025bbba..fb0913f1 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -23,8 +23,17 @@ Multi-line comments look like this. */ /** -JavaDoc comments look like this. Used to describe the Class or various -attributes of a Class. + * JavaDoc comments look like this. Used to describe the Class or various + * attributes of a Class. + * Main attributes: + * + * @author Name (and contact information such as email) of author(s). + * @version Current version of the program. + * @since When this part of the program was first added. + * @param For describing the different parameters for a method. + * @return For describing what the method returns. + * @deprecated For showing the code is outdated or shouldn't be used. + * @see Links to another part of documentation. */ // Import ArrayList class inside of the java.util package -- cgit v1.2.3 From 7812b99ff8f649595a57ef86577c7567cd1c8166 Mon Sep 17 00:00:00 2001 From: ven Date: Tue, 28 Jun 2016 18:06:06 +0200 Subject: Manually merge #1780 fixes #1780 --- java.html.markdown | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index fb0913f1..f65c484e 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -8,6 +8,7 @@ contributors: - ["Zachary Ferguson", "http://github.com/zfergus2"] - ["Cameron Schermerhorn", "http://github.com/cschermerhorn"] - ["Rachel Stiyer", "https://github.com/rstiyer"] + - ["Michael Dähnert", "http://github.com/JaXt0r"] filename: LearnJava.java --- @@ -171,6 +172,29 @@ public class LearnJava { System.out.println(barString); System.out.println(bazString); + // String Building + // #1 - with plus operator + // That's the basic way to do it (optimized under the hood) + String plusConcatenated = "Strings can " + "be concatenated " + "via + operator."; + System.out.println(plusConcatenated); + // Output: Strings can be concatenated via + operator. + + // #2 - with StringBuilder + // This way doesn't create any intermediate strings. It just stores the string pieces, and ties them together + // when toString() is called. + // Hint: This class is not thread safe. A thread-safe alternative (with some impact on performance) is StringBuffer. + StringBuilder builderConcatenated = new StringBuilder(); + builderConcatenated.append("You "); + builderConcatenated.append("can use "); + builderConcatenated.append("the StringBuilder class."); + System.out.println(builderConcatenated.toString()); // only now is the string built + // Output: You can use the StringBuilder class. + + // #3 - with String formatter + // Another alternative way to create strings. Fast and readable. + String.format("%s may prefer %s.", "Or you", "String.format()"); + // Output: Or you may prefer String.format(). + // Arrays // The array size must be decided upon instantiation // The following formats work for declaring an array -- cgit v1.2.3 From b8e496eba15314e581c1280b1f55cd6e56740956 Mon Sep 17 00:00:00 2001 From: Nimit Shah Date: Fri, 8 Jul 2016 15:03:11 +0530 Subject: [Java/en] Adding a reference for treemap (#2300) * Adding a reference for treemap Adding reference for a treemap * Removing my name from the contributors list Removing my name from the contributors list as it requires a significant contribution to add my name to it. --- java.html.markdown | 3 +++ 1 file changed, 3 insertions(+) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index f65c484e..1f7d4115 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -232,6 +232,9 @@ public class LearnJava { // interface. This allows the execution time of basic // operations, such as get and insert element, to remain // constant even for large sets. + // TreeMap - This class is a sorted tree structure. It implements a red + // black tree and sorts the entries based on the key value or + // the comparator provided while creating the object /////////////////////////////////////// // Operators -- cgit v1.2.3 From 34456d988c627a58ce8fca141cfb488c6d7998d4 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Mon, 22 Aug 2016 06:06:57 +0800 Subject: java: In Java 8, interfaces can have default method. (#2337) --- java.html.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 1f7d4115..56bffd88 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -585,10 +585,14 @@ public interface Edible { public interface Digestible { public void digest(); + // In Java 8, interfaces can have default method. + // public void digest() { + // System.out.println("digesting ..."); + // } } // 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 public void eat() { // ... @@ -636,7 +640,7 @@ public abstract class Animal // Method can have a body 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. age = 30; } -- cgit v1.2.3 From 12c9b8daba15cf4950ae73f9813219d45bf373e8 Mon Sep 17 00:00:00 2001 From: prestonpeterson Date: Sat, 27 Aug 2016 01:03:37 -0700 Subject: Update java.html.markdown (#2346) --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 56bffd88..57c10390 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -566,7 +566,7 @@ class PennyFarthing extends Bicycle { // out: http://docs.oracle.com/javase/tutorial/java/annotations/ @Override public void setGear(int gear) { - gear = 0; + this.gear = 0; } } -- cgit v1.2.3 From c8fa53ca1fcb9445bd136390c8016bba879eaa92 Mon Sep 17 00:00:00 2001 From: Robert Rose Date: Mon, 10 Oct 2016 06:43:12 -0400 Subject: Added try-with-resources to Java docs (#2438) - Added documentation and sample code pertaining to try-with-resources to the Java documentation. - Converted all Oracle and GitHub http links to https. - Added my name to the contributors list since this is my second time contributing. - Special shoutout to @enkidevs for teaching me about try-with-resources. --- java.html.markdown | 70 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 22 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 57c10390..6487d862 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -1,20 +1,21 @@ --- language: java contributors: - - ["Jake Prather", "http://github.com/JakeHP"] - - ["Jakukyo Friel", "http://weakish.github.io"] - - ["Madison Dickson", "http://github.com/mix3d"] - - ["Simon Morgan", "http://sjm.io/"] - - ["Zachary Ferguson", "http://github.com/zfergus2"] - - ["Cameron Schermerhorn", "http://github.com/cschermerhorn"] + - ["Jake Prather", "https://github.com/JakeHP"] + - ["Jakukyo Friel", "https://weakish.github.io"] + - ["Madison Dickson", "https://github.com/mix3d"] + - ["Simon Morgan", "https://sjm.io/"] + - ["Zachary Ferguson", "https://github.com/zfergus2"] + - ["Cameron Schermerhorn", "https://github.com/cschermerhorn"] - ["Rachel Stiyer", "https://github.com/rstiyer"] - - ["Michael Dähnert", "http://github.com/JaXt0r"] + - ["Michael Dähnert", "https://github.com/JaXt0r"] + - ["Rob Rose", "https://github.com/RobRoseKnows"] 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/) +[Read more here.](https://docs.oracle.com/javase/tutorial/java/) ```java // Single-line comments start with // @@ -389,7 +390,32 @@ public class LearnJava { System.out.println("You answered " + myAnswer); break; } - + + + // Try-with-resources (Java 7+) + // Try-catch-finally statements work as expected in Java but in Java 7+ + // the try-with-resources statement is also available. Try-with-resources + // simplifies try-catch-finally statements be closing resources + // automatically. + + // In order to use a try-with-resources, include a an instance of a class + // in the try statement. The class must implement java.lang.AutoCloseable. + try(BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { + // You can attempt to do something that could throw an exception. + System.out.println(br.readLine()); + // In Java 7, the resource will always be closed, even if it throws + // an Exception. + } catch (Exception ex) { + //The resource will be closed before the catch statement executes. + System.out.println("readLine() failed."); + } + // No need for a finally statement in this case, the BufferedReader is + // already closed. This can be used to avoid certain edge cases where + // a finally statement might not be called. + // To learn more: + // https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html + + // Conditional Shorthand // You can use the '?' operator for quick assignments or logic forks. // Reads as "If (statement) is true, use , otherwise, use @@ -418,7 +444,7 @@ public class LearnJava { // 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 + // https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html /////////////////////////////////////// // Classes And Functions @@ -784,22 +810,22 @@ The links provided here below are just to get an understanding of the topic, fee **Official Oracle Guides**: -* [Java Tutorial Trail from Sun / Oracle](http://docs.oracle.com/javase/tutorial/index.html) +* [Java Tutorial Trail from Sun / Oracle](https://docs.oracle.com/javase/tutorial/index.html) -* [Java Access level modifiers](http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) +* [Java Access level modifiers](https://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) +* [Object-Oriented Programming Concepts](https://docs.oracle.com/javase/tutorial/java/concepts/index.html): + * [Inheritance](https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) + * [Polymorphism](https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) + * [Abstraction](https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) -* [Exceptions](http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html) +* [Exceptions](https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html) -* [Interfaces](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html) +* [Interfaces](https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html) -* [Generics](http://docs.oracle.com/javase/tutorial/java/generics/index.html) +* [Generics](https://docs.oracle.com/javase/tutorial/java/generics/index.html) -* [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconvtoc-136057.html) +* [Java Code Conventions](https://www.oracle.com/technetwork/java/codeconvtoc-136057.html) **Online Practice and Tutorials** @@ -813,6 +839,6 @@ The links provided here below are just to get an understanding of the topic, fee * [Thinking in Java](http://www.mindview.net/Books/TIJ/) -* [Objects First with Java](http://www.amazon.com/Objects-First-Java-Practical-Introduction/dp/0132492660) +* [Objects First with Java](https://www.amazon.com/Objects-First-Java-Practical-Introduction/dp/0132492660) -* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) +* [Java The Complete Reference](https://www.amazon.com/gp/product/0071606300) -- cgit v1.2.3 From bb504b97ca06322cc131105647943f0140d6e313 Mon Sep 17 00:00:00 2001 From: Andrew Gallasch Date: Thu, 27 Oct 2016 09:50:16 +1030 Subject: Add StringBuilder usage tip --- java.html.markdown | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 6487d862..6753b358 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -190,7 +190,20 @@ public class LearnJava { builderConcatenated.append("the StringBuilder class."); System.out.println(builderConcatenated.toString()); // only now is the string built // Output: You can use the StringBuilder class. - + + // StringBuilder is efficient when the fully constructed String is not required until the end of some processing. + StringBuilder stringBuilder = new StringBuilder(); + String inefficientString = ""; + for(int i = 0 ; i < 10; i++){ + stringBuilder.append(i).append(" "); + inefficientString += i + " "; + } + System.out.println(inefficientString); + System.out.println(stringBuilder.toString()); + // inefficientString requires a lot more work to produce, as it generates a String on every loop iteration. + // Simple concatenation with + is compiled to a StringBuilder and toString() + // Avoid string concatenation in loops. + // #3 - with String formatter // Another alternative way to create strings. Fast and readable. String.format("%s may prefer %s.", "Or you", "String.format()"); -- cgit v1.2.3 From 2040dfc83ee42ec93fa73c112d6b6be2a627bc19 Mon Sep 17 00:00:00 2001 From: Andrew Gallasch Date: Thu, 27 Oct 2016 23:22:49 +1030 Subject: Rename duplicate fooInt --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 6487d862..340aae80 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -102,7 +102,7 @@ public class LearnJava { // Integer - 32-bit signed two's complement integer // (-2,147,483,648 <= int <= 2,147,483,647) - int fooInt = 1; + int bazInt = 1; // Long - 64-bit signed two's complement integer // (-9,223,372,036,854,775,808 <= long <= 9,223,372,036,854,775,807) -- cgit v1.2.3 From e01c16e568697161297628a4e219a509b3e3fd21 Mon Sep 17 00:00:00 2001 From: Andrew Gallasch Date: Thu, 27 Oct 2016 23:38:44 +1030 Subject: Update java.html.markdown --- java.html.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 340aae80..13c75ffe 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -95,6 +95,12 @@ public class LearnJava { // Byte - 8-bit signed two's complement integer // (-128 <= byte <= 127) byte fooByte = 100; + + // If you would like to interpret a byte as an unsigned integer + // then this simple operation can help + int unsignedIntLessThan256 = 0xff & fooByte; + // this contrasts a cast which can be negative. + int signedInt = (int) fooByte; // Short - 16-bit signed two's complement integer // (-32,768 <= short <= 32,767) @@ -110,7 +116,9 @@ public class LearnJava { // 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. + // Note: byte, short, int and long are signed. They can have positive and negative values. + // There are no unsigned variants. + // char, however, is 16-bit unsigned. // Float - Single-precision 32-bit IEEE 754 Floating Point // 2^-149 <= float <= (2-2^-23) * 2^127 -- cgit v1.2.3 From a98cc99ef7601ae6e27960563f5b8b73953b25c7 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 31 Oct 2016 00:31:48 +0100 Subject: Adding new Java 8 features (#2543) * Added info on Java generics in Spanish. * Adding new Java 8 features * Removing the section on Generics for the ES-es version --- java.html.markdown | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 4fdd06cc..12de0c73 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -848,6 +848,10 @@ The links provided here below are just to get an understanding of the topic, fee * [Java Code Conventions](https://www.oracle.com/technetwork/java/codeconvtoc-136057.html) +* New features in Java 8: + * [Lambda expressions (functional programming)](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html) + * [Date and time API (java.time package)](http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html) + **Online Practice and Tutorials** * [Learneroo.com - Learn Java](http://www.learneroo.com) -- cgit v1.2.3 From f2a5bc8a91ab7da393a1c8548956d6e858bf2c11 Mon Sep 17 00:00:00 2001 From: Sean Nam Date: Tue, 3 Jan 2017 00:48:44 -0800 Subject: Updated Java (en-us) to include Input using Scanner and System.in --- java.html.markdown | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 12de0c73..9bb036cd 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -10,6 +10,7 @@ contributors: - ["Rachel Stiyer", "https://github.com/rstiyer"] - ["Michael Dähnert", "https://github.com/JaXt0r"] - ["Rob Rose", "https://github.com/RobRoseKnows"] + - ["Sean Nam", "https://github.com/seannam"] filename: LearnJava.java --- @@ -51,6 +52,14 @@ public class LearnJava { // point. public static void main (String[] args) { + /////////////////////////////////////// + // Input/Output + /////////////////////////////////////// + + /* + * Ouput + */ + // Use System.out.println() to print lines. System.out.println("Hello World!"); System.out.println( @@ -65,6 +74,32 @@ public class LearnJava { // Use System.out.printf() for easy formatted printing. System.out.printf("pi = %.5f", Math.PI); // => pi = 3.14159 + /* + * Input + */ + + // use Scanner to read input + // must import java.util.Scanner; + Scanner scanner = new Scanner(System.in); + + // read string input + String name = scanner.next(); + + // read byte input + byte numByte = scanner.nextByte(); + + // read int input + int numInt = scanner.nextInt(); + + // read long input + float numFloat - scanner.nextFloat(); + + // read double input + double numDouble = scanner.nextDouble(); + + // read boolean input + boolean bool = scanner.nextBoolean(); + /////////////////////////////////////// // Variables /////////////////////////////////////// -- cgit v1.2.3 From 3bfb74042f1bb682e729fc79d017cdbb3c8024ba Mon Sep 17 00:00:00 2001 From: Sean Nam Date: Wed, 8 Feb 2017 23:36:49 -0800 Subject: Changed indentation to 4 spaces --- java.html.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 9bb036cd..c92c09dc 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -52,13 +52,13 @@ public class LearnJava { // point. public static void main (String[] args) { - /////////////////////////////////////// - // Input/Output - /////////////////////////////////////// + /////////////////////////////////////// + // Input/Output + /////////////////////////////////////// - /* - * Ouput - */ + /* + * Ouput + */ // Use System.out.println() to print lines. System.out.println("Hello World!"); -- cgit v1.2.3 From 52ff8f41e4ef9de074081b5ef22c5dfa4dd86f0a Mon Sep 17 00:00:00 2001 From: Sean Nam Date: Wed, 8 Feb 2017 23:39:49 -0800 Subject: Changed more indentation to 4 spaces --- java.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index c92c09dc..7f224e17 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -75,8 +75,8 @@ public class LearnJava { System.out.printf("pi = %.5f", Math.PI); // => pi = 3.14159 /* - * Input - */ + * Input + */ // use Scanner to read input // must import java.util.Scanner; -- cgit v1.2.3 From e800bf6f3dca32ded6d70c9fb468f5cbc373ee0b Mon Sep 17 00:00:00 2001 From: Andrew Gallasch Date: Fri, 10 Feb 2017 01:53:20 +1030 Subject: Remove duplicate int declarations (#2521) Duplicate declarations break the build --- java.html.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 12de0c73..772dc25d 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -83,11 +83,11 @@ public class LearnJava { */ // Initialize a variable using = - int fooInt = 1; + int barInt = 1; // Initialize multiple variables of same type with same // value , , = - int fooInt1, fooInt2, fooInt3; - fooInt1 = fooInt2 = fooInt3 = 1; + int barInt1, barInt2, barInt3; + barInt1 = barInt2 = barInt3 = 1; /* * Variable types -- cgit v1.2.3 From 2c2c6e7b15b2dc248ff5c397e235f5c94823c567 Mon Sep 17 00:00:00 2001 From: Sean Nam Date: Sun, 12 Mar 2017 15:26:04 -0700 Subject: Fixed indentation in the java file --- java.html.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index f28e953a..a7060317 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -56,9 +56,9 @@ public class LearnJava { // Input/Output /////////////////////////////////////// - /* - * Ouput - */ + /* + * Ouput + */ // Use System.out.println() to print lines. System.out.println("Hello World!"); @@ -75,8 +75,8 @@ public class LearnJava { System.out.printf("pi = %.5f", Math.PI); // => pi = 3.14159 /* - * Input - */ + * Input + */ // use Scanner to read input // must import java.util.Scanner; -- cgit v1.2.3 From e48049b7922b80829fd13636a5f7e49b60ce76e2 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 23 Mar 2017 11:58:16 -0700 Subject: Replace tabs with 4 spaces in java --- java.html.markdown | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index a7060317..3ec938ef 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -30,13 +30,13 @@ Multi-line comments look like this. * attributes of a Class. * Main attributes: * - * @author Name (and contact information such as email) of author(s). - * @version Current version of the program. - * @since When this part of the program was first added. - * @param For describing the different parameters for a method. - * @return For describing what the method returns. + * @author Name (and contact information such as email) of author(s). + * @version Current version of the program. + * @since When this part of the program was first added. + * @param For describing the different parameters for a method. + * @return For describing what the method returns. * @deprecated For showing the code is outdated or shouldn't be used. - * @see Links to another part of documentation. + * @see Links to another part of documentation. */ // Import ArrayList class inside of the java.util package @@ -56,9 +56,9 @@ public class LearnJava { // Input/Output /////////////////////////////////////// - /* - * Ouput - */ + /* + * Ouput + */ // Use System.out.println() to print lines. System.out.println("Hello World!"); @@ -78,27 +78,27 @@ public class LearnJava { * Input */ - // use Scanner to read input - // must import java.util.Scanner; - Scanner scanner = new Scanner(System.in); + // use Scanner to read input + // must import java.util.Scanner; + Scanner scanner = new Scanner(System.in); - // read string input - String name = scanner.next(); + // read string input + String name = scanner.next(); - // read byte input - byte numByte = scanner.nextByte(); + // read byte input + byte numByte = scanner.nextByte(); - // read int input - int numInt = scanner.nextInt(); + // read int input + int numInt = scanner.nextInt(); - // read long input - float numFloat - scanner.nextFloat(); + // read long input + float numFloat - scanner.nextFloat(); - // read double input - double numDouble = scanner.nextDouble(); + // read double input + double numDouble = scanner.nextDouble(); - // read boolean input - boolean bool = scanner.nextBoolean(); + // read boolean input + boolean bool = scanner.nextBoolean(); /////////////////////////////////////// // Variables @@ -752,7 +752,7 @@ class Dog extends Animal public void makeSound() { 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 -- cgit v1.2.3 From 064cbde932f135b37ddb615733a0d0e1940e78a9 Mon Sep 17 00:00:00 2001 From: Felipe Cury Date: Thu, 18 May 2017 07:40:42 -0300 Subject: [java/en-us] Fix typo (#2708) --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 3ec938ef..4a3e6312 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -451,7 +451,7 @@ public class LearnJava { // Try-with-resources (Java 7+) // Try-catch-finally statements work as expected in Java but in Java 7+ // the try-with-resources statement is also available. Try-with-resources - // simplifies try-catch-finally statements be closing resources + // simplifies try-catch-finally statements by closing resources // automatically. // In order to use a try-with-resources, include a an instance of a class -- cgit v1.2.3 From bb1d9c2a9e098d11ccc1f6dadcf46400997d1cbb Mon Sep 17 00:00:00 2001 From: Yerkebulan Tulibergenov Date: Wed, 31 May 2017 00:58:51 -0700 Subject: [Java/en]Fix small typo in Java English tutorial (#2743) --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 4a3e6312..356ca5f1 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -92,7 +92,7 @@ public class LearnJava { int numInt = scanner.nextInt(); // read long input - float numFloat - scanner.nextFloat(); + float numFloat = scanner.nextFloat(); // read double input double numDouble = scanner.nextDouble(); -- cgit v1.2.3 From 846abc4d9a6764c63fccd245b917b92f71cf00ce Mon Sep 17 00:00:00 2001 From: Kidhanis De Jesus Date: Thu, 8 Jun 2017 13:29:56 -0400 Subject: [en/java] Modify the Animal abstract class (#2751) * Fix word order in class documentation * Change access level modifier of age variable The comment inside eat() mentions that the variable is private. Furthermore, there would be no error if the variable were used inside Dog given the current access level. --- java.html.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 356ca5f1..174177c1 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -712,8 +712,8 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne, // must be defined in a child class. Similar to interfaces, abstract classes // cannot be instantiated, but instead must be extended and the abstract // methods defined. Different from interfaces, abstract classes can contain a -// concrete and abstract methods. Methods in an interface cannot have a body, -// mixture of unless the method is static, and variables are final by default, +// 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 { @@ -730,7 +730,7 @@ public abstract class Animal // No need to initialize, however in an interface // a variable is implicitly final and hence has // to be initialized. - protected int age; + private int age; public void printAge() { -- cgit v1.2.3 From fc58f4d120a3bd529605ac7a637eae1422c27812 Mon Sep 17 00:00:00 2001 From: Mathieu Gemard Date: Sun, 18 Jun 2017 14:26:36 +0200 Subject: [java/en] typo (#2763) --- java.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 174177c1..e8c15234 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -454,7 +454,7 @@ public class LearnJava { // simplifies try-catch-finally statements by closing resources // automatically. - // In order to use a try-with-resources, include a an instance of a class + // In order to use a try-with-resources, include an instance of a class // in the try statement. The class must implement java.lang.AutoCloseable. try(BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { // You can attempt to do something that could throw an exception. -- cgit v1.2.3 From 4a359c303fa261c21aa51b4a29927da751139511 Mon Sep 17 00:00:00 2001 From: Mathieu Gemard Date: Sun, 9 Jul 2017 18:39:21 +0200 Subject: [java/en] few changes (#2788) --- java.html.markdown | 121 ++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 66 deletions(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index e8c15234..9c60eabc 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -48,9 +48,9 @@ import java.security.*; // as the file. public class LearnJava { - // In order to run a java program, it must have a main method as an entry + // 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) { /////////////////////////////////////// // Input/Output @@ -109,7 +109,7 @@ public class LearnJava { */ // Declare a variable using int fooInt; - // Declare multiple variables of the same + // Declare multiple variables of the same // type , , int fooInt1, fooInt2, fooInt3; @@ -119,8 +119,9 @@ public class LearnJava { // Initialize a variable using = int barInt = 1; - // Initialize multiple variables of same type with same - // value , , = + // Initialize multiple variables of same type with same + // value , , + // = = = int barInt1, barInt2, barInt3; barInt1 = barInt2 = barInt3 = 1; @@ -130,7 +131,7 @@ public class LearnJava { // Byte - 8-bit signed two's complement integer // (-128 <= byte <= 127) byte fooByte = 100; - + // If you would like to interpret a byte as an unsigned integer // then this simple operation can help int unsignedIntLessThan256 = 0xff & fooByte; @@ -184,12 +185,12 @@ public class LearnJava { // integers longer than 64-bits. Integers are stored as an array of // of bytes and are manipulated using functions built into BigInteger // - // BigInteger can be initialized using an array of bytes or a string. + // BigInteger can be initialized using an array of bytes or a string. BigInteger fooBigInteger = new BigInteger(fooByteArray); // BigDecimal - Immutable, arbitrary-precision signed decimal number // - // A BigDecimal takes two parts: an arbitrary precision integer + // A BigDecimal takes two parts: an arbitrary precision integer // unscaled value and a 32-bit integer scale // // BigDecimal allows the programmer complete control over decimal @@ -199,7 +200,7 @@ public class LearnJava { // BigDecimal can be initialized with an int, long, double or String // or by initializing the unscaled value (BigInteger) and scale (int). BigDecimal fooBigDecimal = new BigDecimal(fooBigInteger, fooInt); - + // Be wary of the constructor that takes a float or double as // the inaccuracy of the float/double will be copied in BigDecimal. // Prefer the String constructor when you need an exact value. @@ -231,13 +232,13 @@ public class LearnJava { builderConcatenated.append("You "); builderConcatenated.append("can use "); builderConcatenated.append("the StringBuilder class."); - System.out.println(builderConcatenated.toString()); // only now is the string built + System.out.println(builderConcatenated.toString()); // only now is the string built // Output: You can use the StringBuilder class. - + // StringBuilder is efficient when the fully constructed String is not required until the end of some processing. StringBuilder stringBuilder = new StringBuilder(); String inefficientString = ""; - for(int i = 0 ; i < 10; i++){ + for (int i = 0 ; i < 10; i++) { stringBuilder.append(i).append(" "); inefficientString += i + " "; } @@ -246,12 +247,12 @@ public class LearnJava { // inefficientString requires a lot more work to produce, as it generates a String on every loop iteration. // Simple concatenation with + is compiled to a StringBuilder and toString() // Avoid string concatenation in loops. - + // #3 - with String formatter // Another alternative way to create strings. Fast and readable. String.format("%s may prefer %s.", "Or you", "String.format()"); // Output: Or you may prefer String.format(). - + // Arrays // The array size must be decided upon instantiation // The following formats work for declaring an array @@ -387,7 +388,7 @@ public class LearnJava { // Iterated 10 times, fooFor 0->9 } System.out.println("fooFor Value: " + fooFor); - + // Nested For Loop Exit with Label outer: for (int i = 0; i < 10; i++) { @@ -398,7 +399,7 @@ public class LearnJava { } } } - + // For Each Loop // The for loop is also able to iterate over arrays as well as objects // that implement the Iterable interface. @@ -416,6 +417,7 @@ public class LearnJava { // 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. + // Starting in Java 7 and above, we can also use the String type. int month = 3; String monthString; switch (month) { @@ -429,38 +431,21 @@ public class LearnJava { break; } System.out.println("Switch Case Result: " + monthString); - - // Starting in Java 7 and above, switching Strings works like this: - String myAnswer = "maybe"; - switch(myAnswer) { - case "yes": - System.out.println("You answered yes."); - break; - case "no": - System.out.println("You answered no."); - break; - case "maybe": - System.out.println("You answered maybe."); - break; - default: - System.out.println("You answered " + myAnswer); - break; - } - - + + // Try-with-resources (Java 7+) // Try-catch-finally statements work as expected in Java but in Java 7+ // the try-with-resources statement is also available. Try-with-resources // simplifies try-catch-finally statements by closing resources // automatically. - + // In order to use a try-with-resources, include an instance of a class // in the try statement. The class must implement java.lang.AutoCloseable. - try(BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { + try (BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { // You can attempt to do something that could throw an exception. System.out.println(br.readLine()); // In Java 7, the resource will always be closed, even if it throws - // an Exception. + // an Exception. } catch (Exception ex) { //The resource will be closed before the catch statement executes. System.out.println("readLine() failed."); @@ -470,8 +455,8 @@ public class LearnJava { // a finally statement might not be called. // To learn more: // https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html - - + + // Conditional Shorthand // You can use the '?' operator for quick assignments or logic forks. // Reads as "If (statement) is true, use , otherwise, use @@ -481,7 +466,7 @@ public class LearnJava { System.out.println(bar); // Prints A, because the statement is true //////////////////////////////////////// - // Converting Data Types And Typecasting + // Converting Data Types //////////////////////////////////////// // Converting data @@ -497,11 +482,6 @@ public class LearnJava { // 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: - // https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html - /////////////////////////////////////// // Classes And Functions /////////////////////////////////////// @@ -566,10 +546,10 @@ class Bicycle { String name; // default: Only accessible from within this package static String className; // Static class variable - // Static block + // Static block // Java has no implementation of static constructors, but - // has a static block that can be used to initialize class variables - // (static variables). + // has a static block that can be used to initialize class variables + // (static variables). // This block will be called when the class is loaded. static { className = "Bicycle"; @@ -652,6 +632,14 @@ class PennyFarthing extends Bicycle { } } +// Object casting +// Since the PennyFarthing class is extending the Bicycle class, we can say +// a PennyFarthing is a Bicycle and write : +// Bicycle bicycle = new PennyFarthing(); +// This is called object casting where an object is taken for another one. There +// are lots of details and deals with some more intermediate concepts here: +// https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html + // Interfaces // Interface declaration syntax // interface extends { @@ -667,10 +655,10 @@ public interface Edible { public interface Digestible { public void digest(); - // In Java 8, interfaces can have default method. - // public void digest() { - // System.out.println("digesting ..."); - // } + // Since Java 8, interfaces can have default method. + public void defaultMethod() { + System.out.println("Hi from default method ..."); + } } // We can now create a class that implements both of these interfaces. @@ -703,14 +691,15 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne, // Abstract Classes // Abstract Class declaration syntax -// abstract extends { +// abstract class extends +// { // // Constants and variables // // Method declarations // } -// Marking a class as abstract means that it contains abstract methods that -// must be defined in a child class. Similar to interfaces, abstract classes -// cannot be instantiated, but instead must be extended and the abstract +// Marking a class as abstract means that it contains at least one abstract +// method that must be defined in a child class. Similar to interfaces, abstract +// classes cannot be instantiated, but instead must be extended and the abstract // methods 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, @@ -734,7 +723,7 @@ public abstract class Animal public void printAge() { - System.out.println(age); + System.out.println(age); } // Abstract classes can have main function. @@ -816,18 +805,18 @@ public abstract class Mammal() // you would specify a days-of-the-week enum type as: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, - THURSDAY, FRIDAY, SATURDAY + THURSDAY, FRIDAY, SATURDAY } // We can use our enum Day like that: public class EnumTest { // Variable Enum Day day; - + public EnumTest(Day day) { this.day = day; } - + public void tellItLikeItIs() { switch (day) { case MONDAY: @@ -835,17 +824,17 @@ public class EnumTest { break; case FRIDAY: System.out.println("Fridays are better."); - break; - case SATURDAY: + break; + case SATURDAY: case SUNDAY: System.out.println("Weekends are best."); - break; + break; default: System.out.println("Midweek days are so-so."); break; } } - + public static void main(String[] args) { EnumTest firstDay = new EnumTest(Day.MONDAY); firstDay.tellItLikeItIs(); // => Mondays are bad. @@ -854,7 +843,7 @@ public class EnumTest { } } -// Enum types are much more powerful than we show above. +// Enum types are much more powerful than we show above. // The enum body can include methods and other fields. // You can see more at https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html -- cgit v1.2.3 From e9bb96aaa1d404509bb935ba1b95d34b5e74fd6c Mon Sep 17 00:00:00 2001 From: Mathieu Gemard Date: Tue, 11 Jul 2017 11:08:23 +0200 Subject: [java/en] adding an exemple to ternary operator ?: (#2794) We could think we always had to use = with ?: --- java.html.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'java.html.markdown') diff --git a/java.html.markdown b/java.html.markdown index 9c60eabc..a27a68ca 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -463,7 +463,11 @@ public class LearnJava { // " int foo = 5; String bar = (foo < 10) ? "A" : "B"; - System.out.println(bar); // Prints A, because the statement is true + System.out.println("bar : " + bar); // Prints "bar : A", because the + // statement is true. + // Or simply + System.out.println("bar : " + (foo < 10 ? "A" : "B")); + //////////////////////////////////////// // Converting Data Types -- cgit v1.2.3