Final Exam CMSC
call stack
The internal structure that keeps track of the sequence of methods that have been called
What is hardware?
The physical components of a computer.
How are linked lists stored?
There is no pattern, can be all over the place
(True/False) The following could appear in an interface: public void f(int x);
True- prototype
Under what circumstances will the finally block run?
Under what circumstances will the finally block run?
Under what circumstances will the finally block run?
Whenever the try block is entered
Side effects
While expression is executed, something changes (ex: assignment, printing to console)
linked list
a collection of nodes arranged so that each node contains a link to the next node in the sequence
int a=7; int b= a++ + 4; c= ++a -3;
a=9 b=11 c= 6
add(E element)
adds the element to the end of the list
Under what circumstances will a finally block run? (Select all that apply.) >>A return statement is executed during the try block. >>The try block runs without any exceptions being thrown. >>An exception is thrown during the try block, and caught by one of the catch blocks below it. >>An exception is thrown during the try block, but is not caught in any of the associated catch blocks.
all
x=x+1 x++ ++x
all have the same side effect, but carry different values
2d rectangular
all rows are the same
Exceptions are thrown by
code you've written, code another person has written, that you are using, and by the JVM itself
What is "concatenation"? What operator do you use to concatenate Strings?
combine strings together + operator
What is the name of the Java interface that includes the compareTo method?
comparable
objects and call stack
does not hold the object, holds the memory address of where object is located
Strings being immutable is good because
doesn't create problems with aliasing.
printing ragged array
for (int row = 0; row < name.length; row++) { for (int col = 0; col < name[row].length; col++) { System.out.println(name[row][col] + " "); } System.out.println(i); }
If there is a tie
goes from left to right other than assignment
What does I/O stand for?
input and output
List the four Java primitive types that can be used to store integer values.
int byte short long
what happens to the runtime when the data set doubles? -- quadratic algorithms
it quadruples
What word describes one thousand bytes of space?
kilobyte
Rectangular 2d arrays- int [ ] [ ] a= new int [3] [4]; draw diagram
rows are automatically instantiated
==
same memory address
this.patch = other. patch
shallow copy contructor
(True/False) The following two code fragments are equivalent: for(String a = ""; x < 10; z = z + 7) {...} _______________________________________________________________ String a = ""; while (x < 10) { ... z = z + 7 }
true
(True/False) The following two code fragments are equivalent: if (x == 1) { System.out.println("A"); } else { if (x == 2) { System.out.println("B"); } }_______________________________________________ if (x == 1) { System.out.println("A"); } else if (x == 2) { System.out.println("B"); }
true
Declaring a 2D Array ragged normally
type [ ] [ ] name= new type [rows][ ]; name [index] = new type[cols];
x++
value is x before modification, then incremented
Are the elements of an array of references to objects initialized? If so, to what values?
yea, null
JUnit pros
you can write tests quickly
Pros of formal verification
you know for sure the code works
Exceptions are Objects, so
you must instantiate it before throwing it
Static methods
• method connected to the class, not an object • ex: Math.random • You do not declare a variable of Math type to get to the random method
List the following operators in order of precedence (highest precedence first, lowest precedence last). && = ! < +
! + < && =
What the output be? System.out.print("\"\"");
""
Inside of the "catch" you can do
"continue" so it skips an iteration where a degenerate triangle is created and doesn't decrease the trianglesNeeded counter (because continue skips all the code after the continue statement)
Give examples of "literals" of each of the following types: String, char, long, int, float, double, boolean.
"hi", 'x', 32L, 16, 15.7F, 373.2, true
What is software?
"programs" or "apps" that you can run on a computer
Which of the following could be used as names of variables in Java? We're not asking whether or not they are good style, just whether or not they are possible. (Select all that apply.) 7years $_hello55 this&that While
$_hello55 While
Will this work? public void foo(int x, long y) public void foo(long x, int y)
- if you pass two ints, java will not do the method call -if you pass in an int and a long, it will compile and it will run
Sets
- usually do not allow duplications -you add things to the set -you can only ask if something is in the set or not -no "last item" in the list -very fast
JUnit
-A unit testing framework for the Java programming language -make lots of short simple tests -tests run randomly -all tests will run even if one fails -if assertion fails test is aborted
Extends vs Implements What is similar?
-Both allow polymorphism -both allow final static constants -both allow static method implementation -both allow inheritance of public instance methods
Examples of higher level languages that WERE designed for object oriented programming
-C++ -Java
Big O of inserting at front of linked list
-Create node -assign the node to next item in the list -make head point to 1st node does not matter what size is, always 3 steps O(1)- constant
Examples of higher level languages that were NOT designed for object oriented programming
-Fortran -Cobol -C
What is an example of hardware?
-Monitor -keyboard -RAM -CPU
MyDouble wrapped a primitive double- could you do normal +, -, *, /?
-No, you cannot because it wrapped a double - These operations work with primitives but not MyDouble
What does the operating system do fo you...
-Process management -Memory management -Primitive I/O -Windowing -Primitive network control -Security management
Why do we have wrapper classes around primitives?
-These allow you to collect large quantities of data -all are immutable
What happens if an exception is thrown but not caught anywhere in your program?
-When an exception is thrown, Java looks for an appropriate catch block in the place where the problem occurred. -If a catch is not found there, then Java discards the current frame on the call stack, and looks for an appropriate catch block in the previous frame. -If none is found, that frame is discarded, etc. -If the exception is not caught anywhere, then the program terminates, and the exception propagates to the "out\ side world", which for us is the Eclipse IDE. Eclipse displays that red and blue error notification with stack trace in the console.
FancyWord class- There was one private String object that is wrapped by FancyWord What can you now do?
-You now can only use the methods within the fancy word class -FancyWord "wraps" the String -You can no longer use charAt( ), substring( ), or any other String methods -You cannot act on FancyWord like you act on a String anymore
wrapper class
-a class that has a single principle instance variable that is private -other public methods that allow the user to interact
Name different operating systems
-apple macOS -apple IOS -Microsoft Windows -Linux -Android
Java Collections Framework
-built in -most collections live in java.util -always contains references -rely on equals methods being implemented correctly
Limitations of for each loop
-cant loop through a part of the list -no index numbers -you cannot assign anything to the variable (think benji/spot example) -you cannot add or remove elements from the current list during the loop
To copy an array:
-create a new array (of the same length as the original, a.length) -use a loop to assign every value in array a to array b (b[i] = a[i] >> make sure the copy array is one left of the assignment operator and the original array is on the right side of the assignment operator)
Big O of accessing ith element in an array
-each box in an array is 4 bytes -java knows memory address at the beginning -a[n]= beginning memory address + 4 bytes * n -The same amount of arithmetic is done for each O(1)
If one person has a linear algorithm and someone else has a logarithmic algorithm which will run faster?
-eventually the lines will cross -in small values of n, straight line does better compared to the log curve -in larger values, log is faster than straight line
Changing an element in a deep copy
-extra bc hat class is immutable -wastes time and memory -for Ahat class, this is preferred bc you could access a[0].resize and change the hat that is aliased
Changing an element in a shallow copy(draw)
-has no effect on the original array of hats -okay because hat class is immutable, if mutable deep copy would need to be made -in AHat class >> you could access a[0] and resize any element and because they refer to the same element both would change
trees
-has one special element called a root that has children -these children can have children of their own -algorithms tend to involve starting at the top and walking to the bottom
Interface
-holds abstract method declarations -has a list of behaviors that objects know how to do -kind of like a category
break with switch statements
-if break isn't in the block, to will drop down to the next case -if you have the same outcome for multiple cases, don't put break ex: switch (digit){ case 0: case 4: case 5: case 9: mysteryValue=4; break;
keyword implements ex: public class Bird implements FlyingThing
-if it implements an interface, it has to know how to do everything listed in the interface -They have to know how to fly, takeOff, and land or else the code will not compile
Autounboxing
-if java needs an int and it needs an Integer object automatically does: int y= x.intValue( ); ex: Integer a; int z = a;
Autoboxing
-if java needs an integer object and it needs a primitive and wraps it automatically does: Integer x= Integer.valueOf(5); ex: Integer a; a=6;
what factors do we consider when choosing
-industry standard -ease of coding -efficiency -> runtime -> memory
What is are examples of software?
-internet browser -word processors -spreadsheet programs -operating system
graphs
-no special root -some vertices are connected to others by edges -Think of facebook -no special root
Draw Diagram: int[]a = new int[5]; int[]b = a; does this copy the array?
-no, makes them aliases
Big O of accessing ith element in a linked list
-nodes are not contiguously stored -you have to go node by node -have to traverse through the list O(n)
What cannot go in interface?
-nothing private -no instance variables- no state bc its not going to be an object -no constructor -no static variables that are not final
What can be in an interface?
-prototypes of public instance methods -public final static variables(have an assignment) -public static method implementations -public default instance methods
double x = 7.9; double y = x; String q = new String("Cat"); String r = q; String s = new String("Cat"); What is actually stored in the variable "q" in the previous question? Given the code fragment above, is it correct to say that "q is a String object"? Is it correct to say that "q refers to a String object"? Is it correct to say that "x is a double"? Is it correct to say that "x refers to a double"? How many String objects are actually created (instantiated) in the code fragment above?
-q holds the memory location corresponding to the place where the String "cat" is in RAM -You should NOT say "q is a String". You SHOULD say "q refers to a String". It is correct to say "x is a double", but you should NOT say "x refers to a double", since x is not a reference variable. -2 (new keyword)
Integer x= Integer.valueOf(5);
-static method in Integer class that wraps primitive into Integer object -there will only be one 5 on the heap, it is recycled
Do binary search recursively with helper method
...
Assume the following class definition (partially shown): public class Gorilla { public String name = "Frank"; public static int MAX_WEIGHT = 600; ...} Which of the following are valid expressions within a method that is outside of the Gorilla class? (Select all that apply.) ... Gorilla.name ... ... Gorilla.MAX_WEIGHT ... ... name ... ... MAX_WEIGHT ...
... Gorilla.MAX_WEIGHT ...
Assume the following class definition (partially shown): public class Gorilla { public String name = "Frank"; public static int MAX_WEIGHT = 600; ...} ... Gorilla.name ... ... MAX_WEIGHT ... ... name ... ... Gorilla.MAX_WEIGHT ...
... MAX_WEIGHT ... ... Gorilla.MAX_WEIGHT ...
public class Gorilla { public String name = "Frank"; public static int MAX_WEIGHT = 600; ...} Which of the following are valid expressions within an instance method of the Gorilla class? (Select all that apply.) ... Gorilla.name ... ... MAX_WEIGHT ... ... name ... ... Gorilla.MAX_WEIGHT ...
... MAX_WEIGHT ... ... name ... ... Gorilla.MAX_WEIGHT ...
Which of the following represent legitimate syntax for Java comments? (Select all that apply.) /* comment */ <!-- comment --> % comment # comment // comment
/* comment */ <!-- comment --> % comment # comment // comment
Practice using BOTH styles for Java comments.
//hi /** hi **/
What default values are used for instance and static variables?
0 for all primitive types (false for boolean, ASCII code 0 for char); "null" for reference variables
What default values are used for the variables mentioned above?
0 for all primitive types (false for boolean, ASCII code 0 for char); "null" for reference variables
Translate the hexidecimal (base 16) number 7F into binary representation.
01111111
How many parameters does the equals method have?
1
What is the value of the following Java expression: 37 / 4 * 4 % 3 + 1
1
How many bytes are in a megabyte?
1,000,000 or 2^20 bytes
What is the output of the following code fragment? (DO NOT WRITE ANY SPACES IN YOUR ANSWER. ALL OF THE OUTPUT WILL BE ON THE SAME LINE). for(int x = 17; x < 21; x = x + 3) { x = x - 1; System.out.print(x % 3); }
10
How many bytes are in a kilobyte?
1000 or 2^10 bytes
What is the base-10 number 39 in binary.
100111
What is the hexadecimal number F7 in binary.
11110111
After the following code has been executed, what is the value of the variable y? int x = 5, y = 10; if (x++ == 5 || --y >50) { y += 4; }
14
After the following code has been executed, how many objects have become "garbage"? Dog a = new Dog(); Dog b = new Dog(); b = a; a = new Dog(); a = new Dog();
2
int mystery (int w) { if (w < 0) return 0; int x = mystery (w - 2); return w - x; } What is returned by the call mystery(2)?
2
Translate the number 123 into base 7 representation
234 (base 7)
What is the output from the following code fragment? (The output will all be on the same line. Do not include any spaces in your answer.) int x = 0; while (x < 16) { x += 2; if (x > 8) { break; } if (x % 3 < 2) { continue; } System.out.println(x); }
28
How many different combinations of 0's and 1's can be represented using 7 bits?
2^7 =128
How many Dog objects are created by the following code fragment? Dog a = new Dog("Spot"), c = new Dog("Alfie"); Dog b; Dog d = a; Dog f = new Dog(a);
3
What is the value of the following Java expression: 33 % 5
3
int mystery (int w) { if (w < 0) return 0; int x = mystery (w - 2); return w - x; } What is returned by the call mystery(5)?
3
How many different values can be represented by 5 bits?
32
What is the output from the following code fragment? (Note that the output will all be on the same line.) for (int i = 2; i < 10; i++) { if (i % 2 == 0) { continue; } if (i > 8) { break; } System.out.print(i); }
357
What is the output of the following code fragment? (DO NOT WRITE ANY SPACES IN YOUR ANSWER. ALL OF THE OUTPUT WILL BE ON THE SAME LINE). for (int x = 7; x < 11; x = x * 2) { x -= 3; System.out.print(x); }
457
Evaluate the following Java expression: 75 % 7
5
Evaluate the following Java expression: 9 - 15 * 6 / 11 + 4
5
What does this print? for(int i=1; i<10; i++){ if(i < 5) { continue; } System.out.println(i); if(i > 7){ break; } } System.out.println("out");
5 6 7 8 out
How many ints are created by the statement: int[] a = new int[5];
5, all 0
Assuming that x is a positive integer, what is the largest value that that the following expression could be? x % 7
6
After the following code has executed, what is the value of y? int x = 7, y = 8; if (x < 4 && y++ != 100) { y += 3; }
8
How many bytes of memory are required to store each type of variable? double int short char long
8,4,2,2,8
Translate the binary (base 2) number 1011010 into base 10 representation
90
List the following operators in order of precedence (highest precedence first, lowest precedence last). || < += && ==
< == && || +=
public class Nonsense { public static void foo(int x) { if (x == 2) { throw new NullPointerException( ); } else if (x == 3) { throw new NumberFormatException( ); } System.out.println("A"); } public static void main(String[] args) { for (int i = 1; i <= 3; i++) { try { foo(i); System.out.println("B"); } catch (NullPointerException e) { System.out.println("C"); } finally { System.out.println("D"); } System.out.println("E"); } System.out.println("F"); } }
A B D E C D E D
@Override
A Java annotation used to indicate that a method is intended to override an inherited method. -has to have the EXACT same prototype
Define the term "bit".
A binary digit, either 0 or 1.
Aliasing
A circumstance where two or more variables refer to the same object.
sub class
A derived class that inherits features from another class
Formal Verification
A field of computer science that involves reasoning about the formal properties of programs to prove the correctness of a program.
What is a "setter"?
A method that modifies the value of an instance variable of the object.
What is a getter
A method that returns the value of an instance variable of the object.
is a
A phrase to say that something inherits from another, as in a "salmon" is-a "fish."
Stack
A stack is a simple linear data type in which elements are both inserted ("pushed") and removed ("popped") from the same end. (We usually picture the stack vertically, and say that we "push" and "pop" items from the top.)
local variable
A variable with local scope is one that can only be seen, used and updated by code within the same scope. Typically this means the variable was declared (created) inside method
Big O Notation
A way of expressing the worst-case run-time of an algorithm
Rules for identifiers
A-Z, a-z, 0-9, $, _, cannot begin w a digit, cannot use any known identifiers
This definition pertains to the first three questions: Assume there is a class called IntegerMath that contains a static method called getSqrt with the prototype below. Normally this method returns the positive square root of the parameter, x, however: if x is negative, it throws an ArithmeticException. If the square root of x is not an integer, then it throws an IllegalArgumentException. In other words, if the argument is 16, it returns 4. But if the argument is 15, it throws the IllegalArgumentException, because the square root of 15 is not an integer. public static int getSqrt(int x) What is the output of the program below? (The output will all be on one line. Do not type spaces in your answer.) public static int calculate(int y) { int answer = 9; try { answer = IntegerMath.getSqrt(y + 3); } catch(ArithmeticException e) { System.out.print("A"); } finally { System.out.print("B"); } System.out.print("C"); return answer; } public static void main(String[] args) { try { int result = calculate(-5); System.out.print(result); } catch(ArithmeticException e) { System.out.print("D"); } catch(IllegalArgumentException e { System.out.print("E"); } System.out.print("F"); }
ABC9F
example of deep copy
AdjustableHat[] copy = new AdjustableHat[myHats.length]; for (int i = 0; i < myHats.length; i++) { copy [i] = new AdjustableHat(myHats[i]) ; } return copy;
Values
All literals carry values (ex: x, 17, x*y)
semantic error
An error in a program that makes it do something other than what the programmer intended.
Run-Time Error
An error in a program that makes it impossible to run to completion. Also called an "exception".
FlyingThing[ ] things= new FlyingThing[3]; What can you put in here?
Any type of FlyingThing things[0]= new Bird( ); things[1]= new UFO( ); things[2]= new Airplane( );
API
Application Programming Interface
ArrayList syntax- making an array of cat objects
ArrayList <Cat> a = new ArrayList<Cat>( );
This definition pertains to the first three questions: Assume there is a class called IntegerMath that contains a static method called getSqrt with the prototype below. Normally this method returns the positive square root of the parameter, x, however: if x is negative, it throws an ArithmeticException. If the square root of x is not an integer, then it throws an IllegalArgumentException. In other words, if the argument is 16, it returns 4. But if the argument is 15, it throws the IllegalArgumentException, because the square root of 15 is not an integer. public static int getSqrt(int x) What is the output of the program below? (The output will all be on one line. Do not type spaces in your answer.) public static int calculate(int y) { int answer = 9; try { answer = IntegerMath.getSqrt(y + 3); } catch(ArithmeticException e) { System.out.print("A"); } finally { System.out.print("B"); } System.out.print("C"); return answer; } public static void main(String[] args) { try { int result = calculate(1); System.out.print(result); } catch(ArithmeticException e) { System.out.print("D"); } catch(IllegalArgumentException e { System.out.print("E"); } System.out.print("F"); }
BC2F
This definition pertains to the first three questions: Assume there is a class called IntegerMath that contains a static method called getSqrt with the prototype below. Normally this method returns the positive square root of the parameter, x, however: if x is negative, it throws an ArithmeticException. If the square root of x is not an integer, then it throws an IllegalArgumentException. In other words, if the argument is 16, it returns 4. But if the argument is 15, it throws the IllegalArgumentException, because the square root of 15 is not an integer. public static int getSqrt(int x) What is the output of the program below? (The output will all be on one line. Do not type spaces in your answer.) public static int calculate(int y) { int answer = 9; try { answer = IntegerMath.getSqrt(y + 3); } catch(ArithmeticException e) { System.out.print("A"); } finally { System.out.print("B"); } System.out.print("C"); return answer; } public static void main(String[] args) { try { int result = calculate(7); System.out.print(result); } catch(ArithmeticException e) { System.out.print("D"); } catch(IllegalArgumentException e { System.out.print("E"); } System.out.print("F"); }
BEF
Write the hexadecimal representation of the binary number 11000100
C4
FlyingObject x; x.destroyPlanet( );
CANNOT DO -You do not know what FlyingThing is, therefore destroyPlanet may not be part of that class -destroyPlanet was only in the UFO class
Does the getter in the Basket class, below, cause a privacy leak? public class Basket { private Egg[] eggs; ... public getEggs( ) { Egg[] copy = new Egg[eggs.length]; for (int i = 0; i < eggs.length; i++) { copy[i] = eggs[i]; } return copy; } ... }
Cannot decide without more information- depends on mutability
class Main { public static void main(String[] args) { int expression = 2; // switch statement to check size switch (expression) { case 1: System.out.println("Case 1"); // matching case case 2: System.out.println("Case 2"); case 3: System.out.println("Case 3"); default: System.out.println("Default case"); } } }
Case2 Case3 Default Case
int num=0; switch(num+2) { case 1: System.out.println("Case1: Value is: "+num); case 2: System.out.println("Case2: Value is: "+num); case 3: System.out.println("Case3: Value is: "+num); default: System.out.println("Default: Value is: "+num); } }
Case2: Value is: 0 Case3: Value is: 0 Default: Value is: 0
Describe how a break statement behaves
Causes the inner-most loop or switch statement to be exited immediately.
What does CPU stand for?
Central Processing Unit
x=1782345433426L; y= (int) x; System.out.print(y);
Chops off numbers to fit size and twos compliment
Typical static method call
Class.method( );
What programming language was used in the business world in the 1950's
Cobol
Pirate x = new pirate( ); Pirate y = new Pirate(x);
Copy constructor defines whether it is deep or shallow
shallow copy
Copying only the reference to an object.
If you want the Handler to make the user re-input
Do-While Loop
If this is the constructor: Dog(String name, double weight, int numCars){ this.name = name; } How do you make a constructor using the this keyword that constructs a Dog that never chases any dogs?
Dog(String name, double weight){ this(name, weight, 0) }
Where can you use a "break" statement?
Either in a switch statement or in a loop.
Linear data type
Elements are listed in a row or a sequence (does not have to be sorted) - an array is an example of this
Explain why it is important to limit the number of public members.
Encapsulation of the fields (instance variables) of a class is very important. We frequently need to make changes to a class. If these changes do not modify the class API, then the modified class will work perfectly well within an existing project. However, if you modify the class in such a way that the API is changed, then you will have to re-program other components of the project so that they will work with the new class. By limiting the API we are free to make more extensive changes to the class without having to re-program other parts of the project.
Explain what is happening here and a faster way to do this. Integer a, b, x; x= Integer.valueOf(a.intValue( ) + b.intValue( ));
Explain: a and b are converted to primitive ints and added, and then wrapped into an integer object and assigned to x Faster: x= a + b; Integers are unboxed and added, and then boxed to be assigned to variable x
Explain what is happening here and a faster way to do this. Integer a, b, x; if (a. compareTo(b) < 0)
Explain: compareTo is part of the Integer class so this will work Faster: if(a<b) a and b are unboxed and compared when java sees the less than symbol
(True/False) The following method always prints "YES", as long as the arguments are positive values: public static void foo(double a, double b) { if (a + b - a == b) { System.out.println("YES"); } }
FALSE
TRUE/FALSE: Inserting unnecessary spaces and/or blank lines could cause your Java program to malfunction.
FALSE
(True/False) If a run-time error occurs during a particular JUnit test then the rest of the tests will still be attempted.
False
(True/False) The following code fragment will compile: int y = 5; if (y < 10) { int x = 17; } System.out.println(x);
False
(True/False). JUnit tests are always executed in the order in which they appear in the test suite.
False
(True/False). Suppose a single JUnit test contains multiple assertions. If the first assertion fails, JUnit will continue running the test to see whether the subsequent assertions in the test will pass or fail.
False
True/False --Aliasing can lead to problems if the object is immutable.
False
True/False: An instance variable can be declared as "static".
False
True/False: In order to run a static method, you must run it for a particular object (the current object).
False
(True/False) The following could appear in an interface: public void h(int b) { System.out.println(b); }
False- not a default instance method
True/False) The following could appear in an interface: public static int x;
False- not final
Consider the assignment statement: x = y; If the variables are of type "int", does the integer get copied? If the variables are of type "String", does the String get copied?
For primitive types (like int), the data is copied. For reference variables (like a String reference), the memory locations are copied, NOT the objects themselves.
What programming language was used by Scientists and Engineers in the 1950's?
Fortran
Describe how a continue statement behaves in a while loop.
Goes to top of loop immediately and checks the boolean condition to see if looping should continue.
Which of the following are considered "secondary memory devices". (Select all that apply.) RAM Hard drive USB flash drive Touchscreen monitor
Hard drive USB flash drive
Give some examples of secondary memory devices
Hard drives, floppy disks, flash memory devices, CD's , DVD's
When writing getters
If there are private members, preserve encapsulation >> if mutable, make copies before returning a reference in your getters ex: public Parrot getParrot( ){ // mutable!! return newParrot(bird); }
garbage collector
In a managed memory system, the program that periodically runs to free unreferenced memory
add(int index, E element)
Inserts the specified element at the specified position in this list.
Where can you use a "continue" statement?
Inside of any loop.
What does IDE stand for?
Integrated Development Environment
What happens when this runs? public static void doFlight(FlyingThing flyer){ flyer.takeOff( ); }
It depends! If flyer is a bird- will do bird takeOff method If flyer is a UFO- will do UFO takeOff method If flyer is a plane- will do plane takeOff method
Dog x = new Dog("Spot"); // Spot is assigned as the Dog's name foo(x); After the call to foo(), will the Dog's name still be "Spot"?
It is impossible to know without seeing the code for the method foo
public static void g(int[] a) { a[0] = 4; foo(a); } After the call to the foo method is over, will the first element of the array still be set to 4?
It is impossible to know without seeing the code for the method foo
Describe how a continue statement works in a for-loop.
It will execute the statement that is usually processed at the end of an iteration through the loop, and then check the boolean condition to see if looping should continue.
We want to write a method called "checkAddition" that accepts as parameters two double values, x and y, and a third value, total. The method should return true if total is the sum of x and y, and false otherwise. Consider this potential implementation: public static boolean checkAddition(double x, double y, double total) { return x + y == total; } Assume that the arguments to the method will always be values in the range from 0 to 1000, and that the arguments, when written in base-10 notation, will never have more than 5 digits after the decimal point. Will this implementation return the correct value under these assumptions?
It will sometimes produce the correct result and sometimes not- only if it is able to be represented in base 2
Let's say an Exception is thrown at H (which is called by previous methods: G, F, Main)
Java will look for an Exception Handler in H. If there's no exception in H it will Pop the H Method off the stack, making sure no code within H is executed Java will then look for an Exception Handler in G. If there's no exception in G it will Pop the G Method off the stack, making sure no code within G is executed Java will then look for an Exception Handler in F. If there's no exception in F it will Pop the F Method off the stack, making sure no code within F is executed Java will then look for an Exception Handler in Main. If there's no exception in Main it will Pop the Main Method off the stack, making sure no code within Main is executed and the whole program is terminated >> which is when you get the red error message in the Console
Input device examples
Keyboard, mouse, speaker, touchscreen, storage device, scanner, microphone
generally, is the line or parabola favored?
Line, but only in large sets
What programming language was developed in the 1950's and is still used in A.I.?
Lisp
If someone showed you a Java class, how can you quickly identify which members were part of the API for that class?
Look for "public" members.
Output device examples
Monitor, printer, storage device, speakers, projector
Which of the following are advantages that secondary memory has over RAM? (Select all that apply.) More permanent (non-volatile) Faster Typically has more storage space
More permanent (non-volatile) Typically has more storage space
Aliasing becomes a problem for
Mutable Objects
If a member is declared as private, can it be accessed from another class?
N
Are Integer objects mutable? (If you're not sure, inspect the online API documentation for the Integer class and find out!)
NO
Suppose you are passing (or returning) an array of primitives to/from a method. Is it safe to make a reference copy only?
NO
Can you do: FlyingObject x; x= new FlyingObject( );
NO! FlyingObject is an interface, not a class. Therefore, you cannot instantiate it. You do not know what kind of FlyingObject it is.
Suppose you are passing or returning an array of references to mutable objects to/from a method. Is it safe to make a reference copy only? Is it safe to make a shallow copy?
NO, NO
Suppose you are passing (or returning) an array of references to immutable objects to/from a method. Is it safe to make a reference copy only? Is it safe to make a shallow copy?
NO, YES
What if destroyPlanet( ) was a method in all of the classes but not in the interface FlyingThing? Would you then be able to use it?
NO, it's not in the interface therefore it is not one of the behaviors that are possible of a FlyingThing
Can you do: Integer x= new Integer(5);
NO- if you needed 18 5's, you would have 18 different copies of an immutable object 5 which is unnecessary do: Integer x= Integer.valueOf(5);
Can you find when the linear and parabolic algorithms will meet and be equal in runtime?
NO- depends on too many factors
public static void foo( ){ Dog x= new Dog( ); Dog.weight( );
NO- for static members only, which dog is it? weight instance variable is inside each dog
public void bark( ){ Dog x= new Dog( ); Dog.weight
NO- for static members only, which dog is it? weight instance variable is inside each dog
public static void foo( ){ Dog x= new Dog( ); ...weight...
NO- no current object
Could the following pair of methods be included in the same class? public void f(int x) {...} private int f(int y) {...}
No
is the processing always proportional to the size of the data set?
No
How many Strings are created by the statement: String[] a = new String[5]; (Hint: The answer to this question and the previous question are different!)
None! (Just 5 null references are created -- no objects are instantiated).
What is accomplished when you type "import java.awt.Color;" at the top of a file?
Now whenever you type "Color", the compiler knows that you are talking about the Color class that resides in the package called "java.awt".
Fastest big o category
O(1)
Big O of binary search
O(log n) Actually log2n but this goes into the category log n
Binary Search Big O
O(log2n)
Big O for Linear search
O(n)
Linear Search Big O
O(n) because in the worst case, you have to go through every element -Straight line
Big O of does a list of size n contain duplicates?
O(n^2)
big O of coloring every square in a flag of height n by width 2n
O(n^2) You have to go through every box Actually 2n^2 but this goes into the category n^2
Mutable Objects:
Once the object has been constructed, you can change the state of the object
Which of the following could be cases in a switch statement where the variable at the top is type int? (Select all that apply.) case foo(): // assume foo() returns type int case x: // assume x is an int variable case 4: case x<5:
Only case 4, has to be a constant expression but could work if x was a final int variable
What programming language was used primarily for education in the late 80's
Pascal
FlyingObject x; x= new Bird ( ); x= new Airplane( ); x= new UFO( );
Polymorphic variable -can be assigned any object that implements the FlyingObject interface
Wrapper classes
Replaces the API of the inner member with the API of the outer class
contains(Object o)
Returns true if list contains specified element
What programming language claims to be based on "the principal of least astonishment"?
Ruby
Binary Search Algorithm
Start in the middle and eliminate half the stack and keep looking in the middle. The data is pre-sorted. The process of examining a middle value of a sorted array to see which half contains the value in question and halving until the value is located.
instance variables
Storage for data in an instance of a class/ object---- for the state of the object - each object has its own copy of the variables
Write some faulty code that generates a null-pointer exception, catch the exception immediately and print out "exception caught" in your catch block.
String s = null; try { int x = s.length( ); // throws exception } catch (NullPointerException e) { System.out.println("exception caught"); }
In the code fragment below, which of the following types could the variable x be? (Select all that apply.) switch(x) {...} String int short byte long char
String, int, short, byte, char
What is the difference between System.out.print and System.out.println?
System.out.print just prints everything in a line System.out.println moves the cursor down to the next line after it does it's output.
public class Pumpkin { public static int x; public int y; ... } Which of the following statements will compile and run successfully in a static method of the Pumpkin class? System.out.println(Pumpkin.y); System.out.println(y); System.out.println(x); System.out.println(Pumpkin.x);
System.out.println(Pumpkin.y); System.out.println(y); System.out.println(x); System.out.println(Pumpkin.x);
public class Pumpkin { public static int x; public int y;... } Which of the following statements will compile and run successfully in an instance method of the Pumpkin class? System.out.println(y); Sytem.out.println(Pumpkin.y); System.out.println(x); System.out.println(Pumpkin.x);
System.out.println(y); Sytem.out.println(Pumpkin.y); System.out.println(x); System.out.println(Pumpkin.x);
If you change a class in such a way that the API changes, then other classes which depend on this one will have to be re-coded.
TRUE
The assignment operator
The '=' character causes the compiler or interpreter to evaluate to the expression on its right and store the result in the variable(s) on its left.
method overloading
The ability to define two or more different methods with the same name in the same class with different parameters
short circuiting
The computer looks at the first statement and uses that information to decide if it needs to look at the rest of the statement.
heap
The heap is the region in memory where Objects are stored. When objects are no longer being used, that memory is "recycled" automatically so that it can be used by other Objects later.
Command Line
The place where typed commands are given to the operating system
rewrite this using the ternary operator: if(MODE == slow){ Thread.sleep(1000); }else{ Thread.sleep(100); }
Thread.sleep((MODE==slow)? 1000 :100);
Big O counting enemies on n by n battlefield
To find the enemies, u have to go through the whole grid O(n^2)
pop
To remove an item from the top of a stack.
(True/False) A class can implement more than one interface.
True
(True/False) Multiple classes can implement the same interface.
True
True or False: There are always categories betweeen.
True
True/False -- Aliasing can lead to problems if the object is mutable.
True
True/False: In order to run an instance method, you must run it for a particular object (the current object).
True
True/False: The same class can contain some members that are static and some members that are non-static.
True
(True/False) The following could appear in an interface: public static void g(String a) { System.out.println(a); }
True- normal static method implementation
To compile java source code
Type javac and then the name of the file including the extension .java
when to use switch statement
When there is a variable and the value of that variable dictates choices
Big O inserting at the front of an array
Work is in copying stuff into the array that is 1 bigger O(n)
void f(int x, double y) void f(double x, int y)
Works, but method calls could be ambiguous. For example: f(2, 3)will not compile.
ternary operator X? Y : Z What is X?
X must be a boolean expression
If a member is declared as private, can it be accessed from inside the same class?
Y
If a member is declared as public, can it be accessed from another class?
Y
If a member is declared as public, can it be accessed from inside the same class?
Y
If a member is declared as public, can it be accessed from inside the same class? If a member is declared as public, can it be accessed from another class? If a member is declared as private, can it be accessed from inside the same class? If a member is declared as private, can it be accessed from another class?
YES YES YES No
public void bark( ){ Dog x= new Dog( ); .... x.weight( )....
YES- accessing instance variable using an object
public static void foo( ){ Dog x= new Dog( ); x.weight( );
YES- called upon object
public void bark( ){ Dog x= new Dog( ); ....weight.....
YES- represents the weight of the dog that is barking right now
public void bark( ){ Dog x= new Dog( ); Dog.MIN_DOG_WEIGHT
YES- typical syntax, used in other classes besides Dog class
public void bark( ){ Dog x= new Dog( ); x.MIN_DOG_WEIGHT
YES- will access the min dog weight through x but not used often
public void bark( ){ Dog x= new Dog( ); MIN_DOG_WEIGHT
YES- works as long as you are in Dog class
Consider the following code fragment: int x = 17; foo(x); System.out.println(x); Will the output be 17?
Yes
Does the getter in the Basket class, below, cause a privacy leak? public class Basket { private Egg[] eggs; ... public getEggs() { return eggs; } ... }
Yes
Are the elements of an array of primitives automatically initialized? If so, to what values?
Yes, 0
Could the following pair of methods be included in the same class? public void f(int x, String y) {...} public void f(String y, int x) {...}
Yes, and there is no possibility of ambiguous method calls
public void f(int x) {...} public void f(long x) {...}
Yes, and there is no possibility of ambiguous method calls
Could the following pair of methods be included in the same class? public void f(short x, long y) {...} public void f(long x, short y) {...}
Yes, but there is a possibility of ambiguous method calls
Could you put int x=3; in an interface?
Yes, it is seen as public static final int x=3;
Will this work? public void foo(int x) public void foo(long y)
Yes- if the first method did not exist and you passed in 5, it would still run and the 5 would be casted to a long >>> the method runs that is "closest" to the type of variable that you enter
Will this work? public void foo(int x, String y) public void foo(String x, int y)
Yes- Order matters!
What is accomplished when you type "import java.awt.*;" at the top of a file?
You are importing EVERYTHING that is in the package java.awt.
Picture a parent class Clock that has subclass alarmClock that has subclass radioAlarmClock. What can you pass into this method? What methods can you call on c? void moveForwardOneHour(Clock c)
You can pass anything that is a clokc into the method. However, you can only call methods that are in the clock method on c.
Picture a parent class Clock that has subclass alarmClock that has subclasses radioAlarmClock and natureClock. What can you pass into this method? What methods can you call on c? void soundAlarm(AlarmClock c)
You can pass in any class that is an alarmClock. You can call any Clock aand alarmClock methods.
Quotation mark
\"
one slash
\\
new line
\n
tab
\t
Assume that the following code has been executed. String a = new String("bozo"); String b = a; String c = new String(b); Which of the following boolean expressions will evaluate as true? (Select all that apply.) b == c a == b a.equals(c)
a == b a.equals(c)
copy constructor
a constructor that accepts an object of the same class as an argument
What is assembly language?
a mnemonic representation of machine language
instance variable
a variable defined in a class for which every object of the class has its own value
What term describes the situation where two different variables refer to the same object? (Your answer should be one word.)
alias
Which of the following should be described in the comment that appears directly above a method? (Select all that apply.) Side effects that result from calling the method (assuming there are side effects) Acceptable values for the parameters (assuming there are parameters) Description of how the return value is calculated (assuming there is a return value)
all of the above
Whats better about extending a class?
allows inheritance of all methods and all variables- heavy decision
Cases must
always be constant expressions (cannot be x or call a method) UNLESS IT IS FINAL!
The "try" block is
always executed
FlyingObject x; What can be assigned to x?
an instance of any class that implements the FlyingThing interface
Deep copy
an operation that not only copies one class object to another but also makes copies of any pointed-to data
Linear Algorithm
any straight line graph
stringBuffer.append()
appends the arguments to the StringBuffer- much faster in loops
Assume that the variable arr represents a ragged 2D array. Write an expression whose value is the number of rows in the 2D array. (Do not include any spaces or extra symbols in your answer).
arr.length
Assume that the variable arr represents a ragged 2D array. Write an expression whose value is the length of the first row in the array. (Do not include any spaces or extra symbols in your answer).
arr[0].length
void arrayTraverse (int current, int[ ] array){ if (current == array.length)return; // process array[current] arrayTraverse ( _________, array); } How should arrayTraverse be called to process every element in the array nums?
arrayTraverse(0,nums)
Two different data structures for linear abstract data type
arrays(and arrayList), Linked allocation
what does this subject have to do with asymptotes?
as n gets bigger, function gets closer and closer to an asymptote
Why exceptions are better
because the user might be confused since they don't read the instructions. Additionally, the Error Code might be processed like normal data
Beginning of linked list name and end of linked list
beginning: head end: null reference
Write a statement that simultaneously declares three variables of type boolean, named x, y, and z.
boolean x, y, z;
Shoe analogy- if two objects are aliases and one of them is mutable
both objects will change
Which of the following will compile? (Select all that apply.) byte a = 17; byte d = 130; double c = 15F; String e = 'x'; int b = 15L;
byte a = 17; NOT BYTE D BECAUSE IT CAN ONLY STORE UP TO 127 double c = 15F;
When your Java program is compiled, what type of file is created? (Hint: It is NOT machine language.)
bytecode
What does it mean for someone to say that a Java program is "portable"?
bytecode will run successfully on any platform as long as java virtual machine is available
this and constructors
call constructors from different constructors
instance variables drawing
call stack holds reference to memory location of obj, where any new instance variables are made, primitives stay in that obj and new obj (Strings, names) are made with a new reference
Immutable Objects
cannot be changed after initialized by constructor
List the two Java primitive types that are used to store values that are not numbers.
char boolean
Which of the following represents the correct way to declare three char variables at the same time? char a, char b, char c; char a char b char c; char a b c; char a, b, c;
char a, b, c;
Initializing An Array When Constructed
char[] array = {'q', 't', 's', 'r'} Cat [] kitties = {new Cat ("Felix"), new Cat ("Tom"), new Cat ("Sylvia"), new Cat ("Steve")}
What will the output be? int x = 4; if (x < 7) { int y = 9; } else if (x < 8) { int y = 15; } System.out.print(y);
code fragment won't compile
How is your Java source code translated into machine code?
complier > interpreter
ternary operator
condition ? value if true : value if false;
Where can the keyword "this" be used?
constructors, instance methods
Concatenation doesn't modify the string, it
creates a new string with the modification and assigns it to the original variable
void arrayTraverse (int current, int[ ] array){ if (current == array.length) return; // process array[current] arrayTraverse ( _________, array); } The method arrayTraverse recursively visits each element in an array, processing each element in some way. Which expression should go in the blank?
current + 1
state
data contained inside object
Consider the class below (partially shown): public class MyWords { private StringBuffer[] words; ...} If you are writing a "getter" for the variable "words", what should the return value refer to?
deep copy
this.patch= new eyepatch(other.patch);
deep copy constructor- invoking the copy constructor of the eyepatch class
I/O device
devices that allow you to communicate with the computer
Write a method with the prototype shown below. The return value will be an exact copy of the parameter, but each value from the parameter will be represented twice. For example, if the parameter is the array [2, 5, 9] then the return value will be the array [2, 2, 5, 5, 9, 9]
do in eclipse
Write a method with the prototype shown below. The return value will be an exact copy of the parameter, but with the even numbers removed. For example, if the parameter is the array [7, 4, 19, 8, 11] then the return value will be [7, 19, 11].
do in eclipse
implicit casting hierarchy
double float long int short byte
What IDE will we use in class this semester?
eclipse
cons of formal verification
expensive, time consuming
when does the base matter? (exponential vs. logarithmic)
exponential 72^n vs 2^n log2n = log72n
(True/False) If a class implements an interface, the only methods that may be present in the class are those that are listed in the interface.
false
(True/False) If a method is not correct, testing is more likely to demonstrate the failure than "formal verification".
false
(True/False) The following code fragment will compile: int x; if (x == 6) { System.out.println("Hi"); }
false
(True/False) The following could appear in an interface: public static int x;
false
(True/False) The following could appear in an interface: public void greenCorner(MyGrid grid) { grid.setColor(0, 0, Color.GREEN); }
false
(True/False) The following two loops behave the same way in all cases: while(x < 0) {...} __________________________________________________________ do { ...} while(x < 0);
false
(True/False) These two expressions carry the same value: (Assume that in both expressions, x starts with the same value). --x ++x
false
If you change a class without modifying the API, then other classes which depend on this one will have to be re-coded.
false
True or false: There is a slowest big o category.
false
Which of the following are advantages that RAM has over secondary memory?
faster
StringBuffer being mutable is good because
faster and uses less memory
indexOf(Object o)
finds object index
List the two Java primitive types that can be used to store floating point values.
float double
How much memory is required to store float and double
float - 4 bytes double - 8 bytes
Assume there is a class called Apple, which is inside a package called fruit. The fruit package is inside a package called food. What is the fully qualified name of the Apple class?
food.fruit.Apple
for-each loop
for (Type variable: collection){ Statement } -first time through the loop, variable refers to first element in the collection -pattern repeats -variable has to be the same type s the collection holds
iterating through ragged array
for (int row = 0; row < name.length; row++) { for (int col = 0; col < nam[rows]e.length; col++) { Process name[rows][cols]; } }
After you have created this array, write code that will print the contents in the same format that you see above. 5 8 9 4 11 13 15 17 0 1
for (int row = 0; row < x.length; row++) { for (int col = 0; col < x[row].length; col++) { System.out.print(x[row][col] + " "); } System.out.println(); }
looping through 2d array with for each loops
for(int[ ] row: arrayName) for(int col: row) -the type of each row is an int [ ] array -for the inner loop, each column is an int, in the current collection row
Each primitive type in Java
has a corresponding wrapper class
if mixture of mutable and immutable
hybrid: age=other.age; weight=other.weight; patch=other.patch; bird=new parrot(other.bird);
When to use shallow copy
if immutable
using instance variables
if in the same class- variable; if in different class- obj.variable;
O(n)
if it is linear (or faster) -can be used to discuss an actual function or an algorithm if it has a straight line graph
O(log n)
if it is logarithmic (or faster)
O(n^2)
if it is quadratic or faster
When to use deep copy
if mutable
Use array list when
if things may be added or removed
Under what circumstances will Java provide a default constructor for you automatically?
if u dont write one
When passing variables into functions as parameters
if variables are primitives- values do not change during a method call if variables are objects- method can change the state of the objects
when to use linear search
if you have no knowledge about the organization of the list
The string class is immutable/mutable
immutable
Strings are
immutable- cannot be changed
Assume there is a class called Carrot that is inside a package called veggies. If you are writing a class that is outside of the veggies package, what statement would you write at the top of your class so that you could declare variables of type Carrot without using the fully qualified name?
import veggies.Carrot;
Assume there is a class called Car that is inside a package called vehicles. If you are writing a class that is outside of the vehicles package, what statement would you write at the top of your class so that you could declare variables of type Car without using the fully qualified name?
import vehicles.Car;
what happens to the runtime when the data set doubles? -- logarithmic algorithm
increases by a fixed constant
Which kinds of variables are given default values if you do not initialize them? (Local/ instance/static? Which ones?)
instance and static
behaviors of objects
instance methods
In which of the following places does it make sense to use the Java keyword "this"?
instance methods & constructors
state of objects
instance variables
How much memory is required to store : int byte short long char
int - 4 bytes byte - 1 byte short - 2 bytes long - 8 bytes char - 2 bytes
Write a statement that declares a variable named counter of type int, and stores the value 182 in the variable.
int counter = 182;
Which of the following will compile? (Select all that apply.) int u = (int) 999999999999L; float t = 3.4; double r = 7; long v = 999999999999; long s = 24F;
int u = (int) 999999999999L; double r = 7;
Below are examples of declaring an instance variable, x. The first example uses public visibility. The second examples uses private visibility. public int x; private int x; What statement would you write to declare x with package visibility?
int x;
int[] x, y; int a, b; can also be written as
int x[], y[], a, b; BUT NOT RECCOMMENDED
What variables can be at the top of the switch statement?
int, short, byte, char, String NOT LONG
Write a legitimate Java statement that will declare a variable called values, that will represent an array of ints. Your statement should also simultaneously assign to the variable an array of size 100.
int[ ] values= new int[100];
Write a code fragment that creates a two-dimensional ragged array of ints with 3 rows, initialized with the following data: 5 8 9 4 11 13 15 17 0 1
int[][] x = {{5, 8, 9}, {4, 11, 13, 15, 17}, {0, 1}};
To resize an array
int[]a = new int[5]; int[] b= new int (a.length + 1); -Then use a loop to assign every value in array a to array b -Access the last box (a.length - 1) and assign it a value -Then alias the original array to the new array
Objects are constructed using "new" which
invokes a constructor
StringBuffer
is mutable
If one person has a linear algorithm and someone else has a quadratic algorithm which will run faster?
it depends- picture a linear that is very steep and a very gradual parabola - in smaller sets of data, it depends -in larger sets of n, the parabola will be slower because it does not have a fixed slope, versus the linear graph has a fixed slope -as n goes towards infinity, the parabola is worse than the straight line
To invoke the java virtual machine to run the byte code
java followed by the name of the class that has the main method without .class on the end of it ex: java HelloWorld
Which java package is automatically imported in its entirety into every Java program you write?
java.lang
What package is the Scanner class located in? What is the fully qualified name of the Scanner class?
java.util is the package. The fully qualified name is "java.util.Scanner"
Assume you have an array called list. What expression will return the number of elements in this array? (Be sure to write correct Java syntax.)
list.length
What do you call the language that the CPU uses (0's and 1's represent instructions in this language)
machine language
when you make a 2d array, what step do you have to do
make the references to each array in each row ex: int [ ] [ ] a= new int [4] [ ]; a[0] = new int[4]; a[1]= new int[2]; a[2]= new int [1]; a[3]= new int[4];
What term describes 2^20 bytes of space?
megabyte
package visibility
member is visible in class and any class in the same package
When objects are passed as parameters
memory location gets copied (think memory diagram)- arrows point to same as in main method
FINALLY BLOCK- an exception is thrown and the handler isn't found locally
method is popped off the stack > finally block
calling another instance method in same class
method( ) ;
Calling static method in same class
method( );
What advantage do you gain from using one of the floating point types that requires MORE memory?
more precision (retains more digits)
What is the advantage of primary memory over secondary?
much faster
What is the advantage of secondary memory over primary?
much more storage and it is permanent
arrays are always (draw diagram of a reference array)
mutable so if there is an alias to an array you can change any of the elements in the array
2D array- To return the length of name[ ][ ] (how many rows)
name.length
2D array- To return the length of a row in name[ ][ ] (how many cols in that row)
name[row num].length
Are integers or primitives effected by either shallow or deep copies?
no
Can you have multiple try blocks for one catch block?
no
Is the following statement valid: int x = 34.7;
no
Will this work? public void foo(int y) public int foo(int x)
no
Will this work? public void foo(int y) public void foo(int x)
no
punctuation in javadoc
no
int x=17; byte c=x; works or no
no bc hierarchy but if you do byte c= 17 it will compile
Dog a, b, c;
no dog obj made until NEW keyword
If there's a return statement IN A CATCH BLOCK
no other code afterward is run EXCEPT the finally block
As soon as the exception is thrown in a specific method,
no other code within that method is executed
is there a best data type?
no, based on scenario
If there's an exception early on within the try block,
none of the statements after that are attempted because the program is looking for Exception Handlers. Once the Exception is Handled, none of the remaining code within the try block is executed
Pirate x = new pirate( ); Pirate y = x;
not a copy, aliasing
2d ragged array
not all rows are the same size
alarmClock extends Clock
now alarmClock has all of the features of Clock- all instance variables, constructors, methods
Typical instance method call
object.method( );
private
only available in class
unary operator
operator with only one operand( ++, --, !, -(negative sign), +(positive sign))
if a class is inside of a named package, what appears at the top?
package packageName;
Assume there is a class called Carrot in a package called veggies. What statement must appear at the top of the Carrot class (since it is in the veggies package)?
package veggies;
Assume there is a class called Car in a package called vehicles. What statement must appear at the top of the Car class (since it is in the vehicles package)?
package vehicles;
If you were taking an introductory programming course in the 1980's, which of language is most likely to have been taught?
pascal
rewrite this using the ternary operator: if(shape== CIRCLE) { perimeter = Math.PI * size; }else { perimeter = 4 * size; }
perimeter= ((shape==CIRCLE)? Math.PI * size: 4*size);
example of shallow copy
public AdjustableHat[] getHatsTwo() { AdjustableHat[] copy = new AdjustableHat[myHats.length]; for (int i = 0; i < myHats.length; i++) { copy [i] = myHats[i]; } return copy; }
correct equals method w/ clock example instance variables = hours, mins, secs
public boolean equals(Object x){ if( !(x instanceOf Clock){ return false; } Clock c= (Clock)x; return hours == c.hours && mins==c.mins && secs= c.secs; } ------overloads it-----
Write a class that has an instance variable which is an array of Cat objects, called kitties. Write a method that returns a reference copy of kitties. Write a method that returns a shallow copy of kitties. Write a method that returns a deep copy of kitties.
public class Circus { private Cat[] kitties; public Cat[] referenceCopy( ) { return kitties; } public Cat[] shallowCopy() { Cat[] copy = new Cat[kitties.length]; for (int i = 0; i < copy.length; i++) { copy[i] = kitties[i]; } return copy; } public Cat[] deepCopy() { Cat[] copy = new Cat[kitties.length]; for (int i = 0; i < copy.length; i++) { copy[i] = new Cat(kitties[i]); } return copy; } }
Write a java class called "Fred". Put in a main method. Have the main method store your age in a variable named age. Then main should print out a line that has your name, followed by your age. (Use a ?string literal? for your name, but use the variable to access your age.)
public class Fred{ public static void main(String args[]){ int age = 12; System.out.println("Eileen W, age is " + age); } }
If someone showed you a Java class, how can you quickly identify which members were part of the API for that class?
public members
Write a method called smallSum that takes two int parameters, x and y. If the absolute value of the sum of the integers is more than 100, throw an ArithmeticException, passing the String "I don't like bi\ g numbers" to the constructor of the exception. If the sum is less than 100, then return the sum. Write a quick driver to test out your method. After making sure everything works correctly, modify the driver so \ that it catches the exception and prints out the message that was passed to the exception's constructor, but doesn't crash the program.
public static int smallSum(int x, int y) { if (Math.abs(x + y) > 100) { throw new ArithmeticException("I don't like big numbers!"); } return x + y; } public void static main(String[] args) { try { smallSum(50, 60); } catch (ArithmeticException e) { System.out.println(e.getMessage()); } }
Name and describe the two visibility specifiers that you should know at this point.
public: these members are visible everywhere private: these members are visible only within the class
Consider the Basket class, partially shown below. What kind of copy of the array is being returned by the getter? public class Basket { private Egg[] eggs; ... public getEggs() { return eggs; } ... }
reference copy
"e"
reference to the Exception Object
rewrite this using the ternary operator: if (size < 100){ return "large"; }else{ return "small"; }
return (size < 100) ? "large" : "small"
get(int index)
returns the element at the given index
Why is the substring method expensive
runtime is O(n^2) because you have to copy characters over
Suppose you have a String variable called s. What expression will return the number of characters in the String?
s.length();
ternary operator X? Y : Z What must Y and Z be
same type
Which of the following two code fragments is a better choice? if (x == 4) { System.out.println("A"); } if (x == 6) { System.out.println("B"); }_________________________________________________ if (x == 4) { System.out.println("A"); } else if (x == 6) { System.out.println("B"); }
second one
Define the term "byte"
sequence of 8 bits
Which of the following is the best definition for the term "byte"?
sequence of 8 bits
Assume that x is an array of String references. Which kind of copy of the array is made is below? String[] y = new String[x.length]; for (int i = 0; i < y.length; i++) { y[i] = x[i]; }
shallow copy
Consider the Basket class, partially shown below. What kind of copy of the array is being returned by the getter? public class Basket { private Egg[] eggs; ... public getEggs( ) { Egg[] copy = new Egg[eggs.length]; for (int i = 0; i < eggs.length; i++) { copy[i] = eggs[i]; } return copy; } ... }
shallow copy
GETTERS FOR ARRAYS ARE DIFFERENT AND CANNOT BE NORMAL GETTERS. YOU HAVE TO USE EITHER A
shallow or deep copy
The "catch" block is only executed if
something weird (which solicits the exception to be thrown) happens. If the program runs exactly as expected, the catch block is ignored
Javadoc comments
starts with a forward slash and two asterisks (/**) and end with an asterisk forward-slash (*/) Are used to generate documentation with Javadoc
.equals
state of objects
What kind(s) of variables are given default values if they are not initialized explicitly?
static instance
What advantage do you gain from using one of the types of integer types that requires MORE memory?
store larger values or wider range of values
Which of the following represent possible identifiers (names of variables, methods, classes, etc.) in Java? We're not asking whether or not they are good style, just whether or not they satisfy the language requirements. (Select all that apply.) string 3OfAKind #goals int $balance_in_account
string, $balance_in_account
Gausses Formula
sum of numbers 1-n = n*(n-1)/2
Rewrite using switch statements. if(x == 3) { A } else if (x == 40){ B }else if(x == -5){ C }else{ D }
switch(x){ case 3: A break; case 40: B; break; case -5: C; break; default: D; }
Suppose you accidentally type "System.out.pint()" instead of "System.out.print()". What kind of error is this? syntax error logical error semantic error
syntax
Why are linked lists favored
take less time when inserting elements
Unit Testing
testing of individual programs by itself to make sure it satisfies contract
integrated testing
testing several components together working up to entire project
If an exception within a method isn't handled via an Exception Handler,
that method is popped off the Call Stack
There's two different parts of an exception:
the Exception and the Exception Handler
If the handler isn't within the Method where the Exception is created,
the Method in which the Exception is created is popped off the Call Stack
Aliasing is a ONLY a problem for mutable objects because
the Object can be changed, but it must be changed EVERYWHERE and this impacts the rest of the code
If all objects of a specific class are mutable/immutable,
the class is mutable/immutable
If there is no handler for a certain exception what happens with the finally block?
the finally block is STILL executed
the more data we process
the longer it takes
The String[] args parameter in the main method header allows
the program to receive arguments from the operating system command-line.
inheritance (in Java)
the relationship where a more specialized subclass is also of the type of a more general superclass
block scope
the scope of a variable declared within a statement block; a variable with block scope can be used only within the statement block in which it is declared, and only after its declaration statement
The exception might print early because
there are multiple threads of the program running at the same time
if the thing that the arrows are pointing at is mutable
this is a problem -arrays are always mutable, thats why reference copys are bad
public class Rabbit { public Rabbit(double size) { ...} public Rabbit() { // What goes here? } } Which of the following statements could be inserted into the second constructor so that it calls the first constructor with the argument 9.2?
this(9.2);
Assume the following class declaration, partially shown: public class Classroom { private String roomNumber; // e.g.: "IRB0324" private int capacity; // number of seats in the room public Classroom(String roomNumberIn, int capacityIn) { roomNumber = roomNumberIn; capacity = capacityIn; } public Classroom(String roomNumberIn) {// What should go here? } ... } What should you type into the body of the second constructor, so that it initializes the current object with the room number that is provided as an argument, and with a capacity that is always set to 100? Your answer must be a single statement that invokes the first constructor.
this(roomNumberIn,100);
Strings being immutable is bad because
time and memory (because this creates a lot of garbage in the Heap)
When you pop an entry into the stack does it go on the top or bottom?
top
When you push an entry into the stack does it go on the top or bottom?
top
Usually, the author of a Class states whether their Class is mutable/immutable at the
top of the API
(True/False) A method that is given a default implementation in an interface can be called on an instance of a class that implements the interface, even if the method does not appear in the class.
true
(True/False) In Java, arrays are objects.
true
(True/False) These two expressions carry the same value: (Assume that in both expressions, x starts with the same value). x-- x++
true
If you change a class in such a way that the API changes, then other classes which depend on this one will have to be re-coded.
true
True/False: In java, when you pass a reference variable as an argument to a method, it is possible for the method to modify the object to which the variable refers.
true
What values can a boolean variable achieve?
true or false
FINALLY BLOCK-in the try/catch block and there's a return which terminates the method
try block > catch block > finally block
FINALLY BLOCK- one exception is thrown and the handler is found locally
try block > catch block > finally block > remaining code outside
FINALLY BLOCK- No exceptions are thrown
try block > finally block > remaining code outside
Exception Handler
try { <code which might throw an exception> } catch (ExceptionClass e){ <put handler here> }
Catching multiple exceptions
try { <put troublesome code here> } catch (NullPointerException e) { <handler here> } catch (Arithmetic Exception e){ <other handler here> } catch (IOException e){ <other handler here> }
Finally block
try { <put troublesome code here> } catch (NullPointerException e) { <handler here> } catch (Arithmetic Exception e){ <other handler here> } catch (IOException e){ <other handler here> } finally { <code that is ALWAYS executed> } -follows all catch blocks, and executes after the program exits the corresponding try or catch blocks !!!!!ALWAYS RUNS!!!!! USE TO CLEAN UP CODE
Implicit Casting
type widening
Declaring a 2d ragged array the long way
type[ ] [ ] name = {value, value, value}, {value, value}....
operator precedence hierarchy
unary, multiplicative, additive, compairison, equality, and, or, assignment
If you don't plan to manipulate the string a lot,
use String
If you plan to manipulate the string (in a loop),
use StringBuffer
++x
value is x after incremented
Local variables
variables that are declared inside a method, stored on call stack
public
visible in the entire project
push
when something is added to the top of the stack- always goes on top
Assume that x and y are variables of type char. How to check whether or not x and y are the same character?
x == y
double x= 58.7; int y= (int) x;
x does not change, just a copy is put into y
After the following code has executed, what are the values of x and y? int x = 7; int y = --x - 2;
x is 6, y is 4
Assume that x and y are variables of type String. Which of the following boolean expressions should be used to check whether or not x and y contain the same sequence of characters?
x.equals(y)
Never forget that you should not compare two Strings with the == operator. Suppose you have two String variables, x and y. Give an expression that can be used to check whether or not the Strings x and y are identical.
x.equals(y);
After the following code has executed, what are the values of x and y? int x = 4; int y = 6 + x++;
x=5, y=10
How to instantiate the cats
x[0] = new Cat("Fluffy"); x[1] = new Cat("Princess"); x[2] = new Cat("Spot"); x[3] = new Cat("Steve");
Using the ternary operator (?:), write a single statement that is equivalent to the following code fragment, and only includes one assignment operator. DO NOT INCLUDE ANY SPACES IN YOUR ANSWER. if (x < 5) { y = 20; } else { y = 50; }
y=x<5?20:50;
Can you have multiple catch blocks for one try block?
yes
Is the following statement valid: boolean q = 17 < 25;
yes
Is the following statement valid: double y = 12;
yes
can you use this in instance methods
yes
public static void h(int x) { x = 4; bar(x); } After the call to the bar method is over, will the variable x still be set to 4?
yes
Immutable classes are preferred because
you can alias with no issues
Whats better about using interfaces?
you can only extend one class, but you can implement as many as you want
public default instance methods
you can put code in and the class that implements the interface inherit the coed and are able to override the method w/ own implementation
why do Java Collections Framework rely on equals method being correctly
you do not check if the exact object is in the collection, just one that looks the same
How many Cat objects are intialized? Cat[] x; x = new Cat[4];
you don't have 4 cats until you've initialized the 4 cats
When comparing performance of two algorithms from different categories, what can we say about performance?
you have to say for sufficiently large values of n, one category is better than another but that is all you can say ex : 16 steps - all of the big o are abbreviations "some linear function" "some quadratic function" so you cannot tell specifically
Accessing a class from a different package
you have to use import: import wholePackageName.innerPackageName...nameOfClass or use the fully qualified name every time you use the class
StringBuffer being mutable is bad because
you need to do copying instead of aliasing
JUnit cons
you never know if your code is precisely correct
If an Exception has been thrown without a Handler
you will get a Red Error Message on the console
When you throw an exception
your program will no longer be executed. This is because Java is looking for an Exception Handler (which fixes the problem)
Java Generics
• technique that allows us to define methods and classes that work with a variety of data types without the need for explicit casting.
static variables
• variable is connected to the whole class, not individual objects • all variables of the class share this one variable • with the keyword final it is used to create a constant
How many bytes are in a gigabyte?
1 billion or 2^30 bytes
What is the value of the following expression (in Java): 6 + 5 / 2 * 2
10
How many different values can be represented by 4 bits?
16
roundoff error
A numerical error that occurs because floating-point numbers are stored as approximations rather than as exact values.
super class
Class that contains the code with both state and behavior that can be extended by its subclasses.
Can this be used in an interface? public int x;
False- no instance variables
public static void foo( ){ Dog x= new Dog( );
ONLY ONE DOG
FlyingObject x; What can you do with x?
Only the methods listed in the interface x.takeOff( ): x.fly( ); x.land( );
Primary Memory Device
RAM