For live Java EE training, please see training courses



Similar documents
Basic Java Syntax. Slides 2016 Marty Hall,

Java with Eclipse: Setup & Getting Started

core 2 Basic Java Syntax

Official Android Coding Style Conventions

Advanced Java Client API

Android Programming: Installation, Setup, and Getting Started

The Google Web Toolkit (GWT): Declarative Layout with UiBinder Basics

AP Computer Science Java Subset

Building Web Services with Apache Axis2

Introduction to Java

Hadoop Streaming coreservlets.com and Dima May coreservlets.com and Dima May

Introduction to Java Lecture Notes. Ryan Dougherty

Sample CSE8A midterm Multiple Choice (circle one)

MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question.

Apache Pig Joining Data-Sets

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

Android Programming Basics

Map Reduce Workflows

Android Programming: 2D Drawing Part 1: Using ondraw

1.1 Your First Program

Install Java Development Kit (JDK) 1.8

Virtual Machine (VM) For Hadoop Training

Handout 3 cs180 - Programming Fundamentals Spring 15 Page 1 of 6. Handout 3. Strings and String Class. Input/Output with JOptionPane.

System.out.println("\nEnter Product Number 1-5 (0 to stop and view summary) :

JHU/EP Server Originals of Slides and Source Code for Examples:

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

The Google Web Toolkit (GWT): The Model-View-Presenter (MVP) Architecture Official MVP Framework

Object Oriented Software Design

JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4

HBase Key Design coreservlets.com and Dima May coreservlets.com and Dima May

AP Computer Science Static Methods, Strings, User Input

The Google Web Toolkit (GWT): Overview & Getting Started

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Java Programming Fundamentals

Web Programming Step by Step

Web Applications. For live Java training, please see training courses at

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

CS106A, Stanford Handout #38. Strings and Chars

Chapter 2 Introduction to Java programming

Moving from CS 61A Scheme to CS 61B Java

Web Applications. Originals of Slides and Source Code for Examples:

CS 106 Introduction to Computer Science I

HBase Java Administrative API

Example of a Java program

Hadoop Distributed File System (HDFS) Overview

ESPResSo Summer School 2012

Topic 11 Scanner object, conditional execution

HDFS - Java API coreservlets.com and Dima May coreservlets.com and Dima May

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

java Features Version April 19, 2013 by Thorsten Kracht

CS1020 Data Structures and Algorithms I Lecture Note #1. Introduction to Java

Programmierpraktikum

Object Oriented Software Design

Computer Programming I

Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language

Java Crash Course Part I

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Building Java Programs

J a v a Quiz (Unit 3, Test 0 Practice)

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

WA2099 Introduction to Java using RAD 8.0 EVALUATION ONLY. Student Labs. Web Age Solutions Inc.

CompSci 125 Lecture 08. Chapter 5: Conditional Statements Chapter 4: return Statement

Debugging Ajax Pages: Firebug

Part I. Multiple Choice Questions (2 points each):

2011 Marty Hall An Overview of Servlet & JSP Technology Customized Java EE Training:

Chapter 2. println Versus print. Formatting Output withprintf. System.out.println for console output. console output. Console Input and Output

Introduction to Object-Oriented Programming

Managed Beans II Advanced Features

Building Java Programs

Building Java Programs

Unit 6. Loop statements

Introduction to Programming

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

Introduction to Java. CS 3: Computer Programming in Java

Web Development using PHP (WD_PHP) Duration 1.5 months

Custom Javascript In Planning

WIRIS quizzes web services Getting started with PHP and Java

Chapter 3. Input and output. 3.1 The System class

HDFS Installation and Shell

Application Security

Handling the Client Request: Form Data

Chapter 2 Elementary Programming

Basic Programming and PC Skills: Basic Programming and PC Skills:

JavaScript: A Crash Course

Quick Introduction to Java

Chapter 5 Functions. Introducing Functions

CSE 1223: Introduction to Computer Programming in Java Chapter 7 File I/O

JavaScript: Introduction to Scripting Pearson Education, Inc. All rights reserved.

& JSP Technology Originals of Slides and Source Code for Examples:

Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game

Chulalongkorn University International School of Engineering Department of Computer Engineering Computer Programming Lab.

Crash Course in Java

Building Java Programs

Facebook Twitter YouTube Google Plus Website

Session Tracking Customized Java EE Training:

Java Programming Unit 1. Your first Java Program Eclipse IDE

Course Intro Instructor Intro Java Intro, Continued

CSC 551: Web Programming. Fall 2001

Transcription:

2012 Marty Hall Basic Java Syntax Originals of Slides and Source Code for Examples: http://courses.coreservlets.com/course-materials/java.htmlcoreservlets com/course-materials/java html 3 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. 2012 Marty Hall For live Java EE training, please see training courses at http://courses.coreservlets.com/. JSF 2.0, PrimeFaces, Servlets, JSP, Ajax (with jquery), GWT, Android development, Java 6 and 7 programming, SOAP-based and RESTful Web Services, Spring, Hibernate/JPA, XML, Hadoop, and customized combinations of topics. Taught by the author of Core Servlets and JSP, More Servlets and JSP, and this tutorial. Available at public venues, Customized or customized Java EE Training: versions http://courses.coreservlets.com/ can be held on-site at your organization. Contact hall@coreservlets.com for details. Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Topics in This Section 5 Basics Creating, compiling, and executing simple Java programs Accessing arrays Looping Indenting Code Using if statements Comparing strings Building arrays One-step process Two-step process Using multidimensional arrays Performing basic mathematical ti operations Reading command-line input 2012 Marty Hall Basics 6 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Eclipse: Making Projects Creating new project File New Project Java Java Project Pick any name To simplify applets later, choose Sources/Classes in same folder Creating new class R-click New Class You can have Eclipse make main when class created, or use shortcut to insert it later You can also copy/paste existing class, then give it new name Getting Started: Syntax 8 Example public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world."); Details Processing starts in main Eclipse can create main automatically When creating class: choose main as option Eclipse shortcut inside class: type main then hit Control-space Routines usually called methods, not functions. Printing is done with System.out.print... System.out.println, System.out.print, System.out.printf Eclipse shortcut: type sysout then hit Control-space

Getting Started: Execution File: HelloWorld.java public class HelloWorld ld { public static void main(string[] args) { System.out.println("Hello, world."); Compiling Eclipse: just save file DOS> javac HelloWorld.java Executing Eclipse: R-click, Run As, Java Application DOS> java HelloWorld Hello, world. 9 More Basics 10 Use + for string concatenation Arrays are accessed with [ ] Array indices are zero-based The argument to main is an array of strings that correspond to the command line arguments args[0] returns first command-line argument args[1] returns second command-line argument, etc. Error if you try to access more args than were supplied The length field Gives the number of elements in any array Thus, args.length gives the number of command-line arguments Unlike in C/C++, the name of the program is not inserted into the command-line arguments

Command-line Arguments Are useful for learning and testing Command-line args are helpful for practice But, programs given to end users should almost never use command-line arguments They should pop up a GUI to collect input. Eclipse has poor support Entering command-line args via Eclipse is more trouble than it is worth So, to test with command-line args: Save the file in Eclipse (causing it to be compiled) Navigate to folder on desktop (not within Eclipse) Open command window (Run cmd) Type java Classname arg1 arg2 Example: Command Line Args and the length Field File: ShowTwoArgs.java (naïve version) public class ShowTwoArgs { public static void main(string[] args) { System.out.println("First arg: " + args[0]); System.out.println("Second t tl arg: " + args[1]); 12 Oops! Crashes if there are less than two command-line arguments. The code should have checked the length field, like this: if (args.length g > 1) { dotheprintstatements(); else { giveanerrormessage();

Example (Continued) Compiling (automatic on save in Eclipse) DOS> javac ShowTwoArgs.java Manual execution DOS> java ShowTwoArgs Hello Class First args Hello Second arg: Class 13 DOS> java ShowTwoArgs [Error message] Eclipse execution (cumbersome) To assign command line args: R-click, Run As, Run Configurations, click on Arguments tab 2012 Marty Hall Loops 14 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Looping Constructs for/each for(variable: collection) { body; for for(init; continuetest; updateop) { body; while while (continuetest) { body; do do { body; while (continuetest); 15 For/Each Loops public static void listentries(string[] entries) { for(string entry: entries) { System.out.println(entry); Result String[] test = {"This", "is", "a", "test"; listentries(test); This is a test 16

For Loops public static void listnums1(int max) { for(int i=0; i<max; i++) { System.out.println("Number: " + i); Result listnums1(4); Number: 0 Number: 1 Number: 2 Number: 3 17 While Loops public static void listnums2(int max) { int i = 0; while (i < max) { System.out.println("Number: " + i); i++; // "++" means "add one" Result listnums2(5); 18 Number: 0 Number: 1 Number: 2 Number: 3 Number: 4

Do Loops public static void listnums3(int max) { int i = 0; do { System.out.println("Number: " + i); i++; while (i < max); // ^ Don t forget semicolon 19 Result listnums3(3); Number: 0 Number: 1 Number: 2 2012 Marty Hall Class Structure and Formatting 20 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Defining Multiple Methods in Single Class public class LoopTest { public static ti void main(string[] i args) { String[] test = { "This", "is", "a", "test"; listentries(test); listnums1(5); listnums2(6); listnums3(7); These methods say static because they are called directly from main. In the next two sections on OOP, we will explain what static means and why most regular methods do not use static. But for now, just note that methods that are directly called by main must say static. 21 public static void listentries(string[] entries) { public static void listnums1(int max) { public static void listnums2(int max) { public static void listnums3(int max) { Indentation: blocks that are nested more should be indented more Yes No 22

Indentation: blocks that are nested the same should be indented the same Yes No 23 Indentation: Number of spaces and placement of braces is a matter of taste 24 OK OK OK for(...) { for(...) {

2012 Marty Hall Conditionals and Strings 25 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. If Statements Single option if (boolean-expression) { statement1;... statementn; Two options if (boolean-expression) {... else {... Multiple options if (boolean-expression) {... else if (boolean-expression) {... else if (boolean-expression) {... else {... The value inside parens must strictly be boolean, unlike C, C++, and JavaScript. A widely accepted best practice is to use the braces even if there is only a single statement inside the if or else. 26

Switch Statements Example int month =...; String monthstring; switch(month) { case 1: monthstring = "January"; break; case 2: monthstring = "February"; break; case 3: monthstring = "March"; break;... default: monthstring = "Invalid month"; break; Syntax is mostly like C and C++ Types can be primitives, enums, and (Java 7+ only) Strings 27 Boolean Operators ==,!= Equality, inequality. In addition to comparing primitive iti types, == tests if two objects are identical (the same object), not just if they appear equal (have the same fields). More details when we introduce objects. <, <=, >, >= Numeric less than, less than or equal to, greater than, greater than or equal lto. &&, Logical AND, OR. Both use short-circuit evaluation to more efficiently compute the results of complicated expressions.! Logical negation. 28

Example: If Statements public static ti int max(int n1, int n2) { if (n1 >= n2) { return(n1); else { return(n2); 29 Strings 30 Basics String is a real class in Java, not an array of characters as in C and C++. The String class has a shortcut method to create a new object: just use double quotes This differs from normal objects, where you use the new construct to build an object Use equals to compare strings Never use == to test if two Strings have same characters! Many useful builtin methods contains, startswith, endswith, indexof, substring, split, replace, replaceall Note: can use regular expressions, not just static strings touppercase, tolowercase, equalsignorecase

Common String Error: Comparing with == public static void main(string[] args) { String match = "Test"; if (args.length == 0) { System.out.println("No args"); else if (args[0] == match) { System.out.println("Match"); else { System.out.println("No match"); Prints "No match" for all inputs Fix: if (args[0].equals(match)) 31 2012 Marty Hall Arrays 32 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Building Arrays: One-Step Process Declare and allocate array in one fell swoop type[] var = { val1, val2,..., valn ; Examples: int[] values = { 10, 100, 1000 ; String[] names = {"Joe", "Jane", "Juan"; Point[] points = { new Point(0, 0), new Point(1, 2), new Point(3, 4) ; 33 34 Building Arrays: Two-Step Process Step 1: allocate an array of references: type[] var = new t type[size]; [i ] E.g.: int[] primes = new int[7]; String[] names = new String[someArray.length]; Step 2: populate the array primes[0] = 2; names[0] ="Joe"; primes[1] = 3; names[1] = "Jane"; primes[2] = 5; names[2] = "Juan"; primes[3] = 7; names[3] = "John"; etc. If you fail to populate an entry Default value is 0 for numeric arrays Default value is null for object arrays

Two-Step Process: Examples public static Circle[] makecircles1(int numcircles) { Circle[] circles = new Circle[numCircles]; // Empty array of proper size for(int i=0; i<circles.length; i++) { circles[i] = new Circle(Math.random() * 10); // Populate array This approach is correct! return(circles); public static Circle[] makecircles2(int numcircles) { Circle[] circles = new Circle[numCircles]; // Empty array of proper size for(int i=0; i<circles.length; i++) { circles[i].setradius(math.random() * 10); // NullPointerException return(circles); This approach fails: crashes with NullPointerException because circles[i] is null. 35 public static Circle[] makecircles3(int numcircles) { Circle[] circles = new Circle[numCircles]; for(circle c: circles) { c = new Circle(Math.random() * 10);; // Fails to store c in array return(circles); // Array still contains only null pointers This approach fails: array is still empty after the loop. Array Performance Problems 36 For very large arrays, undue paging can occur Array of references (pointers) allocated dfirst Individual objects allocated next Thus, for very large arrays of objects, reference and object can be on different pages, resulting in swapping for each array reference Example String[] names = new String[10000000]; for(int i=0; i<names.length; i++) { names[i] = getnamefromsomewhere(); Problem does not occur with arrays of primitives I.e., with arrays of int, double, and other types that start with lowercase letter Because system stores values directly in arrays, rather than storing references (pointers) to the objects

Multidimensional Arrays Multidimensional arrays Implemented as arrays of arrays int[][] twod = new int[64][32]; ] String[][] cats = {{ "Caesar", "blue-point", { "Heather", "seal-point", { "Ted", "red-point" ; Note: Number of elements in each row need not tbe equal 37 int[][] irregular = { { 1, { 2, 3, 4, { 5, { 6, 7 ; TriangleArray: Example public class TriangleArray { public static void main(string[] args) { int[][] triangle = new int[10][]; for(int i=0; i<triangle.length; i++) { triangle[i] = new int[i+1]; 38 for (int i=0; i<triangle.length; i++) { for(int j=0; j<triangle[i].length; j++) { System.out.print(triangle[i][j]); System.out.println();

TriangleArray: Result > java TriangleArray 0 00 000 0000 00000 000000 0000000 00000000 000000000 0000000000 39 2012 Marty Hall Math and Input 40 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.

Basic Mathematical Routines 41 Very simplest routines use builtin operators +, -, *, /, ^, % Be careful with / on int and long variables Static methods in the Math class So you call Math.cos(...), Math.random(), etc. Most operate on double precision floating point numbers Simple operations: Math.pow(), etc. pow (x y ), sqrt ( x), cbrt, exp (e x ), log (log e ), log10 Trig functions: Math.sin(), etc. sin, cos, tan, asin, acos, atan Args are in radians, not degrees, (see todegrees and toradians) Rounding and comparison: Math.round(), etc. round/rint, floor, ceiling, abs, min, max Random numbers: Math.random() random (Math.random() returns from 0 inclusive to 1 exclusive). See Random class for more control over randomization. More Mathematical Routines Special constants Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NAN Double.MAX_VALUE Double.MIN_VALUE Unlimited precision libraries BigInteger, BigDecimal Contain the basic operations, plus BigInteger has isprime i 42

Reading Simple Input For simple testing, use standard input If you want strings, just use args[0], args[1], as before To avoid errors, check args.length first Convert if you want numbers. Two main options: Use Scanner class Note that you need import statement. See next slide! Scanner inputscanner = new Scanner(System.in); int i = inputscanner.nextint(); nextint(); double d = inputscanner.nextdouble(); Convert explicitly (Integer.parseInt, Double.parseDouble) String seven = "7"; int i = Integer.parseInt(seven); In real applications, use a GUI Collect input with textfields, sliders, combo boxes, etc. Convert to numeric types with Integer.parseInt, Double.parseDouble, etc. 43 Example: Printing Random Numbers import java.util.*; 44 public class RandomNums { public static void main(string[] args) { System.out.print("How many random nums? "); Scanner inputscanner = new Scanner(System.in); int n = inputscanner.nextint(); for(int i=0; i<n; i++) { System.out.println("Random num " + i + " is " + Math.random()); How many random nums? 5 Random num 0 is 0.22686369670835704 Random num 1 is 0.07837685271377970783768527137797 Random num 2 is 0.17918121951887145 Random num 3 is 0.3441924454634313 Random num 4 is 0.6131053203170818

2012 Marty Hall Wrap-Up 45 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location. Summary 46 Basics Loops, conditional i statements, and array access is similar il to C and C++ But new for loop: for(string s: somestrings) { Indent your code for readability String is a real class in Java Use equals, not ==, to compare strings Allocate arrays in one step or in two steps If two steps, loop down array and supply values Use Math.blah() h() for simple math operations Simple input from command window Use command line for strings supplied at program startup Use Scanner to read values after prompts Neither is very important for most real-life applications

2012 Marty Hall Questions? 47 Customized Java EE Training: http://courses.coreservlets.com/ Java 6 or 7, JSF 2.0, PrimeFaces, Servlets, JSP, Ajax, Spring, Hibernate, RESTful Web Services, Android. Developed and taught by well-known author and developer. At public venues or onsite at your location.