Introduction to Java 2 Programming Lecture 2 Java Syntax, Robocode Overview • Java Syntax – The Basics – Classes, Packages • Robocode – How it works – Writing Robots – Anatomy of a Robot • Practical Exercises Naming • All Java syntax is case sensitive • Valid Java names – Consist of letters, numbers, underscore, and dollar – Names can only start with letter or underscore – E.g. firstAttribute but not 1stAttribute • “Camel case” convention – Java encourages long, explanatory names – Start with a lower case letter, with words capitalised – E.g. thisIsCamelCase, andSoIsThisAsWell Java Types • Java has two basic types – Primitive types – Reference Types • Primitive types – integers, floating point numbers, characters, etc – Refer to actual values • Reference types – Arrays, Classes, Objects, etc – Refer to memory locations (by name, not location) Primitive Types Type Description Size Boolean (boolean) True/false value 1 bit Byte (byte) Byte-length integer 1 byte Short (short) Short integer 2 bytes Integer (int) Integer 4 bytes Long (long) Long Integer 8 bytes Float (float) Single precision floating point number 4 bytes Double (double) Double precision float 8 bytes Char (char) Single character 2 bytes Syntax Examples (Variables) int anInteger; Boolean isSwitchOn; Variables can be initialised when they are declared Int anInteger = 10; Boolean isSwitchOn = true; Syntax Examples (if) if (x == y) { //executes if true } if (somethingIsTrue()) { doSomething(); } else { doSomethingElse(); } Example (for) int x=0; for (int i=1; i<=10; i++) { //code to repeat ten times x = x + i; } Example (while) int x=0; while (x < 10) { doSomething(); x++; } //loop forever while (true) { } Methods • Define some behaviour of a class • Method declarations have four basic sections, and a method body: – – – – Visibility modifier (who can call the method) Return type (what does it return) Method name Parameter list (what parameters does it accept) Syntax Examples (Methods) public void calculatePayroll() { //code goes here } private int addNumbers(int x, int y) { //code goes here } Method Naming Conventions • If a method sets some value on an object public void setVatLevel(float vat); • If a method retrieves some value from the object public float getTotalPayroll(); • If a method returns a boolean value public boolean isSwitchOn(); Classes • One Java class defined in each .java file • File name must match the name of the class – Otherwise there will be compilation errors – Class names start with an upper case letter • Compiler will generate a .class file with same name – Contains the bytecode • Classes defined using the class keyword. Packages • Group related classes together • Each class in a package must have a unique name • Indicate the package a class belongs to with the package keyword • Recommended each class is put in a package • Gain access to public classes in other packages using the import keyword – The JVM needs to know where the classes are defined before you can use them Anatomy of a Java Source File package intro2java; import java.util.*; /** * A description of the class */ public class MyFirstClass { //attributes private boolean isSomething; private int aCounter; //methods public void doSomething() { //code goes here } } Common Sources of Error • Mistakes in naming – Wrong case, illegal names – class name and source file name not the same • Missing semi-colon • Missing curly brackets • Incorrect Loop checks – Loop is too large/small, or occurs forever • Testing equality – Assignment with = (single equals sign) – Comparison with == (two equals signs) Overview • Java Syntax – Quick Overview • Robocode – How it works – Writing Robots – Anatomy of a Robot • Practical Exercises Anatomy of a Robot package yourname; import robocode.*; /** * Description of Robot */ public class MyRobot extends Robot { /** * Description of run method */ public void run() { //the robots behaviour } }