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
Chapter 2 Overview Using Primitive Data Types Using Classes Anatomy of a Program Will use JOptionPane and Math classes Data Types Tells compiler what type of data is stored in each memory cell. Data Type represents a particular kind of information. Some come with Java Primitive Data Types are not stored as objects The String class is a data type which stores Objects Some are defined by Programmers Variables Variables serve 2 purposes Reference objects Store values in memory Declaration Statement Defines a variable name and its associated data type. Data Types Java has 8 built-in primitive data types We will be using 4 of these int double char boolean As noted before, these primitive data types are not stored as objects Example declarations int kids = 2; double bankBalance = 500.45; char firstLetter = ‘a’; boolean married = true; Literals Example of declaration (with initialization) int kids = 2; the variable is kids the primitive type is int the initial value is the literal 2 What are the literals in the declarations below? double bankBalance = 500.45; char firstLetter = ‘a’; boolean married = true; Values stored Table page 37 of text int double char boolean Syntax Display Form: typeName variableName [ = value ]; Everything inside of [] is optional. You need to be comfortable reading this syntax display, it will help you learn the Java language (and it’s good practice for learning the syntax of other languages). Primitive Type int Positive or negative whole numbers. No sign is assumed to be positive Can perform math functions on these Add, subtract, multiply, divide Do not use commas when writing numbers in Java 1,000 1000 Primitive type double Real number Has integer part Has fractional part Can express via scientific notation 1.23 x 105 In Java as 1.23e5 1.23e+5 Primitive Type boolean Has only 2 possible values true false Used to represent conditional values Will use more later in the semester Primitive type char Represents a single character value All character literals are enclosed in ‘’ letter, digit, special character why?? Can you add ‘5’ + ‘6’ ? How about special characters that are not on keyboard See table page 39. Data types enable Error Detection Java is a strongly typed language Unlike C++ Can not add 2 boolean values Can not store a boolean in a character Some you can, for instance an integer into a double Section 2.2 Processing Numeric Data Arithmetic Operators: + Addition 5 + 2 is 7 5.0 + 2.0 is 7.0 - Subtraction 5 – 2 is 3 5.0 – 2.0 is 3.0 * Multiplication 5 * 2 is 10 5.0 * 2.0 is 10.0 / Division 5.0 / 2.0 is 2.5 5 / 2 is 2 % Remainder 5 % 2 is 1 Division Integer division is very different than with real numbers. If both numbers are integers then integer division is performed. If one or both numbers are reals then real number division is performed. Assignment Statement Form: variable = expression; Example: x = y + z; Read x is assigned the value of y + z. See Example 2.2 Page 42 See Example 2.3 Page 43 Result of mixed type If one or more operands are double, result is double. If both operands are int, result is int. Mixed type assignment statements. Result is calculated, then assigned. int can be assigned to a double See example 2.4 page 44 Type Casting Can use this to create one type from another. double x = 7.8; int m; m = (int) x; Can also be used for doubles (double) m; Operator Precedence My Dear Aunt Sally x=4+3*2 Uses 2 rules to decide is it 10 or 14? Parentheses rule Operator precedence rule Left associative rule (equal then left to right) We will consistently use fully parenthesized equations. Examples Review the examples on pages 46 –47 Must be able to convert math formulas into Java syntax See examples page 48 Look at code on Page 49 running in JBuilder Section 2.3 Introduction to Methods Methods of a class determine operations that can be performed by the class. The previous code example (Page 49) contains 2 methods main() println() Methods are called to do some task. Calling (activate) methods Call methods for multiple reasons Change state of object. Calculate a result Retrieve a data item stored in an object Get data from the user Display the results of an operation Returning results Methods that: calculate result retrieve a data item these are said to “return a result” The main method is automatically called by the operating system. It is the initial method to run, you then write the code in that method to perform your work. println method Used to display output in the console window. Provided for you by java. Is part of the System.out object. Calling a method Call a method using dot notation: objectName.methodName(); System.out.println(); We can pass data to methods via the argument list: objectName.methodName(argumentList); Can be single or multiple values See Page 49 println calls Method arguments are like function arguments In algebra f(x) means function f with argument x. f(x) is x2 + x + 1 f(0) is 1 (0 + 0 + 1) f(1) is 3 (1 + 1 + 1) f(2) is 7 (4 + 2 + 1) Can also have f(x, y) (bottom pg 53) Instance versus class methods Java has 2 different types of methods instance class println is an instance method, it belongs to an instance of System.out Class methods belong to a class, not an instance of the class Math.sqrt(15.0) is class method. Use name of class (Math) rather than instance name. Section 2.4 the String Class Strings are a sequence of characters. Used to store, names, addresses, ……. String is not a primitive data type in Java One powerful feature of object orientation is the ability to create your own data types. The String Class Working with objects is similar but slightly different than primitive data types. Declare string variables: String name; String flower; These can reference a String object, but have no value Notice that it is String not string. Creating String objects Use Constructors to create String object name = new String(“Dustin”); name = new String(“Rose”); The new operator creates a new instance of the string object. This is called an instantiation. Object is an instance of a class Constructor The new operator calls the constructor for the object. The constructor is a special method with the same name as the class. Gets called automatically when create an new instance of the class. We pass an argument to the constructor method (“Dustin”) Class instantiation Form: variableName = new className(arguments); Example: flower = new String(“rose”); Can declare variable and instantiate it at the same time: String flower = new String(“rose”); Reference Variable Primitive data type storage locations contain the value of the data type. A reference variable storage location contains an address of where the object is stored. See Page 57 top Strings Properties Strings slightly different than classes you create. Can create string via: String flower = “Rose”; Can use + with String (concatenation) name + “ “ + flower concatenates 3 strings together Concatenate Strings with Primitive Types System.out.println(“First number is “ + num1); Concatenates one string and one double See examples Page 59-60 String Methods See table String Methods Page 60 length charAt subString indexOf See examples pages 60 - 61 subString() method Gets a portion of a string One argument gets from that position to end of String Two arguments gets from first position for the length in second argument. See examples page 62-63 Storing result of method call Method must return a value int posBlank = text.indexOf(“ “); String firstName = text.subString(0, posBlank) first blank in string text if Mickey Mantle returns 6 pulls out first name See example page 64 Display results of method call System.out.printLn(“The First blank is at position “ + text.indexOf(“ “)); Section 2.5 Input/Output Will be using the following 2 approaches to Input/Output JOptionPane printLn() Packages Packages are created for you to reuse existing code. Contain many useful functions A large number of packages exist to extend the functionality of Java Strong feature of Java import Statement Used to import and use an existing package. import javax.swing.*; This imports the swing package which facilitates creating GUIs. This gives access to all classes in swing To only use JOptionPane can do import javax.swing.JOptionPane; JOptionPane.showInputDialog() Part of swing package. Always easy input and output. Input reading in data from user Output presenting results for user String name = JOptionPane.showInputDialog(“Enter your name”); Displays dialog box, see page 67 Stores result in name Examples Input dialog box See examples on page 67 - 68 Displaying results in Console Window System.out.println(“what ever”); See example page 68 bottom Display results in dialog box JOptionPane.showMessageDialog(); See example pages 69 - 70 Running code See TwoNumbersDialog in JBuilder Section 2.6 Problem Solving For each assignment you turn in you must also turn in Documentation. This documentation revolves around what is presented in the text book: Problem Analysis Design Implementation Testing Section 2.7 Anatomy of program Comments 2 types of comments exist: // means a comment to end of line /* comments in here */ comment delimiter Used to make program easier to understand Use to clarify difficult code Comments for each program At the beginning of the program include at a minimum Name Date Class Assignment Program purpose Example /* John Wright 9/1/03 Minor Assignment 1 Computer Science I This program will yada yada yada yada yada */ Class Definitions The class with the main method in it is the starting class for an Application. Classes have the form: 1. 2. A header declaration The class body a. b. The data field declarations of the class The method definitions of the class public class PigLatinApp {…} Syntax diagram Form: [visibility] class class-name {…} public class PigLatinApp {…} Body typically lists data declarations first, then methods. We will discuss visibility in more detail as we progress through the book. Visibility For the time being: Make all methods public Make all data fields private Leave class visibility blank Method main() This is a “special” method that is called by the operating system for applications. method header{ method body { Method headers Contains a lot of information public static void main(String[] args) public = visibility static = not applied to object (only 1 copy) void = returns no value main = method name String[] args = parameter list Body of main First line in main String word = JOptionPane.showInputDialog(“Enter a word starting with a consonant”); This brings up the initial dialog box prompting the user to enter a word. The value they enter is then passed back to the program and into the variable word via the method call. Continue We then “glue” together the output via this statement: String message = word + “ is “ + word.subtring(1) + word.charAt(0) + “ay” + “ in pig Latin” Then display this in an output dialog box. Program Style and Conventions The syntax of the language is dictated by the designers of Java Each organization typically has a set of programming conventions. Conventions are not enforced by the compiler, rather they are used for readability. Conventions You must follow programming conventions in your programs. We will follow those from the text. See options for braces in text book on page 80. I use option 1, but either is acceptable, just be consistent. Line breaks White space is ignored by the compiler. Use white space to make you programs more readable. Only one java statement per line int x = 5; double y = 5.3; Compiler does not care Java Keywords Also called reserve words These can not be used in identifiers. See list on page 81 Complete list in Appendix B Identifiers Is the name of a: data field or variable method class object There are rules for valid identifier names. Identifiers Java is case sensitive!!!! Fred and fred are 2 different identifiers Rules 1. 2. 3. 4. must begin with letter, underscore or dollar sign. Start all with letter must consist of letters, digits, underscore, dollar signs Java reserve word can not be identifier Can be any length Identifier naming conventions Classes Use nouns Start with capitol letter Each new word is capitalized SavingsAccount PiggyBank Identifier naming conventions Variables Start with lower case Use Nouns Each new Word is Capitalized userName pizzaPie Identifier naming conventions Methods Start with lower case letter. Use verb and prepositional phrases Each new word is Capitalized showInputDialog performOutput Identifier naming conventions Contants Use all capitols Separate words with underscore RETIREMENT_AGE FEDERAL_TAX_RATE Section 2.8 Class Math The class Math is a library of methods to perform various math functions. For instance Square Root. double y = Math.sqrt(x); You pass it a value in x It returns a value that you are storing in y Math is different You do not need to instantiate the class Math in order to use it. Review example 2.28 and 2.29 on page 85. Methods in Class Math This class has many essential methods already programmed for your use. See table in page 87 for some of the methods that are a part of the math library. Examples Square Root 2.30 page 88 Random 2.31 page 88 Run and look at Section_2_8_1 in JBuilder Other Methods These methods return whole numbers: floor() whole number below real ceil() whole number above real rint() integer returned via rounding Section 2.9 common errors Debugging is removing of errors from you program. It is the rare program that runs correctly the first time you try. You must become good at eliminating errors from your program. Syntax errors Syntax errors are caused by improperly formed Java statements. See table of common errors Page 93. Incorrect data types Incorrect use of quotations marks Errors in use of comments Errors in use of methods System errors Application class and the file it is stored in must have the same name. JBuilder does this for you Class path errors. Compiler can not find the appropriate file Run-time errors Occur when the program is running Divide by zero Data being input into wrong variable Arithmetic overflow, value to large to fit into variable Logic Errors Errors in the design of your program Program is not doing what you expected it to do. Can use println() and showMessageDialog() to discover how your program is running. Logic errors can be the hardest to locate