170 likes | 179 Views
Learn about data types, their operations, and how to define your own data types. Explore the concepts of objects, arrays, and strings in Java.
E N D
Data Types Data type. Set of values and operations on those values. Primitive/Built-In types. • Usually single values • Can build arrays but they can still store only the same type of data You don’t have to know HOW the data types and their operations are implemented -> Abstraction You may want to define your own data types. Data Type Set of Values Operations boolean true, false not, and, or, xor int -231 to 231 -1 add, subtract, multiply double any of 264 possible reals add, subtract, multiply
Objects Object. An entity that can take on a data type value. An object’s “value” can be returned to a client or be changed by one of the data type’s operations. Impact. Enables us to create our own data types; define operations on them; and integrate into our programs. Data Type Set of Values Operations Color 24 bits get red component, brighten Picture 2D array of colors get/set color of pixel (i, j) String sequence of characters length, substring, compare 3
Objects and Arrays are Similar • What distinguishes creating arrays from creating variables of basic data types? • Explicit memory management • Arrays and objects are both “reference” types • They are allocated a chunk of memory in the address space • The memory needs to be initialized • Assigning one object/array to another object/array results in an alias • Key difference • Arrays are part of the core Java language/standard library. Objects are not. • “Class” vs. “Object” • Similar to difference between “type” vs. “variable” • An object is an instance of a class
A Simple First Class • Height • Data: • Feet (as an integer value) • Inches (as a double value) • Methods: • Set height • Display height • API: • Height(int feet, double inches) //constructor • void displayHeight() //instance method
Constructors Objects are reference types => Need to initialize their memory Can use the new operator, just like arrays One special instance method in the API: • Height(int feet, double inches) //constructor • This method is called when you invoke “new” to create a new object • You can pass parameters to control initialization. • The class’ author defines the logic for this method to carry out proper initialization.
Constructors vs. Methods • Height(int feet, double inches) • How is this signature different from a method signature? • No return type • The constructor manipulates the data in the object • No “return” statement
Instance Methods vs. Static Methods Instance methods are called “on” an object (a variable) • System.out.println(); // call println on System.out • String s = aCharge.toString(); // call toString on aCharge • In fileIn = new In(“file.txt”); fileIn.readInt(); Ways to think about this: • Send a message to an object. • Tell an object to do something.
Constructors and Methods To construct a new object: Use keyword new and name of data type. To apply an operation: Use name of object, the dot operator, andthe name of the method.
Height.java public class Height { // data int feet; double inches; // constructor Height(int setFeet, double setInches) { feet = setFeet; inches = setInches; } //method void displayHeight() { System.out.println("Height: "+feet+" feet and "+inches+ " inches"); } }
Using Height.java • Compile .java file into a .class file • Create objects of that class in other programs • Dr. Java Coding Demo
Extending the Height Class • double getHeightInches() • Returns the height in inches • Dr. Java Coding Demo
Adding More Constructors • May want to initialize an object in more than one way • E.g., allow initialization when only the feet value is provided • Height(int setFeet) • Set “feet” to “setFeet”; set “inches” to zero • Use the “this” keyword to invoke the original constructor • Dr. Java Coding Demo
String Data Type String data type. Basis for text processing. Set of values. Sequence of Unicode characters. API. … http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html
Typical String Processing Code How do we implement a recursive version of this function?
String Data Type … http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html
Recursive Palindrome Check static boolean isPalindrome(String s) { if(s.length() < 1) //base return true; if(s.charAt(0) == s.charAt(s.length()-1)) //reduction return isPalindrome(s.substring(1,s.length()-1)); return false; }