Term
LOAD (op code and description) |
|
Definition
0 Adds the value at the address in operand to the accumulator |
|
|
Term
LOADI (op code and description) |
|
Definition
1 Adds the value of the operand to the accumulator |
|
|
Term
STORE (op code and description) |
|
Definition
2 Stores the value in the accumulator to the address of the operand, sets accumulator to 0 |
|
|
Term
Bytecode, symbol table, and main memory for "x = 3 y = x + 2" |
|
Definition
1, 3, 2, 0, 0, 0, 1, 2, 2, 1 x = 0, y = 1 3, 5 |
|
|
Term
How will the Interpreter code modify Parser? (4) |
|
Definition
1) Parser has a data member that is a ByteCodeInterpreter object
2) parseExpression generates bytecode for loading ID and integer tokens
3) parseAssignment generates bytecode for storing the value of the expression on the right side of the assignment operator into the ID on the left side of the assignment operator |
|
|
Term
How big are addressable slots in memory? |
|
Definition
|
|
Term
What are the primitive types and how much space is allocated for each? (7) |
|
Definition
Primitive types are not programmer-defined.
1) char: 16 bits 2) boolean: 8 bits 3) short: 16 bits 4) int: 32 bits 5) float: 32 bits 6) long: 64 bits 7) double: 64 bits |
|
|
Term
How is an int represented in 0's and 1's? |
|
Definition
An int is represented in a base-two, or binary, number system |
|
|
Term
How is a float represented in memory? |
|
Definition
A binary number with a sign bit, a whole number part, and a fractional part. In the IEEE system, the whole number part has eight bits and the fractional part has 23 bits. |
|
|
Term
How is a String represented in memory? |
|
Definition
In the String pool, a section of the heap. Each character gets two bytes. At the end of every String is the null character, '\0', which is invisible. |
|
|
Term
What does it mean for a value to overflow? (example) |
|
Definition
There is not enough space in memory to hold it. This can happen if an integer is added to another integer and there isn't enough space to hold its sum (or its difference in the case of two negatives). |
|
|
Term
|
Definition
The space in memory for dynamically allocated data. This includes objects created with "new", String literals, and arrays. |
|
|
Term
|
Definition
1) Stores the data for each active method, including main
2) "This", function arguments, and a function's local variables |
|
|
Term
What is an activation record? |
|
Definition
A record of the data for each active method, including main() |
|
|
Term
|
Definition
The part of the heap where String literals are stored |
|
|
Term
What does it mean for a language to have static typing versus dynamic typing? (2) |
|
Definition
1) Static typing means that the type of a variable or data member must be declared, and it usually does not change (except under some specific circumstances). Dynamic typing means that the type is not declared and can be changed at any time.
2) In Java, a new variable can be created through casting of the original variable. |
|
|
Term
Difference between an object and an object reference (2) |
|
Definition
1) An object reference is the address of an object.
2) Class variables point to the address of an object. |
|
|
Term
What do javac and java do? |
|
Definition
Javac is the compiler. It checks for errors and generates bytecode. Then the bytecode goes to the Java Virtual Machine (JVM), which runs the program by changing the bytecode to machine code. |
|
|
Term
How can a method affect the world? (2) |
|
Definition
1) Returning a new value for a variable in main
2) Modifying data members |
|
|
Term
|
Definition
1) "This" is an implicit paramter of a method. It represents the object that the method will operate on.
2) Distinguishes data members from method parameters with the same name
3) Can call one constructor from another |
|
|
Term
Static methods vs. instance methods: what is the difference, how to access (4) |
|
Definition
1) Static methods are class-based. They are the same for any object. Instance methods operate on one object of the class.
2) Static accesss: Class.method. Instance access: object.method.
3) Static methods don't have data members other than constants.
4) Static methods use local variables from main(). |
|
|
Term
Understand the internals of ArrayList and how add() works. (3) |
|
Definition
1) ArrayList has add() and remove(). Add grows teh capacity of the ArrayList if needed, then adds the value passed in to the end of the ArrayList's elements. The capacity is grown by creating a new array with a larger capacity, copying the elements of the original array to the. new array, and assigning the original array variable to the new array.
2) Adding at an index does this, but before adding in the new value, the values after the index shift to the right (a[i] = a[i - 1]).
3) To remove, the values after the index shift to the left (a[i] = a[i + 1]). |
|
|
Term
Understand the difference between String and StringBuilder and how to use each. (3) |
|
Definition
1) String is immutable. Its characters cannot be changed directly. StringBuilder is mutable.
2) You can use the append() method to add to the end of a StringBuilder and setCharAt() to change a value.
3) String values can be changed by concatenation. |
|
|
Term
How is a Java class different from a struct in C? (3) |
|
Definition
1) A struct only contains data members. A class contains data members, a constructor, and methods.
2) When accessing the data member of a struct, a pointer variable must be dereferenced. The pointer accesses the object it is pointing to, which then accesses the data member. The syntax is explicit: pointer->value. In Java, a variable is a pointer to an object, but this is implicit, so the syntax is variable.value.
3) Structs don't have functions, you have to send the struct in explicitly as a parameter to functions (Java does this implicitly). |
|
|
Term
Give an example of a visibility error that can occur. |
|
Definition
Trying to access one class's private data member from another class by using: variable = otherClass.dataMember |
|
|
Term
Why is it common practice to make all data members private? |
|
Definition
1) We don't want private data members to be accessed adn changed improperly. This could especially conflict with use of an object's methods.
2) When the data members are private, you can choose which ones you want to make setter methods for and which ones you don't.
3) You can use input validation in a setter method. |
|
|
Term
When is it appropriate to mark a method as private? |
|
Definition
When that method is a helper method. Calling a helper method on its own could cause an error when the method it helps is called. |
|
|
Term
How to print the contents of an int array? |
|
Definition
|
|
Term
Describe the additional information in the Java function signatures compared to those in Python, and vice versa. (3) |
|
Definition
1) Java allows you to make some data members and methods private or protected.
2) Python is more explicit about passing an object of the class to a class method. Every method has "self" as a parameter (although "self" does not have to be passed when you call the method).
3) Java has return types and parameter types |
|
|
Term
What happens if your class doesn't have a constructor? |
|
Definition
Null data members, empty String, empty character, numbers and booleans set to 0 |
|
|
Term
What is a programmer-defined type? (2) |
|
Definition
1) A programmer-defined type is a type declared as a class.
2) A class is a composite of different types. It has data members, methods, and a constructor to create an object of that class type. |
|
|
Term
Is a String a primitive or a programmer-defined type? (3) |
|
Definition
1) It is a programmer-defined type 2) It can hold a literal 3) Concatenation can be performed |
|
|
Term
|
Definition
1)A single 0 or 1. 2) It corresponds to a single electric current either on (1) or off (0). |
|
|
Term
What does byte-addressable mean? (2) |
|
Definition
Everything in memory is stored in byte-sized slots, and these slots can be accessed by their numerical address |
|
|
Term
How would foo.f1(5) be coded in a non-OO language? |
|
Definition
|
|
Term
pass-by-value and pass-by-reference (4) |
|
Definition
1) Pass-by-value passes the content of a variable. The variable itself does not change in the function, the function just makes a copy.
2) Usually, the value of the copy that is returned will be stored in a new variable in main().
3) Pass-by-reference passes the address, directly changing the variable in memory.
4) If your parameter is an object, you are sending a pointer to an object. |
|
|
Term
Encapsulation and information hiding |
|
Definition
-- Encapsulation means putting data members and methods together in a capsule (a class). This hides the class's data members and method implementations.
-- Information hiding provides a public interface and keeps data members, method implementation, and some entire methods (especially helper methods) hidden. |
|
|