Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
A Review of the Basics Java is an object oriented programming language developed by Sun Microsystems. An object programming language allows for massive versatility in code – objects can inherit characteristics of other objects and even redefine them. Java is a cross-platform development programming language – Java programs can compile and run on Windows machines, Macs (ugh), and even Linux boxes. class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } Every object in Java is a class, even this simple program. Classes must be named in the same fashion as the file it is saved in (the above would be in a file named Sample.java). Classes can be named with any combination of letters, numbers, and special symbols ($ and _). However, they must begin with a letter, an underscore, or a valid Unicode currency character (like the Euro symbol). The first letter of a class name must be capitalized, and any subsequent word in the class name should be capitalized. E.g. ThisIsAClassNameWithMoreThanOneWord JAVA IS CASE SENSITIVE!!!!! A class that is named SnookieIsGross and SnookieIsGROSS are TWO TOTALLY DIFFERENT CLASSES!!! YOU CANNOT USE A SPACE IN A CLASS NAME! class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } Curly brackets are used in Java to surround code. Every class definition must be surrounded by curly brackets, as well as method code (see later), and blocks of code (after if statements, in loops, etc.) Most errors occur because people forget to close their brackets!! class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } The main method (more on methods later in the year) is the code that runs when a class is executed. A class does NOT need to have a main method; if it does not have a main method, you can compile it but NOT run it (you will receive a noSuchMethodError: main exception). It must be defined exactly as it is above. class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } public = This method is accessible by everyone. It is possible to make a method private – then it can only be seen by this class alone. static = takes all variables as parameters – cannot see non static variables in the rest of the class void = does not return a value (This is weird in Java) main = the name of the method String[] = a data type (an array of Strings) args = the name of the array that holds the Strings (THIS IS NOT A KEYWORD) class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } System.out.println(“…”) is a call to a method that prints something out to the screen, where that something is … surrounded by quotation marks, if it is a String. You can also print out the value of a variable without using quotes. The dots are there because the println method is a method in the out class which is defined in the System class. class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } } The end of every line in Java that executes some kind of command MUST end with a semi-colon. This is the second most common error in this course. Please be very wary of your semi-colons! It’s like adding punctuation at the end of a sentence. In Java, one can output to the command prompt (usually), to a file, or even to special GUI designs. System.out deals with standard output, which is the command prompt. System.out.print(“…”) will print … to the command prompt and WILL NOT GO ON TO THE NEXT LINE! The cursor will remain on the same line awaiting to print to the screen. System.out.println(“…”) will print … to the screen and move on to the next line. (Hence, the ln at the end of the method). public class PrintLineExample { public static void main(String[] args) { System.out.print(“Here is one line.”); System.out.print(“And this will print on the same line.”); } } The output will be: Here is one line. And this will print on the same line. public class PrintLineExample { public static void main(String[] args) { System.out.println(“Here is one line.”); System.out.println(“And this will print on the next line.”); } } The output will be: Here is one line. And this will print on the next line. System.out.println(“The sum is ” + sum); There’s a + sign there, but it does NOT mean addition! The data type that goes into System.out.print/ln statements is String. The + there means string concatenation. You can “add” Strings together to get one bigger String. So, if I were to “add” the Strings “Mister” and “Weir” I would get one String whose value is “Mister Weir” So, in a print/ln statement, you must surround your Strings (the parts you want literally printed to the screen) in “ “, and variables must be ADDED to the string for their values to be printed. Let’s assume we have two variables, num1 and num2, whose values are 10 and 5, respectively. System.out.println(“The values are “ + num1 + “and” + num2); Will print “The values are 10 and 5” System.out.println(“The values are num1 and num2”); Will print “The values are num1 and num2” This depends on the context of the code. If you are writing a prompt to a user (asking for an action and awaiting input), it might be cleaner to use print() instead of println(). However, there is no wrong answer – it’s all a matter of preference. Comments are like notations that a programmer makes in code, either to himself/herself or to another person looking at the code. Comments have absolutely no effect on the compilation of the program. There are two ways to put comments into your programs. Single line comments are comments for…a single line. They must be preceded by two forward slashes. //This is a single line comment Multiple line comments are used when you want you comments to span more than one line. This is usually used in preconditions/postconditions of a method, where much more detailed explanation is required. In this case, the comment must begin with /* and end with a */ (a comment sandwich). /*This is a multiline comment because it can go on and on and on and on but it will eventually end. */ You can do pretty much any math you want in Java (that is consistent with real world mathematics). There is even a Math class in Java with special functions (such as sqrt() - square root, abs() – absolute value, etc.) The math you will be doing in this course will be basic math - addition, subtraction, multiplication and division. However, things are not as easy as they appear. Java is a typed (though not strongly) language. This means that variables must be the same type in order for them to interact in any way. Huh!? Well, a variable is must like it is in math – something which represents a specific value in a formula. Variables must be DECLARED before they can be ASSIGNED a value. Naming variables must also follow some rules. Variables must be named using similar rules as those for classes. Valid variable (or identifier) names can consist of any combination of letters, capital and lowercase, numbers, and special characters ($, _, Unicode currency symbols). They must also begin with a letter, underscore, or currency character, like classes. However, unlike classes, the convention is to have the first letter be lowercase, and all subsequent words begin with a capital letter. Identifiers also cannot have the same name as reserved words in Java. Reserved words are those which mean something special to the compiler (TextPad makes them blue when you type them). You have already seen some reserved words, such as String, public, static, etc. Your program will not compile if you do his. abstract continue for new switch assert*** default goto* package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum**** instanceof return transient catch extends int short try char final interface static void Class finally long strictfp** volatile const* float native super while Valid identifier names: foo bar myScanner myCookie this_is_a_good_name Invalid identifier names !woo 2ForMe public This is a bad name Here is a declaration for an identifier int num2; All declarations must first begin with a data type, and then a valid identifier name, followed by semicolon. You can also ASSIGN a value while declaring a variable. int num2 = 10; You MUST declare a variable before you can use it in your program! This is how you are telling the compiler of this identifier’s existence! When you declare a variable, the compiler will set aside memory for later use. But…let’s talk more about the specific data types… Every variable must have a type associated with it. You will be working with mostly primitive data types, but a data type can even be a class (since all classes are of type Object)! The following is a list of primitive data types. char byte short int long float double boolean void (useless) Char stands for character. It is one single symbol. Any symbol from the keyboard is a valid character. When you assign a char a value, you must surround the symble apostrophes (single quotes). char c = ‘a’; You will be working with characters in this course, although the Scanner input we will be using cannot deal with characters. Byte is a number which ranges from -128 to 127. We will rarely use this. This is used primarily to save memory in programs (due to its restrictive range). byte b = 100; Shorts are numbers that range from -32, 768 to 32,767. Also used to save memory space. short shortNumber = 4565; The following will NOT work: short outOfRange = 60,000; This number is TOO LARGE for a short, and will produce an error. int stands for integer. These are signed numbers in the range of -2,147,483,648 through 2,147,483,647. These are the most common ones you will be using in class. int num1 = 0; int num2 = 100; long is for a…long number. The range of numbers is -9,223,372,036,854,775,808 though 9,223,372,036,854,775,807. Use these if you need to use a number that is greater than the range of int. You will never be using these. All of the previous data types do not have decimal values. If you try to assign a value with a decimal to any of those, you will get a compilation error. int num1 = 10.2 //THIS IS BAD float is a data type which can have a decimal value. However, the values have a short range (much like short compared to int). You won’t be using this. float myFloat = 10.2; doubles also deal with decimal numbers. They have a wider range than floats. You will be using these. double grade1 = 98.2; boolean variables have only two values: true or false. These are used in conditional statements (will be discussed later). You will be using these all of the time in future programs. The following are example of setting the values: boolean doesPatHaveDetention = true; boolean willTheMetsWin = false; Please notice that all of the primitive data types have only lowercase letters. You cannot declare a primitive data type using a capital letter as the first letter. For example: Integer int1 = 0; There IS an Integer class in Java, with methods for converting between int and other primitive data types. So when you type Integer int1 = 0, the compiler will be expecting something of type Integer to the right of the =, not a number. SO – please use only lowercase letters! So now that you know all of the data types, let’s talk about math. We’ll do addition, subtraction, multiplication and division (which is special). Addition is done using the + operator. Here’s an example: int num1 = 5; int num2 = 9; int sum; sum = num1 + num2; System.out.println(“The sum is ” + sum); This snippet of code will print out 14 to the screen. Subtraction is done using the – operator. int num1 = 100; int num2 = 45; int difference; difference = num1 - num2; System.out.println(“The difference is ” + difference); Will print: “The difference is 55” Multiplication is done using the * operator. int num1 = 5; int num2 = 9; int product; product = num1 * num2; System.out.println(“The product is ” + product); Will print “The product is 45” Here is where things get complicated. There are many types of division in Java (and generally all of computer science) – integer division , “regular” division and modular division. Based on your data types, and situation, you will want to use different ones. I will highlight all three. Regular division ONLY works with floats or doubles. “Regular” division is division which gives you a whole number answer (with decimal values). double num1 = 101; double num2 = 25.25; double quotient; quotient = num1 / num2; System.out.println(“The quotient is “ + quotient); Will print “The quotient is 4.0” This only works with ints. Since ints do not have any decimal values, this type of division will just return the result of the division WITHOUT a decimal value. It does not even round. It ignores the decimal value totally. This does have its uses, which we will discuss later. int num1 = 100; int num2 = 6; int quotient; quotient = num1 / num2; System.out.println(“The quotient is ” + quotient); Will print “The quotient is 16” The actual answer is 16.6667, but integer division ignores the decimal values! What if you wanted to use the remainder of a number for some purpose? You would use modular division. Modular division returns the remainder of an integer division. You achieve this by using the % operator. int num1 = 100; int num2 = 6; int remainder; remainder = num1 % num2; System.out.println(“The remainder is ” + remainder); Will print “The remainder is 4” Order of operations works the same in Java as it does in real math. PEMDAS! You can use parenthesis in java math operations. So…KNOW YOUR ORDER OF OPERATIONS! Conditional statements are “checks,” which are very much like boolean variables. You should have done some simple conditional logic in your geometry class. In real world terms, the key words for logic are AND, OR, NOT, IF, IF AND ONLY IF The blue ones are what you will be using in Java. AND = && OR = || NOT = ! IF = if Assume we have three boolean variables, defined as follows: statementOne = true statementTwo = false statementThree = true statementOne && statementTwo = false AND statements are true only if each condition is true statementTwo || statementThree = true OR statements are true if any of the conditions are true You can also have compound statements! Separate each check with parentheses! (statementOne && !(statementTwo)) && statementThree = true! If statements are the most prevalent conditional checks in all of computer science. Mostly any program will have if statements somewhere in the code. They have the following syntax: if (any number of conditional checks) { …some code } The code inside of if statements is not guaranteed to run! The most common mistakes in these types of checks is forgetting parenthesis! int num1 = 10; int num2 = 15; if ( (num1 > 5) && (num2 < 100) ) { System.out.println(“This will print!”); } In the above code, the condition is met, so the text is printed. What if you wanted something else to happen if the condition is not met? You would use an else statement after the if. It has the following syntax: if (condition) { …some code } else { …some more code } In this case, ONE block of code is guaranteed to run, based on the condition. boolean condition1 = (11>10); //can do condition here! if (condition1) { System.out.println("It worked!"); } else { System.out.println("Something is wrong!"); } The above will print “It worked!” to the screen. Note that you can set a boolean value to a check, and the true/false value will be saved into the variable. If you change the condition above to 10>11, the second println statement will be printed! Other than the standard logic symbols, there are other symbols that can be used for comparisons. They are: > < >= <= == The strange one is the == symbol. Please remember that a SINGLE = means “assign the following value to the preceding identifier” in Java. If you try this: if (num1 = 10) { Java will try to assign a 10 to num1, but it also knows that it CANNOT do that! You will receive a compile error! For this reason, you MUST use a double equal sign to do an equal check!