431 lines
7.0 KiB
Plaintext
431 lines
7.0 KiB
Plaintext
|
Application
|
|||
|
Programming
|
|||
|
Hend Alkittawi
|
|||
|
|
|||
|
Basic Java Data Structures
|
|||
|
Arrays and ArrayLists, Wrapper
|
|||
|
Classes and Static Methods
|
|||
|
|
|||
|
JAVA ARRAYS
|
|||
|
-
|
|||
|
|
|||
|
Arrays in Java are objects which can be declared
|
|||
|
-
|
|||
|
|
|||
|
by size
|
|||
|
int[] myNumbers = new int[4];
|
|||
|
Employee[] employees = new Employee[10];
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
by values directly (using an array initializer)
|
|||
|
double[] myNumbers = {10.5, 20.34, 30.8, 40.12};
|
|||
|
Account[] accounts = {accountOne, accountTwo};
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Access values in an array by providing an index
|
|||
|
double x = myNumbers[0];
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Overwrite values at an index by using assignment
|
|||
|
x = x + 5;
|
|||
|
myNumbers[1] = x;
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Loop over array elements to fill array, modify elements,… etc.
|
|||
|
for (int i = 0; i < myNumbers.length; i++){
|
|||
|
myNumbers[i] = i * 10;
|
|||
|
System.out.println(myNumbers[i]);
|
|||
|
}
|
|||
|
|
|||
|
JAVA ARRAYS
|
|||
|
-
|
|||
|
|
|||
|
Recall the String manipulation methods
|
|||
|
String stringA = "I’m out of candy corn, send help!";
|
|||
|
for( int i = 0; i < stringA.length(); i++ ){
|
|||
|
char c = stringA.charAt(i);
|
|||
|
System.out.print( c );
|
|||
|
}
|
|||
|
String[] sentences = stringA.split( "," );
|
|||
|
System.out.println( sentences.length );
|
|||
|
System.out.println( sentences[1].trim() );
|
|||
|
|
|||
|
JAVA ARRAYLISTS
|
|||
|
-
|
|||
|
|
|||
|
An ArrayList object is an array that can grow or shrink as
|
|||
|
needed! Use an ArrayList when you don’t know how many of
|
|||
|
something you need.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
To create an ArrayList:
|
|||
|
ArrayList<Integer> grades = new ArrayList<Integer>();
|
|||
|
ArrayList<String> letters = new ArrayList<String>();
|
|||
|
ArrayList<Employee> employees = new ArrayList<Account>();
|
|||
|
ArrayList<Account> accounts = new ArrayList<Account>();
|
|||
|
More on generics later!
|
|||
|
|
|||
|
JAVA ARRAYLISTS
|
|||
|
-
|
|||
|
|
|||
|
Some useful methods for working with ArrayLists:
|
|||
|
-
|
|||
|
|
|||
|
add() to add an object to the ArrayList
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
get(int index) to get an object from the ArrayList
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
contains() to check if an element is in the ArrayList
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
size() to get the number of elements currently in the ArrayList
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
remove(int index) to remove an object from an index in the
|
|||
|
ArrayList
|
|||
|
ArrayList<Integer> grades = new ArrayList<Integer>();
|
|||
|
grades.add(5);
|
|||
|
boolean present = grades.contains(7);
|
|||
|
ArrayList<String> letters = new ArrayList<String>();
|
|||
|
letters.add("CS3443");
|
|||
|
|
|||
|
WRAPPER CLASSES
|
|||
|
-
|
|||
|
|
|||
|
Each primitive data type has a corresponding wrapper class,
|
|||
|
which enables you to manipulate primitive type values as
|
|||
|
objects. For example:
|
|||
|
-
|
|||
|
|
|||
|
double has Double
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
int has Integer
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
char has Character
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
boolean has Boolean
|
|||
|
|
|||
|
WRAPPER CLASSES
|
|||
|
-
|
|||
|
|
|||
|
The conversion between the primitive data type and wrapper
|
|||
|
class type is mostly automatic
|
|||
|
-
|
|||
|
|
|||
|
converting a primitive type to wrapper class is called
|
|||
|
autoboxing.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
converting a wrapper class object to primitive type is called
|
|||
|
unboxing.
|
|||
|
|
|||
|
Double dbox = Math.sqrt(2);
|
|||
|
double d = 1.0 / dbox;
|
|||
|
|
|||
|
// autoboxing
|
|||
|
// unboxing
|
|||
|
|
|||
|
WRAPPER CLASSES
|
|||
|
-
|
|||
|
|
|||
|
Wrapper classes provide several methods for manipulating data.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Some of the methods provided by these classes:
|
|||
|
-
|
|||
|
|
|||
|
Double.parseDouble() to translate a String into a double value
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Integer.parseInt() to translate a String into a int value
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Character.getNumericValue() to translate a specified Unicode
|
|||
|
character into the int value that it represents.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Note that there is no object associated with these methods
|
|||
|
|
|||
|
STATIC METHODS
|
|||
|
-
|
|||
|
|
|||
|
Methods we have seen so far execute in response to method
|
|||
|
calls on specific objects.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Sometimes a method performs a task that does not depend on an
|
|||
|
object. These methods are called static/class methods.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
To declare a method as static, place the static keyword before
|
|||
|
the return type in the method’s declaration.
|
|||
|
public static void myMethod( arguments ) { method body }
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
To call a class’s static method, specify the class name
|
|||
|
followed by a dot (.), and the method name.
|
|||
|
ClassName.methodName(arguments);
|
|||
|
|
|||
|
STATIC METHODS
|
|||
|
-
|
|||
|
|
|||
|
Some of the static methods in the String class:
|
|||
|
-
|
|||
|
|
|||
|
String.valueOf() to get the String value of a given variable
|
|||
|
of a primitive type
|
|||
|
String s = String.valueOf( 350.4 );
|
|||
|
System.out.println( s.charAt(3) );
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
String.format() to format a string, similar to sprintf in C.
|
|||
|
|
|||
|
String.format("Account object: name = %s, balance =
|
|||
|
$%.2f", name, balance);
|
|||
|
|
|||
|
STATIC METHODS
|
|||
|
-
|
|||
|
|
|||
|
The class Math contains static methods for performing basic
|
|||
|
numeric operations such as the elementary exponential,
|
|||
|
logarithm, square root, and trigonometric functions
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Here are a few class methods to try:
|
|||
|
double absValPos = Math.abs(13)
|
|||
|
double absValNeg = Math.abs(-13)
|
|||
|
double minVal
|
|||
|
= Math.min(3, 4)
|
|||
|
|
|||
|
OBJECT VS. STATIC METHODS
|
|||
|
-
|
|||
|
|
|||
|
There are two types of methods in Java
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
●
|
|||
|
|
|||
|
Object methods
|
|||
|
-
|
|||
|
|
|||
|
Associated with an object
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Sent as a message to an object
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Implicitly passed to the current object
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Keyword: this
|
|||
|
|
|||
|
Class/Static methods
|
|||
|
-
|
|||
|
|
|||
|
Not associated with a particular object
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Sent as a message to a class
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Keyword: static
|
|||
|
|
|||
|
When to use static methods - Stack Overflow
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
Given the strings below, which of the following lines contain
|
|||
|
an object method?
|
|||
|
String greeting = "HI";
|
|||
|
String obvious = "This is a string";
|
|||
|
String strWithSpace = "
|
|||
|
1.
|
|||
|
|
|||
|
greeting.toLowerCase();
|
|||
|
|
|||
|
2.
|
|||
|
|
|||
|
String.valueOf(55);
|
|||
|
|
|||
|
3.
|
|||
|
|
|||
|
obvious.indexOf( "is");
|
|||
|
|
|||
|
4.
|
|||
|
|
|||
|
String.valueOf(17.8);
|
|||
|
|
|||
|
5.
|
|||
|
|
|||
|
strWithSpace.trim();
|
|||
|
|
|||
|
This is a string.
|
|||
|
|
|||
|
";
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
Given the strings below, which of the following lines contain
|
|||
|
an object method?
|
|||
|
String greeting =
|
|||
|
|
|||
|
"HI";
|
|||
|
|
|||
|
String obvious = "This is a string";
|
|||
|
String strWithSpace =᳚ "
|
|||
|
1.
|
|||
|
|
|||
|
greeting.toLowerCase();
|
|||
|
|
|||
|
2.
|
|||
|
|
|||
|
String.valueOf(55);
|
|||
|
|
|||
|
3.
|
|||
|
|
|||
|
obvious.indexOf("is");
|
|||
|
|
|||
|
4.
|
|||
|
|
|||
|
String.valueOf(17.8);
|
|||
|
|
|||
|
5.
|
|||
|
|
|||
|
strWithSpace.trim();
|
|||
|
|
|||
|
This is a string.
|
|||
|
|
|||
|
";
|
|||
|
|
|||
|
ARRAYS AND ARRAYLISTS IN A JAVA CLASS
|
|||
|
-
|
|||
|
|
|||
|
In the case where a class variable contains a data structure,
|
|||
|
multiple setter methods should be created.
|
|||
|
-
|
|||
|
|
|||
|
Setter to set the value of the entire data structure
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Setter/Adder to add just one value to the data structure
|
|||
|
public class HelloWorld{
|
|||
|
private String[] messages;
|
|||
|
public void setMessages(String[] texts){
|
|||
|
this.messages = texts;
|
|||
|
}
|
|||
|
public void addMessage (String text){
|
|||
|
This.messages[0] = text;
|
|||
|
}
|
|||
|
public void addMessage (String text, int index){
|
|||
|
// code to add the value of text to the array
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Method Overloading
|
|||
|
|
|||
|
ENHANCED for STATEMENT
|
|||
|
-
|
|||
|
|
|||
|
The enhanced for statement iterates through the elements of an
|
|||
|
array/arraylist without using a counter!
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
for (paramType parameter : arrayName){
|
|||
|
/* statements that read/obtain array elements, cannot
|
|||
|
modify elements with the enhanced for statement */
|
|||
|
}
|
|||
|
parameter has a type and an identifier.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
the type of the parameter must be consistent with the the type
|
|||
|
of elements in the array
|
|||
|
for (int x : myNumbers){
|
|||
|
sum = sum + x;
|
|||
|
}
|
|||
|
|
|||
|
JAVA PACKAGES
|
|||
|
-
|
|||
|
|
|||
|
Related classes are typically grouped into packages so that
|
|||
|
they can be imported into programs and reused.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The ArrayList class is part of the java.util package, so the
|
|||
|
package need to be imported to your class to be able to use
|
|||
|
the ArrayList class.
|
|||
|
import java.util.ArrayList;
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The package java.lang is implicitly imported by the compiler,
|
|||
|
so it is not necessary to import classes in that package to
|
|||
|
use them.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
String and Math are examples of classes in java.lang package
|
|||
|
|
|||
|
CODE DEMO
|
|||
|
-
|
|||
|
|
|||
|
Create class(es) to
|
|||
|
demo the use of arrays
|
|||
|
and arraylists!
|
|||
|
Create a class to demo
|
|||
|
static methods and
|
|||
|
variables.
|
|||
|
|
|||
|
DO YOU HAVE ANY
|
|||
|
QUESTIONS?
|
|||
|
|
|||
|
THANK
|
|||
|
YOU!
|
|||
|
|
|||
|
@
|
|||
|
|
|||
|
hend.alkittawi@utsa.edu
|
|||
|
|
|||
|
By Appointment
|
|||
|
Online
|
|||
|
|
|||
|
|