0% found this document useful (0 votes)
30 views

Utility Classes

The document discusses Java utility classes and input/output. It covers the Math class and its functions, wrapper classes for primitive types, string management including parsing and formatting, and input/output through printing to the screen and reading from keyboard. The outline also mentions collections which are not discussed further.

Uploaded by

Jose Rey CId
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Utility Classes

The document discusses Java utility classes and input/output. It covers the Math class and its functions, wrapper classes for primitive types, string management including parsing and formatting, and input/output through printing to the screen and reading from keyboard. The outline also mentions collections which are not discussed further.

Uploaded by

Jose Rey CId
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

Lesson 4

Utility classes: Math, String, I/O

Programming
Grade in Computer Engineering
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 2
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 3
1. Math library
Advanced maths

Math is a special class in JDK that contains mathematic functions and


constants, all static.
Attributes:
E and PI
Functions:
Absolute value
Trigonometric
Maximum and minimum of two numbers
Natural logarithms and base 10
Exponential
Square and cubic roots
Random values

http://java.sun.com/javase/7/docs/api/java/lang/Math.html

Math class is inside the java.lang package – it is not necessary to import it!
Other Java mathematical libraries: Apache Jakarta Math library

[email protected] 4
1. Math library

AdvancedMaths.java
5
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 6
2. Wrapper classes
Number classes

Primitive datatypes are used most of the time to work with numbers
int x = 1;
double y = 1.2, z;
z = x * y;

Java provides, in addition, wrapper classes for each of the primitive


data types
These classes "wrap" the primitive value in an object
Often, wrapping is done by the compiler
If a primitive value is used when an object is expected, the compiler
automatically boxes the primitive into an object
If an object is used when a primitive value is expected, the compiler
automatically unboxes the object and uses the value

Integer x, y;
x = 12;
y = 15;
System.out.println(x+y);

[email protected] 7
2. Wrapper classes
Using wrapper classes

Wrapper classes are inside the java.lang package – it is not


necessary to import them!

There are three reasons that you might use a Number object rather than a primitive:
As an argument of a method that expects an object (often used when manipulating collections of
numbers).
To use constants defined by the class, such as MIN_VALUE and MAX_VALUE, that provide the upper
and lower bounds of the data type.
To use class methods for converting values to and from other primitive types, for converting to and from
strings, and for converting between number systems (decimal, octal, hexadecimal, binary)

[email protected] 8
2. Wrapper classes
Extended number classes

Large integer values can be managed with the


BigInteger class
http://download.oracle.com/javase/7/docs/api/java/math/BigInteger.html

BigInteger i = new BigInteger("9223372036854775808");

More precise floating point values can be managed


with the BigDecimal class
http://download.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

BigDecimal j = new BigDecimal("10E-500");

Extended classes are inside the java.math package – it is


necessary to import them!
No automatic boxing-unboxing (cf. wrapper classes)

[email protected] 9
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 10
3. String management
String class

Strings are complex data types to represent and


manage a string of characters

Strings are enclosed between double quotes ("")

> The String class contains static methods to


convert numbers to strings

> The wrapping classes (Integer, Float, etc.) contain


static methods to convert values to String
[email protected] 11
3. String management
Parsing strings into numbers

String ⇨ basic type


byte: Byte.parseByte(<string>)
short: Short.parseShort(<string>)
int: Integer.parseInt(<string>)
long: Long.parseLong(<string>)
boolean: Boolean.parseBoolean(<string>)
float: Float.parseFloat(<string>)
double: Double.parseDouble(<string>)
char: <string>.charAt(<position>)

[email protected] 12
3. String management
Parsing strings into numbers

String ⇨ basic type


If the format of the string is not correct, an error occurs
(NumberFormatException)
int x;
x = Integer.parseInt("abc"); // ERROR

To manage conversion errors, use a try-catch instruction


int x = 0;
try {
x = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Wrong number format");
}

[email protected] 13
3. String management
Parsing numbers into strings

Basic type ⇨ String


String.valueOf(<number expression>)
byte b;
short s;

> byte:
String s = String.valueOf(b);

> short:
String s = String.valueOf(s);

This conversion is automatically performed by the compiler in


some cases where a String is expected
> System.out.println("Sum: " + (3+5) );

> System.out.println("Sum: " + String.valueOf(3+5) );

[email protected] 14
3. String management
Examples

Strings.java

[email protected] 15
3. String management
Other string methods

Type Method
int compareTo(String anotherString)
Compares two strings lexicographically
boolean contains(CharSequence s)
Returns true if and only if this string contains the specified sequence of char values
boolean equals(Object anObject)
Compares this string to the specified object
int indexOf(String str)
Returns the index within this string of the first occurrence of the specified substring
int lastIndexOf(String str)
Returns the index within this string of the last occurrence of the specified substring
boolean matches(String regex)
Tells whether or not this string matches the given regular expression
String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement
String [] split(String regex)
Splits this string around matches of the given regular expression
String substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this string.

http://download.oracle.com/javase/7/docs/api/java/lang/String.html

[email protected] 16
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 17
4. Input and output
Printing on the screen

System.out for printing on screen


Methods for printing on screen:
Without a line jump:
System.out.print(<String expression>);

With a line jump:


System.out.println(<String expression>);

Line jump can be printed with the new line character ‘\n’:
println("Hi!") is equivalent to print("Hi!\n")

[email protected] 18
4. Input and output
Printing on the screen

Printing.java

[email protected] 19
4. Input and output
Formatting output

System.out.printf
String including conversion characters (placeholders)
%d: integers
%f: floating point numbers
%c: characters
%s: strings
…different number notations, dates, etc.

Corresponding expressions (as many as placeholders)


System.out.printf("%d", <integer expression>);
System.out.printf("%f %d", <real expression>, <integer expression>);

[email protected] 20
4. Input and output
Formatting output

Round floating-point values


System.out.printf("%2.1f", <real expression>);
2 digits for the integer part, 1 digit for the decimal part
System.out.printf("%.3f", <real expression>);
All digits in the integer part, 3 digits for the decimal part

Use different notations


System.out.printf("%e", <real expression>);
Exponential notation

Set field widths


System.out.printf("%5d", <integer expression>);
5 digits for the integer part

and more…
[email protected] 21
4. Input and output
Formatting output

FormattedOutput.java

[email protected] 22
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 23
4. Input and output
Reading from the keyboard

Scanner class can be used to read values from the keyboard (see
Lesson 2, slide 33)
Use:
1. Import java.util.* package
import java.util.*;

2. Declare and initialize a Scanner object sc


Scanner sc = new Scanner(System.in);

3. Read values
Integer: int a = sc.nextInt ();
Float: float b = sc.nextFloat();
Double: double c = sc.nextDouble();
String: String s = sc.next(); (No blank spaces)
String s = sc.nextLine(); (With blank spaces)

[email protected] 24
4. Input and output
Alternative to Scanner

Using streams to read from the keyboard:


1. Import java.io.*
2. Create an InputStreamReader isr based on
System.in
3. Create a BufferedReader br based on isr
4. Read a line s (String type) from the user with
br.readline() [try-catch must be used]
5. Convert s to the expected datatype with the parsing
methods [try-catch should be used]

[email protected] 25
4. Input and output
Alternative to Scanner

InputStreams.java
[email protected] 26
4. Input and output
Alternative to Scanner

InputStreams.java
[email protected] 27
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 28
4. Input and output
Arguments to main

The main method receives an array of String with the


strings given as arguments from the command line
public static void main(String[] args)

These strings can be used in the program


args[0], args[1], …
To use arguments as numbers, parsing is required

The command line arguments are space separated


An argument can span several words if it is enclosed with " "

These arguments can be also introduced in Eclipse


Run >> Run configurations --> Java Application, Arguments tab
An argument can span several words if it is enclosed with " "

[email protected] 29
4. Input and output
Arguments to main

Arguments

AddTwoArguments.java
[email protected] 30
Arguments to main

AddTwoArguments.java
31
4. Input and output
Arguments to main

Arguments.java
[email protected] 32
4. Input and output
Arguments to main

AddTwoArguments.java
[email protected] 33
4. Input and output
Arguments to main

AddTwoArguments.java
[email protected] 34
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 35
5. Collections
ArrayList

Arrays:
Hold a sequence of basic type values or objects
They have fixed-length, specified in the initialization with new (can
be consulted with array.length)
If we want to add a new element that exceeds its capacity, we
need to define a new larger array, and then copy the first one into
the second one (System.arraycopy)
Dynamic arrays:
Hold objects of a single type (jdk1.5 introduces “generics”, with
extended functionalities)
They have variable length and elements can be dynamically added
or removed from the collection
Java provides several pre-implemented classes to represent and
manage sets/lists in the package java.util: ArrayList, Vector, etc.

36
5. Collections
ArrayList

ArrayList is a class for arrays that grow dynamically and


in which we can store all sorts of elements
Some methods:
boolean add(Object o): Add o to the end
void add(int index, Object o): Add o to the specified
position index. The indexes start at zero (the same as arrays)
Object get(int index): Return the element at a specific
position. Since it returns a generic Object, we need to make a
explicit casting to the expected object
int size(): Return the size (number of elements) of the
vector
Object remove(int index): Deletes the element at position
index

37
5. Collections
ArrayList

A class must be used! Basic types cannot be


used. Use wrapper classes: Integer, Float,
Double, Character, etc.

Wrapper classes are automatically used

Proper printing with System.out.println

ArrayListExample.java
38
5. Collections
ArrayList

ArrayListExampleObjects.java

39
5. Collections
Enhanced for for collections

for loops are commonly used to perform operations on the elements


of a collection
arrays
int [] a = new int[10];

for(int i=0; i<a.length; i++) {
int c = a[i];
// operate with c
}

ArrayList
ArrayList<Point2D> points = new ArrayList<Point2D>();

for(int i=0; i<a.size(); i++) {
Point2D p = points.get(i);
// operate with p
}

[email protected] 40
5. Collections
Enhanced for for collections

Java offers a simplified for statement to deal with


collections (arrays, ArrayList, etc.)
for( <element type> <element name> : <collection name>) {
// Loop instructions
}

<collection name> is a valid collection reference


e.g.: a, being a declared before as int [] a
<element type> is the type of the elements of the collection
e.g.: int
<element name> is the variable which will be used inside the loop to
store a copy of the current element
e.g.: c
[email protected] 41
5. Collections
Enhanced for for collections

[email protected] 42
Outline

1. Math class
2. Wrapper classes
3. String management
4. Input and output
Printing on the screen
Reading from keyboard
Arguments to main
5. Collections

[email protected] 43
Summary
Utility classes

> Math class


Mathematic functions and constants
e, π
Trigonometric, logarithms, exponential, random values
import is not required

> Wrapper classes


Number basic datatypes have a corresponding object-like version
The compiler makes automatic boxing-unboxing

> Strings
Conversion from String > number
parse methods of wrapper classes
Conversion from number > String
valueOf method of String
The compiler automatically "stringifies" numbers

[email protected] 44
Summary
Utility classes

> Printing
System.out.println, System.out.printf
> Reading
Scanner, InputStreamReader + BufferedReader

> Arguments
args String []

> Collections
ArrayList
extended for

[email protected] 45
Additional lectures
Utility classes

Recommended lectures
The JavaTM Tutorials. Oracle, Numbers and Strings [link]
H. M. Deitel, P. J. Deitel. Java: How to Program. Prentice Hall,
2007 (7th Edition), Chapters 29 [link], 30 [link]
K. Sierra, B. Bates. Head First Java. O'Reilly Media, 2005 (2nd
Edition), Chapter 10 [link]
H. M. Deitel, P. J. Deitel. Java: How to Program. Prentice Hall,
2007 (7th Edition), Chapter J [link]

[email protected] 46
Programming – Grado en Ingeniería Informática
Authors
Of this version:
Juan Gómez Romero

Based on the work by:


Ángel García Olaya
Manuel Pereira González
Silvia de Castro García
Gustavo Fernández-Baillo Cañas

47

You might also like