Today we will discuss Chapter 2: Using Objects. 

Review Chapters 1, 2 for the labs this week. 

Read Chapter 3 for Monday lecture. 

Lab 1, 2 Homework 1, 2 will be made of end of the chapter exercises. 

Last time I learned that:

(a) Java programs are made of classes

(b) put each class in a separate file

(c) a class file has the extension .java

(d) compile with javac to get the .class file 

The .java file is called source code. You compile it.

The .class file is called bytecode. You run it. 

public class Two {
  public static void main(String[] args) {
    System.out.println( new java.util.Date() ); 
  }
}

Name, Date

1. What is the difference between studying and learning?

2. What would be harder for you: (a) ace an exam or (b) present
that material to the class (and take questions, etc.)

Microsoft Windows [Version 10.0.16299.611]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\dgerman>PATH="C:\Program Files\Java\jdk1.8.0_162\bin";%PATH%

C:\Users\dgerman>dir
 Volume in drive C is OSDisk
 Volume Serial Number is C6FD-7531

 Directory of C:\Users\dgerman

08/20/2018  03:51 PM    <DIR>          .
08/20/2018  03:51 PM    <DIR>          ..
08/11/2018  10:30 PM    <DIR>          .dotnet
08/20/2018  03:51 PM               521 .drjava
08/22/2018  02:36 PM    <DIR>          3D Objects
08/22/2018  02:36 PM    <DIR>          Contacts
08/22/2018  02:57 PM    <DIR>          Desktop
08/22/2018  02:36 PM    <DIR>          Documents
08/22/2018  02:36 PM    <DIR>          Downloads
08/22/2018  02:36 PM    <DIR>          Favorites
08/22/2018  02:36 PM    <DIR>          Links
08/22/2018  02:36 PM    <DIR>          Music
08/20/2018  05:06 AM    <DIR>          OneDrive
08/22/2018  02:36 PM    <DIR>          Pictures
08/22/2018  02:36 PM    <DIR>          Saved Games
08/22/2018  02:36 PM    <DIR>          Searches
08/22/2018  02:36 PM    <DIR>          Videos
               1 File(s)            521 bytes
              16 Dir(s)  237,609,787,392 bytes free

C:\Users\dgerman>cd Desktop

C:\Users\dgerman\Desktop>dir
 Volume in drive C is OSDisk
 Volume Serial Number is C6FD-7531

 Directory of C:\Users\dgerman\Desktop

08/22/2018  02:57 PM    <DIR>          .
08/22/2018  02:57 PM    <DIR>          ..
08/22/2018  02:57 PM               120 Two.java
               1 File(s)            120 bytes
               2 Dir(s)  237,609,787,392 bytes free

C:\Users\dgerman\Desktop>javac Two.java

C:\Users\dgerman\Desktop>PATH
PATH="C:\Program Files\Java\jdk1.8.0_162\bin";C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\PuTTY\;C:\Program Files (x86)\Box\Box Edit\;C:\Program Files\IBM\SPSS\Statistics\25\JRE\bin;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Wolfram Research\WolframScript\;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Matlab\R2018a\runtime\win64;C:\Program Files\Matlab\R2018a\bin;C:\Program Files (x86)\SASHome\Secure\ccme4;C:\Program Files (x86)\SASHome\x86\Secure\ccme4;C:\WINDOWS\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Java\jdk-10.0.2\bin;C:\Users\dgerman\AppData\Local\Microsoft\WindowsApps;

C:\Users\dgerman\Desktop>dir
 Volume in drive C is OSDisk
 Volume Serial Number is C6FD-7531

 Directory of C:\Users\dgerman\Desktop

08/22/2018  02:58 PM    <DIR>          .
08/22/2018  02:58 PM    <DIR>          ..
08/22/2018  02:58 PM               424 Two.class
08/22/2018  02:57 PM               120 Two.java
               2 File(s)            544 bytes
               2 Dir(s)  237,608,808,448 bytes free

C:\Users\dgerman\Desktop>java Two
Wed Aug 22 14:59:42 EDT 2018

C:\Users\dgerman\Desktop>java Two
Wed Aug 22 14:59:56 EDT 2018

C:\Users\dgerman\Desktop>

Eclipse, Intellij, DrJava, CLI, BlueJ, ... 

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> 0.1
0.1
> 0.1 + 0.1
0.2
> 0.1 + 0.1 + 0.1
0.30000000000000004
> 0.1 + 0.1 + 0.1 + 0.1
0.4
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.5
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.6
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.7
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.7999999999999999
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.8999999999999999
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.9999999999999999
> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
1.0999999999999999


Enter BigDecimals. 

BigDecimal is class defined in a package (java.math).

You can instantiate a class to get an object. 

Pen p1 = new Pen(...); 

Paper p2 = new Paper(...); 

--

BigDecimal a = new BigDecimal(0.1); 

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> import java.math.BigDecimal;
> BigDecimal a = new BigDecimal(0.1);
> BigDecimal b = new BigDecimal(0.2);
> b
0.200000000000000011102230246251565404236316680908203125
> a
0.1000000000000000055511151231257827021181583404541015625
> BigDecimal c = new BigDecimal(3);
> c
3
> BigDecimal d = new BigDecimal(0.4);
> d
0.40000000000000002220446049250313080847263336181640625
> BigDecimal d = new BigDecimal("0.4");
> d
0.4
> BigDecimal a = new BigDecimal(0.1);
> a
0.1000000000000000055511151231257827021181583404541015625
> BigDecimal a = new BigDecimal("0.1");
> a
0.1


https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html

import java.math.BigDecimal; 

public class Exercise {
  public static void main(String[] args) {
    System.out.println( 1 + 2 - 3 * 4 );
    BigDecimal a, b, c, d; 
    a = new BigDecimal("1"); 
    b = new BigDecimal("2"); 
    c = new BigDecimal("3"); 
    d = new BigDecimal("4"); 
    System.out.println( a.add(b).subtract(c.multiply(d)) );
    BigDecimal result = a.add(b); 
    System.out.println( result ); // 3
    result = result.subtract(c.multiply(d));
    System.out.println( result ); // -9
  }
}

--

See you in labs on Friday!