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
INTRO TO JAVA WHAT THIS LECTURE IS & ISN'T • It ISN'T • A complete how-to of everything Java • We'll see new features of Java all semester • It IS • Enough to get you through the first lab (hopefully) • If I neglect to cover something…ask! • Give you a taste of some major concepts, especially • the OOP-nature of Java • Basic I/O (including Files) • Enough to show you the pace / style of lectures • How to survive it • Follow along • If you're a fast typist, you can do it with me. • Or just watch and download the project afterwards. • Ask lots of questions • Make observations • Esp. comparisons to other languages you know (Python, MathPiper) • Caffeine?? OUTLINE 1. 2. 3. 4. 5. 6. Hello World Variables Console I/O File I/O Arrays Intro to OOP 1. HELLO WORLD • Do it on the computer (example01a_hello_world) • Observations? • Java is very "wordy" • You have to create a class (Java is very OOP-based) 2. PRIMITIVES AND OBJECTS • Java uses explicit declaration of variables. • Unlike Python (and MathPiper?) • In Java, most things are objects but there are a few primitives • Primitives: long, int, char, byte, float, double and boolean • Can assign literals to them (without new) • More efficient internally • There are Object-versions of each: • Object-types: Long, Int, Char, Byte, Float, Double, Boolean • Must allocate memory for them. The variable is a reference to that memory. • Objects all have methods. • Objects are derived from the Object base class • Comparison (==) doesn’t always work as you’d expect. • Java normally auto-converts between the two. • Strings are kind of a hybrid • Has methods • Internally a fixed-size char array. • Can assign literals to it. • Do example (example01b_variables) • Observations? 3. CONSOLE I/O • Do it on the computer (example01c_console_io) • Observations? • Input is based on the Iterator pattern • We'll see this other places as well. • Not always very intuitive. • There are lots more ways to get input. 4. FILE I/O - INPUT • Lots of variants – I'll show you two. • [With a Scanner] Scanner s = Scanner(new File("blarg.txt")); // Now treat s just as before. • [With a BufferedReader (and a tweaked try)] try (BufferedReader br = new BufferedReader(new FileReader("blarg.txt")) { String line; line = br.readLine(); while (line != null) { // Process line // Get next line (if there is one) line = br.readLine(); } } 4. FILE I/O - OUTPUT • I like the BufferedWriter approach try { File f= new File("new_blarg.txt"); if (!f.exists()) f.createNewFile(); BufferedWriter bw = new BufferedWriter(new FileWriter(f)); bw.write("This is the first line!\n"); bw.write("This is the second!\n"); bw.close(); // IMPORTANT – usually } catch (IOException e) { System.out.println("Error creating new_blarg.txt!"); } 5. ARRAYS IN JAVA • Do an example on computer (example01d_arrays) • Observations? • Java only supports Homogeneous arrays • We'll see with objects + inheritance you can side-step this limit. • You have to declare size at creation time. • No automatic support for dynamic arrays • Linked Lists (our first data structure) have this. • Creating / copy expanding lists is a costly operation. 6. INTRODUCING CLASSES • Terminology • A class is a blueprint for a new type • An object is an instance (variable) of that type • A class contains a description of the type: • instance variables: each instance of the class has their own copy of each of these. • instance methods: each instance can call these methods (using dot operator) • If any instance variables are used, they belong to the calling instance. • class variables: The variable is associated with the class. • There is only one copy. • Identified with static • class methods: Like an instance method, but can only access class variables. • Can be called through an instance or through the class. 6. EXAMPLE • Do example an example (example01e_classes_intro) • Observations? • Access modifiers (public, private, protected, or [None]) • Limit who can access it. • For now: • Make classes public • Make all callable methods public • Make all instance / class variables protected (or private) • Packages • Static vs. Instances members • Can be a bit confusing…