An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

29
An Overview of JAVA From basic to slightly less basic Jonathan- Lee Jones

Transcript of An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Page 1: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

An Overview of JAVAFrom basic to slightly less basic

Jonathan-LeeJones

Page 2: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Overview

• Why JAVA?• The VERY basics• Data Types• Arrays• Functions & Methods and more advanced stuff• Examples

Page 3: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Why JAVA?

The programs that we are writing are very similar to their counterparts in several other languages, so our choice of language is not crucial. We use Java because it is widely available, embraces a full set of modern abstractions, and has a variety of automatic checks for mistakes in programs, so it is suitable for learning to program. There is no perfect language, and you certainly will be programming in other languages in the future.

Page 4: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

The VERY BasicsProgramming in Java. We break the process of programming in Java into three steps:Create the program by typing it into a text editor and saving it to a file named, say, MyProgram.java.Compile it by typing "javac MyProgram.java" in the terminal window.Run (or execute) it by typing "java MyProgram" in the terminal window.The first step creates the program; the second translates it into a language more suitable for machine execution (and puts the result in a file named MyProgram.class); the third actually runs the program.

Page 5: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

The VERY Basics

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); }}

Page 6: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

The VERY Basics

class UseArgument { public static void main(String[] args) { System.out.print("Hello, "); System.out.print(args[0]); System.out.print(", "); System.out.print(args[1]); System.out.print(", "); System.out.print(args[2]); System.out.println("!"); } }

Page 7: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

The VERY Basicsclass UseArgument { public static void main(String[] args) {if(args.length>0){ System.out.print("Hello, "); System.out.print(args[0]); System.out.print(", "); System.out.print(args[1]); System.out.print(", "); System.out.print(args[2]); System.out.println("!");

System.out.println}Else

System.out.println(“Error!”); } }

Page 8: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Data Types

There are many built in types in JAVA. These built in types can be primitive types, or object types. There are more options available as to what the programmer can do with the more complicated objects than the simple built in primitive types.

int char long

Integer String double

float Double boolean

Page 9: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

ArraysArrays can be though of as a set of values. They can be of any data type (and can even be of user made objects, or other arrays). You represent an array by using the square brackets [] after the data type, and is created using the new command and giving it a size.

Eg. int[] numbers = new int[10];

An array is used when you want to store a series of values. The most common array you have all used already!

Public static void main(String[] args)

This line, in all of your programs contains the array args. It is an array of type String, and is used to store all the command line arguments input by the user.

Page 10: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Arrays

When you create a new array using the “new” command, you initialise all the values in it to 0. An array is a series of memory locations, and the variable name points the first position.

In JAVA, you can then index each position in the array by using Array[i] where I is the position you want to read. In C++ this is trickier, as you need to know the bit-size of each element to move through memory.

If you use “System.out.println(ArrayName);” then you will print the pointer to the memory address the array starts at.

Array[0]

Array[1]

Array[2]

Array[3]

Array[4]

Array

Page 11: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

ArraysThis code will create an array of numbers between 0 and n, where n is specified by the user.

In JAVA arrays start at 0, so the first value would be array[0].

public class createArray {

public static void main(final String[] args) { final int n = Integer.parseInt(args[0]);

int[]numbers = new int[n]for(int i=0; i<n; ++i) numbers[i] = I;

}}

Page 12: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Functions & Methods

It is often easier to write functions to do a certain task. For example, if you know you are going to require a certain type of calculation repeatedly. Functions are usually of the type static, and methods dynamic, but apart from this they are very similar.

public class Max2 {

public static int max(final int a, final int b) { if (a>b) return a; else return b; } public static void main(final String[] args) { final int a = Integer.parseInt(args[0]); final int b = Integer.parseInt(args[1]); System.out.println("The maximum of " + a + " and " + b + " is " + max(a,b) + "."); }}

Page 13: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Functions & Methods

Functions can also be overloaded. This means that you can have a different function (in this case max) with the same name, but taking different inputs. JAVA identifies the correct one to use at compile time.

public class Max4 {

public static int max(final int a, final int b) { if (a>b) return a; else return b; } public static int max(final int a, final int b, final int c) { return max(max(a,b),c); } public static int max(final int a, final int b, final int c, final int d) { return max(max(a,b,c),d); }

public static void main(final String[] args) { final int a = Integer.parseInt(args[0]); final int b = Integer.parseInt(args[1]); final int c = Integer.parseInt(args[2]); final int d = Integer.parseInt(args[3]); StdOut.printf("The maximum of %d, %d, %d, %d is %d.\n", a,b,c,d,max(a,b,c,d)); }}

Page 14: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Functions & Methods

The term methods usually refers to dynamically called functions. These are not determined at compile time, but are called implicitly on an object. For example this.minVal() would run the minVal method on this object.

Methods are often used when the user creates objects of their own. A good example of this is a block object

Page 15: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Functions & Methodsclass Block{

private double height; private double width; private double length;

public Block(double height, double width, double length) { this.height=height; this.width=width; this.length=length; }

public double getTopArea() //legth x width { return length*width;} public double getFrontArea() //length x height {return length*height;} public double getSideArea() //width x height {return width*height;}

public double getVolume() //area x height {return length*height*width;}

}

Page 16: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Functions & Methodsclass BlockTest{

public static void main(String[] args){

if(args.length<3){

System.err.println(“Not enough arguments”);return;

}else{

double L = Double.parseDouble(args[0]);double W = Double.parseDouble(args[0]);double H = Double.parseDouble(args[0]);Block testB = new Block(L,W,H);System.out.println(“Volume = “ +

testB.getVolume());}

}}

Page 17: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Thank You

Page 18: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

EMB1006 JAVA Part 2

Arrays and onwards

Jonathan-LeeJones

Page 19: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Overview• Array Recap• Using an Array Example• Finding the lowest and highest values in an array• Defensive Programming

Page 20: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

What is an Array

• As mentioned previously, an array is a method for storing multiple values that are linked together.

• The name of the array is a pointer to the first address in memory.

• An array can be of any type, primitive or object (even user defined object for example student records) and can even be made up of other arrays to give a 2 dimensional, 3 dimensional or even greater array.

Page 21: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

An Example Array

• Arrays can be initialised as empty arrays, or just assigned values.

• To initialise as an empty array we use the following structure:– Int N = 100;– Int[] testArray = new int[N];

• To Initialise by assigning values we use the following structure:– Int[] testArray = {1,2,3,4,5,6,7,8,9};

Page 22: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

An Example Array

class Deck { public static void main(final String args[]) { final String suit[] = {"Clubs", "Diamonds", "Hearts", "Spades" }; final String rank[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" }; final int nr_suits = suit.length; final int nr_ranks = rank.length; final int nr_cards = nr_suits * nr_ranks; final String deck[] = new String[nr_cards]; for (int r = 0, base_index = 0; r < nr_ranks; ++r, base_index+=nr_suits) { for (int s=0; s < nr_suits; ++s) deck[base_index+s] = rank[r] + " of " + suit[s]; } } }

Page 23: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Shuffling the Deck Using an Arrayfor (int i = 0; i < nr_cards; ++i) { final int rand = i + (int) (Math.random() * (nr_cards-i)); final String t = deck[rand]; deck[rand] = deck[i]; deck[i] = t; } • The above code snippet will perform a shuffle on the deck. This is the

best method to use with the tools you have for creating a mathematically fair shuffle. You can test this if you want! Below is how you print contents of array (remember printing out the name just prints the memory address pointer!)

for (int i = 0; i < nr_cards; ++i) System.out.println(deck[i]);

Page 24: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Finding the Lowest and Highest Values

Write a short piece of code to find both the highest and lowest numbers from an array of size N, and print these out, alongside their position in the array.

You may need the following:-Integer.MIN_VALUE;Integer.MAX_VALUE;Array.length;For LoopInteger.parseInt();

Page 25: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Finding the Lowest and Highest Values

class minmax{ public static void main(String[] args){ int N = args.length; int[]numbers = new int[N]; int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; int maxPos =0; int minPos =0; for(int i=0;i<N;++i){ numbers[i]=Integer.parseInt(args[i]); if (numbers[i]>max){ max=numbers[i]; maxPos=i; } if (numbers[i]<min){ min=numbers[i]; minPos=i;}} System.out.println("Max = " + max + " at position " + maxPos +"."); System.out.println("Min = " + min + " at position " + minPos +"."); }}

What would happen if zero arguments were entered?

What else could go wrong?

Page 26: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Validating Input, Defensive programming

• When you allow the user to input values into the program, you inevitably invite errors at run time. If you ask for an int and they give a string for example. A large number of these can be avoided by using various scanner tools, but how would you validate command line input?

• You are tasked with writing a program to take in 3 numbers from the command line, then add the first 2 together then divide by the third. It is a trivial task, but you would be surprised how many problems may occur.

• Try to make sure that the program will not crash by throwing a run time exception, and also the program gives the expected values. What do you need to check to ensure this.

Page 27: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Validating Input, Defensive programming

class threeNums{ public static void main(String[] args){ int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]); double ans = (a+b)/c; System.out.println(“ans = ” + ans); }}

Page 28: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Validating Input, Defensive programming

lass threeNums{ public static void main(final String[] args){ final int a = Integer.parseInt(args[0]); final int b = Integer.parseInt(args[1]); final int c = Integer.parseInt(args[2]); double ans = (a+b)/c; System.out.println("ans = " + ans); }}

Page 29: An Overview of JAVA From basic to slightly less basic Jonathan-Lee Jones.

Validating Input, Defensive programming

Possible Errors that can occur:-

1. Not enough input arguments (program requires 3, what happens if it gets 2?)

2. If the third input is 0 what will happen?

3. What happens if a= 2,000,000,000 and b = 1,999,999,999?

4. What happens if the user inputs the following values by mistake:- 4 8u 22?

Is there anything else that can go wrong with this code?

What if the following numbers are input 1, 2 & 2?

What output do you expect, and what do you get?