// A Single line comment /* A * Multiple line * comment */ // You can import libraries with helpful methods using import import java.util.Scanner; import java.util.*; // A class defines the attributes (fields) and capabilities (methods) of a real world object public class Animal { // static means this number is shared by all objects of type Animal // final means that this value can't be changed public static final double FAVNUMBER = 1.6180; // Variables (Fields) start with a letter, underscore or $ // Private fields can only be accessed by other methods in the class // Strings are objects that hold a series of characters private String name; // An integer can hold values from -2 ^ 31 to (2 ^ 31) -1 private int weight; // Booleans have a value of true or false private boolean hasOwner = false; // Bytes can hold the values between -128 to 127 private byte age; // Longs can hold the values between -2 ^ 63 to (2 ^ 63) - 1 private long uniqueID; // Chars are unsigned ints that represent UTF-16 codes from 0 to 65,535 private char favoriteChar; // Doubles are 64 bit IEEE 754 floating points with decimal values private double speed; // Floats are 32 bit IEEE 754 floating points with decimal values private float height; // Static variables have the same value for every object // Any variable or function that doesn't make sense for an object to have should be made static // protected means that this value can only be accessed by other code in the same package // or by subclasses in other packages protected static int numberOfAnimals = 0; // A Scanner object allows you to except user input from the keyboard static Scanner userInput = new Scanner(System.in); // Any time an Animal object is created this function called the constructor is called // to initialize the object public Animal(){ // Shorthand for numberOfAnimals = numberOfAnimals + 1; numberOfAnimals++; int sumOfNumbers = 5 + 1; System.out.println("5 + 1 = " + sumOfNumbers); int diffOfNumbers = 5 - 1; System.out.println("5 - 1 = " + diffOfNumbers); int multOfNumbers = 5 * 1; System.out.println("5 * 1 = " + multOfNumbers); int divOfNumbers = 5 / 1; System.out.println("5 / 1 = " + divOfNumbers); int modOfNumbers = 5 % 3; System.out.println("5 % 3 = " + modOfNumbers); // print is used to print to the screen, but it doesn't end with a newline \n System.out.print("Enter the name: \n"); // The if statement performs the actions between the { } if the condition is true // userInput.hasNextLine() returns true if a String was entered in the keyboard if(userInput.hasNextLine()){ // this provides you with a way to refer to the object itself // userInput.nextLine() returns the value that was entered at the keyboard this.setName(userInput.nextLine()); // hasNextInt, hasNextFloat, hasNextDouble, hasNextBoolean, hasNextByte, // hasNextLong, nextInt, nextDouble, nextFloat, nextBoolean, etc. } this.setFavoriteChar(); this.setUniqueID(); } // It is good to use getter and setter methods so that you can protect your data // In Eclipse Right Click -> Source -> Generate Getter and Setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public boolean isHasOwner() { return hasOwner; } public void setHasOwner(boolean hasOwner) { this.hasOwner = hasOwner; } public byte getAge() { return age; } public void setAge(byte age) { this.age = age; } public long getUniqueID() { return uniqueID; } // Method overloading allows you to accept different input with the same method name public void setUniqueID(long uniqueID) { this.uniqueID = uniqueID; System.out.println("Unique ID set to: " + this.uniqueID); } public void setUniqueID() { long minNumber = 1; long maxNumber = 1000000; // Generates a random number between 1 and 1000000 this.uniqueID = minNumber + (long)(Math.random() * ((maxNumber - minNumber) + 1)); // You can cast from one primitive value into another by putting what you want between ( ) // (byte) (short) (long) (double) // (float), (boolean) & (char) don't work. // (char) stays as a number instead of a character // You convert from a primitive to a string like this String stringNumber = Long.toString(maxNumber); // Byte.toString(bigByte); Short.toString(bigShort); Integer.toString(bigInt); // Float.toString(bigFloat); Double.toString(bigDouble); Boolean.toString(trueOrFalse); // You convert from a String to a primitive like this int numberString = Integer.parseInt(stringNumber); // parseShort, parseLong, parseByte, parseFloat, parseDouble, parseBoolean System.out.println("Unique ID set to: " + this.uniqueID); } public char getFavoriteChar() { return favoriteChar; } public void setFavoriteChar(char favoriteChar) { this.favoriteChar = favoriteChar; } public void setFavoriteChar() { int randomNumber = (int) (Math.random() * 126) + 1; this.favoriteChar = (char) randomNumber; // if then else statement // > < == != >= <= if(randomNumber == 32){ System.out.println("Favorite character set to: Space"); } else if(randomNumber == 10){ System.out.println("Favorite character set to: New Line"); } else { System.out.println("Favorite character set to: " + this.favoriteChar); } // Logical operators // ! : Converts the boolean value to its right to its opposite form ie. true to false // & : Returns true if boolean value on the right and left are both true (Always evaluates both boolean values) // && : Returns true if boolean value on the right and left are both true (Stops evaluating after first false) // | : Returns true if either boolean value on the right or left are true (Always evaluates both boolean values) // || : Returns true if either boolean value on the right or left are true (Stops evaluating after first true) // ^ : Returns true if there is 1 true and 1 false boolean value on the right or left if((randomNumber > 97) && (randomNumber < 122)){ System.out.println("Favorite character is a lowercase letter"); } if(((randomNumber > 97) && (randomNumber < 122)) || ((randomNumber > 64) && (randomNumber < 91))){ System.out.println("Favorite character is a letter"); } if(!false){ System.out.println("I turned false to " + !false); } // The ternary operator assigns one or another value based on a condition int whichIsBigger = (50 > randomNumber) ? 50 : randomNumber; System.out.println("The biggest number is " + whichIsBigger); // The switch statement is great for when you have a limited number of values // and the values are int, byte, or char unless you have Java 7 which allows Strings switch(randomNumber){ case 8 : System.out.println("Favorite character set to: Backspace"); break; case 9 : System.out.println("Favorite character set to: Horizontal Tab"); break; case 10 : case 11 : case 12 : System.out.println("Favorite character set to: Something else weird"); break; default : System.out.println("Favorite character set to: " + this.favoriteChar); break; } } public double getSpeed() { return speed; } public void setSpeed(double speed) { this.speed = speed; } public float getHeight() { return height; } public void setHeight(float height) { this.height = height; } protected static int getNumberOfAnimals() { return numberOfAnimals; } // Since numberOfAnimals is Static you must set the value using the class name public void setNumberOfAnimals(int numberOfAnimals) { Animal.numberOfAnimals = numberOfAnimals; } protected static void countTo(int startingNumber){ for(int i = startingNumber; i <= 100; i++){ // continue is used to skip 1 iteration of the loop if(i == 90) continue; System.out.println(i); } } protected static String printNumbers(int maxNumbers){ int i = 1; while(i < (maxNumbers / 2)){ System.out.println(i); i++; // This isn't needed, but if you want to jump out of a loop use break if(i == (maxNumbers/2)) break; } Animal.countTo(maxNumbers/2); // You can return a value like this return "End of printNumbers()"; } protected static void guessMyNumber(){ int number; // Do while loops are used when you want to execute the code in the braces at least once do { System.out.println("Guess my number up to 100"); // If what they entered isn't a number send a warning while(!userInput.hasNextInt()){ String numberEntered = userInput.next(); System.out.printf("%s is not a number\n", numberEntered); } number = userInput.nextInt(); }while(number != 50); System.out.println("Yes the number was 50"); } // This will be used to demonstrate polymorphism public String makeSound(){ return "Grrrr"; } // With polymorphism we can refer to any Animal and yet use overridden methods // in the specific animal type public static void speakAnimal(Animal randAnimal){ System.out.println("Animal says " + randAnimal.makeSound()); } // public allows other classes to use this method // static means that only a class can call for this to execute // void means it doesn't return a value when it finishes executing // This method can except Strings that can be stored in the String array args when it is executed public static void main(String[] args){ Animal theDog = new Animal(); System.out.println("The animal is named " + theDog.getName()); System.out.println(Animal.printNumbers(100)); Animal.countTo(100); Animal.guessMyNumber(); // An array is a fixed series of boxes that contain multiple values of the same data type // How you create arrays // int[] favoriteNumbers; // favoriteNumbers = new int[20]; int[] favoriteNumbers = new int[20]; favoriteNumbers[0] = 100; String[] stringArray = {"Random", "Words", "Here"}; // for(dataType[] varForRow : arrayName) for(String word : stringArray) { System.out.println(word); } // This is a multidimensional array String[][][] arrayName = { { { "000" }, { "100" }, { "200" }, { "300" } }, { { "010" }, { "110" }, { "210" }, { "310" } }, { { "020" }, { "120" }, { "220" }, { "320" } }}; for(int i = 0; i < arrayName.length; i++) { for(int j = 0; j < arrayName[i].length; j++) { for(int k = 0; k < arrayName[i][j].length; k++) { System.out.print("| " + arrayName[i][j][k] + " "); } } System.out.println("|"); } // You can copy an array (stringToCopy, indexes to copy) String[] cloneOfArray = Arrays.copyOf(stringArray, 3); // You can print out the whole array System.out.println(Arrays.toString(cloneOfArray)); // Returns the index or a negative number System.out.println(Arrays.binarySearch(cloneOfArray, "Random")); } }