140 likes | 233 Views
Lecture 2: Classes and Objects, using Scanner and String. Recap . Two categories of data types: primitives and classes Examples of primitives? int (whole numbers) double (numbers with decimal points) boolean (true and false) Examples of classes?
E N D
Recap • Two categories of data types: primitives and classes • Examples of primitives? • int (whole numbers) • double (numbers with decimal points) • boolean (true and false) • Examples of classes? • Math(uses static methods to calculate) • VERY DIFFERENT FROM • String (a sequence of characters, i.e. text) • Scanner (used to get input from the user or a file)
"Instantiable" Classes • With Math we use the class itself to access the static methods like Math.random() or Math.sqrt() • An instantiable class (String, Scanner) is like a template or pattern from which any number of objects can be created • Allows storing more complex data than primitives • Uses object-oriented patterns to create and modify
More "Instantiable" Classes • Objects of Instantiable Classes are more complex than primitives • Primitive values are just pieces of data (numbers, characters, or true/false) • For example, 2.3 is a value of type double • Instances of classes, on the other hand, contain both data and ways of acting on that data • For example, a String object holds a series of letters (like "the answer is ") but also comes with a way to UPPERCASE the letters or extract parts of the String into other Strings • Google String javadoc to get the doc • Let's see write an example that shows Strings in action
Demo time, Create project StringDemo String message = new String ("to err is human, "); String reply = new String("but not for computers!"); System.out.println( message ); System.out.println( message.toUpperCase() ); System.out.println( message + reply ); System.out.println( message + reply.replace('o','x'); double result = 53.4; System.out.println("the answer is " + result);
Some Class related Terminology • An instance of a class is called an object • in the example: message, reply are objects of String • To make a new object, use the new operator • The actions you can invoke on an object are called its methods • in the example: toUpper(), replace() are String methods • To use a method, we use dot notation as in the example • To find out the details of how to use a particular class, we use the javadoc documentation
Reading input from console • An example of a very useful class (Scanner) How do we get input from the user in Java? • Answer: The Scanner class is one way. • Scanner is described in Section 11.1.5 of text • or check Scanner javadoc
Example //Since Scanner is in package java.util, //import statement.import java.util.*;/** This program takes an int from the user and prints * out one bigger.*/public class ScannerExample { public static void main(String[] args) { Scanner input = new Scanner(System.in); int i = input.nextInt(); i = i + 1; System.out.println(i); }}
Packages • There are so many different classes that they are organized into different packages • To use a class from some package, you use an import statement on the top of your source file • Classes in this code fragment have been underlined • We don't need to import System and String because they are in package java.lang, which consists of classes so commonly used that it is always imported automatically
Libraries • In most programming languages, it takes a lot of work just to do some very basic commonly used tasks • Solution: Just write it once, and make it standard and available to everyone • This bunch of pre-written code is called a library • The Java libraries are enormous! and still growing...
Compile-time errors, logic errors, run-time errors • Human error occurs constantly when programming; we distinguish three main types in this course: • Compile-time errors (includes syntax errors) • This means your source code isn't ``grammatically correct'' • These errors are always caught by the compiler • Often due to typos, or not understanding valid syntax • Sytem.out.println("Hello world!"); • Usually easiest to correct
Run-time error • Caught by the JVM, but only when that bad something actually happens (like dividing by zero) • Often not too hard to correct once it happens public class HelloWorld3 { public static void main(String[] args) { int i = 0; i = i / i; //This causes a run time error (division by zero) System.out.println(i); }}
Logic error (aka semantic error) • The ``everything else'' category • It runs fine, but not the way you want it to • Usually causes your program to behave in a strange, unexpected way (see example and the fix) • Usually due to an error in your logic when writing the program • Using a debugger can be helpful to figure it out • System.out.println("Hello word!"); • Usually the hardest to correct
Lab 3 • Create Lab3 project in BlueJ • We experiment with a home made Calculator • using Scanner to read input numbers • using if to do the right calculation • using String to print result with a mesage • Turn in procedure. When finished... • Create Lab3.jar • Click "Homework Uploader" link • Enter passcode, estimated score, browse to Lab3.jar • then click upload