Download Intro to Java

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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…