590 likes | 767 Views
Java :. A Gentle Introduction - presented by Fran Trees. Java Programming Language. 1991 A group led by James Gosling and Patrick Naughton at Sun Microsystems designed “Green”, a language for consumer devices (coffee makers, VCRs, etc.). Didn’t overly excite anyone. 1994
E N D
Java : A Gentle Introduction - presented by Fran Trees Columbia University JETT
Java Programming Language • 1991 • A group led by James Gosling and Patrick Naughton at Sun Microsystems designed “Green”, a language for consumer devices (coffee makers, VCRs, etc.). Didn’t overly excite anyone. • 1994 • Gosling – HotJava Browser • could download “applets” from the web and run them • applets were written in Java. • greatly extended capabilities of a web page Columbia University JETT
Java Advantages • Platform independence • Reuse of code • Security • Automatic garbage collection • Stronger typing of objects and variables Columbia University JETT
Java Technology: • Programming language • Syntax and semantics • Development environment • Compiler, interpreter, documentation generator, class packaging tool • Application environment • Standalone programs- run on any machine where Java Runtime Environment is installed (JRE) • Deployment environment • JRE supplied by SDK: contains class files, GUI classes, etc. Columbia University JETT
Portability and Security • Java Virtual Machine • An imaginary machine that is implemented by emulating it in software on a real machine (fake CPU that sits on top of an operating system). Code for the JVM is stored in .class files. • Provides hardware platform specifications • Reads compiled byte codes that are platform independent Columbia University JETT
JVM A JVM has been written for every operating system. A compiler takes Java application source code and generates bytecode (machine code instructions for JVM). Java source code (Car.java) not readable by humans; not really machine code… compiled Still platform dependent bytecode Car.class JVM JVM JVM Unix Windows Mac Columbia University JETT
JRE Runtime class loader bytecode verifier Car.class interpreter runtime hardware Columbia University JETT
JVM • JVM specification provides concrete definitions for implementation of: • Instruction set • Register set • Class file format • Runtime stack • Garbage collecting heap • Memory area Columbia University JETT
SO…. • Java uses a mix of compiler and interpreter • The majority of type checking is done when the code is compiled. Columbia University JETT
Garbage Collection • Allocated memory does not need to be deallocated (delete). • Java provides tracks memory allocation • Garbage Collection • checks and frees memory no longer needed • done automatically Columbia University JETT
Java promotes Object-oriented programming Columbia University JETT
Object-Oriented Programming • Each object has • its own memory • belongs to a class (instance of a class) • Class defines • attributes (defines state) • behavior (methods) Columbia University JETT
BlueJ • tool for teaching object-oriented programming and Java without much overhead (task overloading for student) • development environment designed at Monash University, Australia. Columbia University JETT
Shapes…. • BlueJExamples BlueJ Time Activity_01 (#1,2) BlueJ can be downloaded FREE Some materials and examples are from Objects First with Java by Barnes and Kölling goto BlueJ Columbia University JETT
Shapes…summary after experimentation • What we see in this BlueJ project: • ClassesCircle, Square, Triangle, Canvas • creation of an object : call to Constructor • invoking (calling) methods • passing parameters • method signatures • data types : int, String, and boolean • multiple instances of the same class • changing the state of the object Columbia University JETT
Picture…Summary after Experimentation • How many objects? • How many constructors? • What happened when you commented out the code for the constructor? Columbia University JETT
Picture • "Construct" creates an instance of the Picture class • a Picture • consists of 5 objects • 2 squares, 1 triangle, 1 circle, 1 canvas • Objects can create other objects! Columbia University JETT
Constructors • If no constructor is included in the class, Java provides one. • if values are not set, default values for instance variables of a class are: • 0 for int • 0.0 for double • null for objects • false for boolean • If a constructor is included in the class, all bets are off (no default constructor is provided)! Columbia University JETT
Comments • BlueJ : Interface • JavaDoc creates this document • (more on this later). Columbia University JETT
Comments, White space • Comments • // comment on one line • /*……*/ comment over several lines • /** ……*/ javadoc comment • White space • ignored; use white space for clarity of code Columbia University JETT
Javadoc some keywords : @author* @version* @param* @return* @throws* Columbia University JETT
JAVA Language Basics Columbia University JETT
Some basics: • Primitive types • logical : boolean • no casts between boolean and int • texual: char • integral: byte, short, int, long • floating:double, float Columbia University JETT
(not part of AP Subset) • Integral data types • byte 8 bits -27 to 27 – 1 • short 16 bits -215 to 215 – 1 • int 32 bits -231 to 231 – 1 • long 64 bits -263 to 263 – 1 • default is int Columbia University JETT
(not part of AP Subset) • Floating Point data types • float 32 bits • double 64 bits • default is double Columbia University JETT
Everything else • Everything that is not a primitive type is a reference type • A reference variable contains a reference to an object • Circle sun = new Circle(); • allocates memory for this new object • initializes attributes sun • executes constructor • assigns reference to reference variable Columbia University JETT
Order of Precedence • Separators • . IMPORTANT • [] • () • ; • , Columbia University JETT
Operator Order of Precedence(associativity – operators) Columbia University JETT
Conditionals – branchingif –else if statements if (boolean expression){ statement or block; } if (boolean expression){ statement or block; } else if (boolean expression) { statement or block; } else{ statement or block; } Columbia University JETT
Conditionals – branchingswitch statements (not part of AP subset) switch (expression){ case constant2: statements; break case constant3: statements; break; default: statements; break; } note: expression must be assignment compatible with int. (byte, char, short are OK; double, long, Strings not OK) Columbia University JETT
Looping for(startExp; booleanExp; endExp) { statement or block; } while(boolean expression){ statement or block; } Columbia University JETT
Teaching Tip: • Company Rules: • Have a permanent place in your classroom with your Company Rules listed. • That way everyone knows what is expected and no one will be needlessly fired! Columbia University JETT
Java supportsshort circuit evaluation if ((n != 0) && (x < 1/n)) • evaluates first expression • if OK then evaluates second expression Columbia University JETT
Looping do{ statement or block; } while(boolean expression) (not part of AP subset) Columbia University JETT
Looping • When do you use each loop? • for • while • do Columbia University JETT
Special Loop Flow Control-- • return is part of AP subset Columbia University JETT
More with BlueJ • More with BlueJ – TicketMachines • NaiveTicketMachine • attributes (fields) • private int price; //price of ticket • private int balance; //how much $ put in for ticket • private int total; //total $ in machine • Constructor • Methods • insertMoney • printTicket • getBalance • getPrice Columbia University JETT
Naïve TicketMachine • Is there a default constructor? • How many constructors are there? • What do we mean by a "method signature?" • What methods are the accessors? • What methods are the modifiers (mutators)? • What's wrong with this ticket machine? • What enhancements can we make? Columbia University JETT
Scope of variables • Fields (attributes) • private • Formal parameters • initialized by actual parameters • Local variables Columbia University JETT
arraysPart of AP CS A subset • one- and two- dimensional arrays • more on two-dimensional arrays later (AB only) • arrays of primitive types • arrays of objects Columbia University JETT
arrays • Declaring an array variable is similar to declaring other variables. • int[] a; //array of ints; • double[] b; //array of doubles; • String[] c; //array of Strings; • Does not cause Java to allocate memory (space). Columbia University JETT
arrays • To allocate memory (space) for your array. final int MAXNUM = 5; int [] a = new int [10]; double[] b = new double[20]; String[] c = new String[MAXNUM]; Columbia University JETT
array length • If a is an array variable, • a.length represents the length of the array a. Columbia University JETT
array processingassume an array of ints • rate each of the following on a scale of 1 – 5 where 5 is very hard to implement : • fill: value of array element filled with index of array element • find largest value in array • find smallest value in array • find sum of values in array • search for item in array • sort items in an array • count occurrences of a value in an array • insert an item into a sorted array Columbia University JETT
Initializing arrays • Initialization of named arrays: int[] a = {1,2,3}; • Declaration without initialization gets default values. int[] a = new int[10]; filled with 0s. Columbia University JETT
LabArrayClass class • attributes are private • private String instructor; • private String room; • private String timeAndDay; • private Student[] students; • private int currentNumberOfStudents • methods are public (for now) • Constructors • Accessors • Mutators Columbia University JETT
Student[] students; • private field • each LabArrayClass object has this • array of Students • What does this mean? • What is an array? Columbia University JETT
A look at the constructor public LabArrayClass(int maxNumberOfStudents) { instructor = "unknown"; room = "unknown"; timeAndDay = "unknown"; students = new Student[maxNumberOfStudents]; currentNumberOfStudents=0; } An array is a fixed-length collection of values of the same type. Access array elements by indexing : students[3] First element in the array has index 0. Columbia University JETT
Comparing array elements • Comparing elements in arrays of primitives is not a problem. • comparison operators are defined. • What about arrays of Strings? • Strings are Objects Columbia University JETT
Suppose we wanted to "search?" • We need to search for a String, key… • Look at each element in the array of Strings and check to see if it contains the same characters as key. Columbia University JETT