220 likes | 443 Views
BPJ444: Business Programming using Java Java basics. Tim McKenna Seneca@York. Outline. Java classes and members primitive and reference fields operators control flow statements the BigDecimal class the wrapper classes. Java Class. source code file name: Employee.java
E N D
BPJ444: Business Programming using JavaJava basics Tim McKenna Seneca@York
Outline • Java classes and members • primitive and reference fields • operators • control flow statements • the BigDecimal class • the wrapper classes
Java Class • source code file name: Employee.java • instance and static fields (variables) • state or attributes • instance and static methods • behaviour • constructors create objects • setters and getters control access to fields • the keyword: this • nOTe: Java cares deeply about case
ClassName • noun or noun phrase • use Title Case: CapitalizeEachWord • class Employeeclass EmployeeSalary extends Employee • name.java file must be exactly the same as class name within the file
nameMethod • verb or verb phrase • start in lowercase • capitalizeEachSubsequentWord • e.g.void giveRaise(int increase)public String getAddress()
fields or variables • noun or noun phrase • start in lowercase • capitalizeEachSubsequentWord • try for short and memorable • e.g.String empName;int empStartYear; • a method’s local variables and parameter names can be even shorter
Primitive Data Types • summary (The Java Tutorial) • http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html • numeric types: int, double • boolean logic type: boolean • character type: char • primitives contain a simple numeric value for language efficiency • primitives are not objects
Primitive Literals • byte b = 2; // an int literal is used • short x = 23; // an int literal is used • int y = 23; // default int literal • int z = 0123; // octal value (decimal value=83) • int v = 0x1111; // hex value (decimal value=4361) • long t = 2200000000L; // a long integer literal • float r = 3.14f; // a float literal • double s = 3.14; // default double literal
more Primitive Literals • boolean exit = true, done = false; • char c1 = 'a', // single character c2 = '\u0041', // Unicode escape seq. // is 4 hex digitsc3 = '\n'; // ASCII escape seq. • \n is new line (works in some GUI widgets) • \t is tab (does not work in any GUI widgets)
Object Reference Types • field containing a single value which refers to an object • i.e. a memory address, a pointer • not modifiable by programmer • initial value is null until assigned • examples: object names, array names, class names • Example: References.java
Using Classes • examples: • Employee.javaa template for an employee • Employees.javacreates a company of employees
Data Type Conversion • automatic widening conversion • if it fits, no casting needed • int auto cast to long l = i; • int auto cast to double d = i; • char auto cast to int i = 'a'; • casting: explicit narrowing conversion • Example: Casting.java • …be careful about overflow. see e.g.
Operators in Java • summary of operators (Java Tutorial) • http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html • types of operators: arithmetic, logical, relational, conditional, assignment • precedence of operators • all similar to C language
Control Flow Statements • summary (The Java Tutorial) • http://java.sun.com/docs/books/tutorial/java/nutsandbolts/flow.html • branching statements • break (same as C ) • break with a label (new in Java) • continue (same as C ) • continue with a label (new in Java) • Examples: BreakDemo.java, BreakWithLabelDemo.java, ContinueDemo.java, ContinueWithLabelDemo.java
The BigDecimal Class • 98.7% of numeric data in business applications has a predetermined number of decimals: • currency, exchange rates, unit costs, discounts, taxes • precision: digits in number including decimals • scale: number of decimal places • JDBC maps DB decimal fields to BigDecimal • BigD class provides control of rounding behaviour • Note: double primitive is only an approximation! • Examples: PaySchedule.java, PaySchedule2.java, DontUseDouble.java
Why use BigDecimal instead of double? • from the IBM computer scientist who wrote the new, improved BigDecimal class: Using Java 5.0 BigDecimaland Decimal Arithmetic FAQ • from an assignment that didn’t use BigDecimal…Type Vegan Survey Last Date RestaurantCode Y/N Amount Surveyed Name, LocationCF Y 3.59 2003-07-04 Blueberry Hill, YLMPlease enter survey amount (+ add, - subtract) > -3.59 Unable to subtract this amount -3.589999999999999857891452847979962825775146484375because there is only 3.589999999999999857891452847979962825775146484375 left!
BigDecimal arithmetic • BigDecimal sum, difference, …; // note: immutable class • sum = addend.add(augend); // a = b + c • sum = sum.add(anotherBigDecimal); // a += d • difference = minuend.subtract(subtrahend); // a = b - c
BigDecimal arithmetic • import static java.math.RoundingMode.HALF_UP;// standard rounding, import the constant • BigDecimal product, quotient; // immutable • product = multiplicand.multiply(factor); • product = // round result to 2 decimalsproduct.setScale(2, HALF_UP); • product = // multiply and roundmultiplicand.multiply(factor).setScale(2, HALF_UP); • quotient = // round result to 2 decimalsdividend.divide(divisor, 2, HALF_UP);
BigDecimal comparisons • import static java.math.BigDecimal.ZERO; • payment.compareTo(interest) > 0"if payment is greater than interest " • principal.compareTo(payment) <= 0 "if principal is less than/equal to payment" • principal.compareTo(ZERO) == 0"if principal is equal to zero" • principal.equals(ZERO)…may not be what you mean. see API.
The Wrapper Classes • classes representing primitive data types: • Byte, Short, Integer, Long, Float, Double, Character • primitive data type may need to be wrapped in an object, e.g. to be stored in a List which accepts only objects. • J2SE 1.5 now does autoboxing to/from primitives and object wrappers • Example: WrapperDemo.java
Integer Class • constructors • wrap primitive integer value into an object:Integer intWrap = 123; // autoboxedInteger intFromString = new Integer(“123”) • extraction of a value from the object • public int intValue ( ) e.g. int i = intWrap.intValue(); // old way int I = intWrap; // new way autoboxed • public String toString()e.g. String s = intWrap.toString();
Integer Class • three static methods (class or utility methods) • static int Integer.parseInt ( String s )e.g. String s = "123456789"; int i = Integer.parseInt ( s ) • static String Integer.toString ( int i)e.g. int i = 123456789; String s = Integer.toString ( i ) • static Integer Integer.valueOf ( String s )e.g. String s = "123456789"; Integer intWrap = Integer.valueOf ( s )or Integer intWrap = new Integer ( s )