chapter 1

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

string

A String is a value that we can put text into, String is also a class supplied with Java.

12. Which of the following are true? (Choose all that apply) A. A local variable of type boolean defaults to null. B. A local variable of type float defaults to 0. C. A local variable of type Object defaults to null. D. A local variable of type boolean defaults to false. E. A local variable of type boolean defaults to true. F. A local variable of type float defaults to 0.0. G. None of the above.

G. Option G is correct because local variables do not get assigned default values. The code fails to compile if a local variable is not explicitly initialized. If this question were about instance variables, options D and F would be correct. A boolean primitive defaults to false and a float primitive defaults to 0.0.

_____________ statements tell Java which packages to look in for classes. Since

Import statements tell Java which packages to look in for classes.

access modifier

It declares this method's level of exposure to potential callers in the program. Natura

class

The class keyword indicates you're defining a class.

void

the keyword void represents the return type. A method that returns no data returns control to the caller silently.

Reading a variable is known as _________ it. The class

Reading a variable is known as getting it. The class

object

An object is a runtime instance of a class in memory

Java calls a word with special meaning a ___________

keyword

array

An array is a fixed-size list of items that are all of the same type.

Local Variables

A local variable is a variable defined within a method. Local variables must be initialized before use. They do not have a default value and contain garbage data until initialized. The compiler will not let you read an uninitialized value.

Main

A main() method is the gateway between the startup of a Java process, which is managed by the Java Virtual Machine (JVM),

reference type

A reference type refers to an object (an instance of a class). Unlike primitive types that hold their values in the memory where the variable is allocated, references do not hold the value of the object they refer to

what are the points of an constructor

There are two key points to note about the constructor: the name of the constructor matches the name of the class, and there's no return type.

To compile Java code, the file must have the extension _______. The name of the file must ______ the name of the ______. The result is a file of __________ by the same name, but with a __________ file name extension. Bytecode consists of instructions that the _____knows how to execute.

To compile Java code, the fi le must have the extension .java. The name of the fi le must match the name of the class. The result is a file of bytecode by the same name, but with a .class file name extension. Bytecode consists of instructions that the JVM knows how to execute.

how to create objects

To create an instance of a class, all you have to do is write new before it.

variable

A variable is a name for a piece of memory that stores data. When you declare a variable, you need to state the variable type along with giving it a name.

16. Given the following class, which of the following lines of code can replace INSERT CODE HERE to make the code compile? (Choose all that apply) public class Price { public void admission() { INSERT CODE HERE System.out.println(amount); } } A. int amount = 9L; B. int amount = 0b101; C. int amount = 0xE; D. double amount = 0xE; E. double amount = 1_2_.0_0; F. int amount = 1_2_; G. None of the above.

B, C, D. 0b is the prefix for a binary value and is correct. 0x is the prefix for a hexadecimal value. This value can be assigned to many primitive types, including int and double, making options C and D correct. Option A is incorrect because 9L is a long value. long amount = 9L would be allowed. Option E is incorrect because the underscore is immediately before the decimal. Option F is incorrect because the underscore is the very last character

3. Which of the following are true? (Choose all that apply) 4: short numPets = 5; 5: int numGrains = 5.6; 6: String name = "Scruffy"; 7: numPets.length(); 8: numGrains.length(); 9: name.length(); A. Line 4 generates a compiler error. B. Line 5 generates a compiler error. C. Line 6 generates a compiler error. D. Line 7 generates a compiler error. E. Line 8 generates a compiler error. Review Questions 43 F. Line 9 generates a compiler error. G. The code compiles as is.

B, D, E. Option A (line 4) compiles because short is an integral type. Option B (line 5) generates a compiler error because int is an integral type, but 5.6 is a floating-point type. Option C (line 6) compiles because it is assigned a String. Options D and E (lines 7 and 8) do not compile because short and int are primitives. Primitives do not allow methods to be called on them. Option F (line 9) compiles because length() is defined on String.

23. Which of the following are true? (Choose all that apply) A. javac compiles a .class file into a .java file. B. javac compiles a .java file into a .bytecode file. C. javac compiles a .java file into a .class file. D. Java takes the name of the class as a parameter. E. Java takes the name of the .bytecode file as a parameter. F. Java takes the name of the .class file as a parameter.

C, D. Java puts source code in .java files and bytecode in .class files. It does not use a .bytecode file. When running a Java program, you pass just the name of the class without the .class extension.

18. Which represent the order in which the following statements can be assembled into a program that will compile successfully? (Choose all that apply) A: class Rabbit {} B: import java.util.*; C: package animals; A. A, B, C B. B, C, A C. C, B, A D. B, A E. C, A F. A, C G. A, B

C, D, E. package and import are both optional. If both are present, the order must be package, then import, then class. Option A is incorrect because class is before package and import. Option B is incorrect because import is before package. Option F is incorrect because class is before package. Option G is incorrect because class is before import.

The * is a _______ that matches all classes in the package.

The * is a wildcard that matches all classes in the package.

Variables

Variables hold the state of the program, and methods operate on that state.

Writing to a variable is known as __________ it.

Writing to a variable is known as setting it.

There are only three rules to remember for legal identifiers:

■ The name must begin with a letter or the symbol $ or _. ■ Subsequent characters may also be numbers. ■ You cannot use the same name as a Java reserved word. As you might imagine, a reserved word is a keyword that Java has reserved so that you are not allowed to use it. Remember that Java is case sensitive, so you can use versions of the keywords that only differ in case. Please don't, though. Don't

7. Given the following classes, which of the following snippets can be inserted in place of INSERT IMPORTS HERE and have the code compile? (Choose all that apply) package aquarium; public class Water { boolean salty = false; } package aquarium.jellies; public class Water { boolean salty = true; } package employee; INSERT IMPORTS HERE public class WaterFiller { Water water; } A. import aquarium.*; B. import aquarium.Water; import aquarium.jellies.*; C. import aquarium.*; import aquarium.jellies.Water; Review Questions 45 D. import aquarium.*; import aquarium.jellies.*; E. import aquarium.Water; import aquarium.jellies.Water; F. None of these imports can make the code compile.

A, B, C. Option A is correct because it imports all the classes in the aquarium package including aquarium.Water. Options B and C are correct because they import Water by classname. Since importing by classname takes precedence over wildcards, these compile. Option D is incorrect because Java doesn't know which of the two wildcard Water classes to use. Option E is incorrect because you cannot specify the same classname in two imports.

1. Which of the following are valid Java identifiers? (Choose all that apply) A. A$B B. helloWorld C. true D. java.lang E. Public F. 1980_s

A, B, E. Option A is valid because you can use the dollar sign in identifiers. Option B is valid because you can use an underscore in identifiers. Option C is not a valid identifier because true is a Java reserved word. Option D is not valid because the dot (.) is not allowed in identifiers. Option E is valid because Java is case sensitive, so Public is not a reserved word and therefore a valid identifier. Option F is not valid because the first character is not a letter, $, or _.

4. Given the following class, which of the following is true? (Choose all that apply) 1: public class Snake { 2: 3: public void shed(boolean time) { 4: 5: if (time) { 6: 7: } 8: System.out.println(result); 9: 10: } 11: } A. If String result = "done"; is inserted on line 2, the code will compile. B. If String result = "done"; is inserted on line 4, the code will compile. C. If String result = "done"; is inserted on line 6, the code will compile. D. If String result = "done"; is inserted on line 9, the code will compile. E. None of the above changes will make the code compile.

A, B. Adding the variable at line 2 makes result an instance variable. Since instance variables are in scope for the entire life of the object, option A is correct. Option B is correct because adding the variable at line 4 makes result a local variable with a scope of the whole method. Adding the variable at line 6 makes result a local variable with a scope of lines 6-7. Since it is out of scope on line 8, the println does not compile and option C is incorrect. Adding the variable at line 9 makes result a local variable with a scope of lines 9 and 10. Since line 8 is before the declaration, it does not compile and option D is incorrect. Finally, option E is incorrect because the code can be made to compile

9. Which of the following legally fill in the blank so you can run the main() method from the command line? (Choose all that apply) public static void main( ) A. String[] _names B. String[] 123 C. String abc[] D. String _Names[] E. String... $n F. String names G. None of the above.

A, C, D, E. Option A is correct because it is the traditional main() method signature and variables may begin with underscores. Options C and D are correct because the array operator may appear after the variable name. Option E is correct because varargs are allowed in place of an array. Option B is incorrect because variables are not allowed to begin with a digit. Option F is incorrect because the argument must be an array or varargs. Option F is a perfectly good method. However, it is not one that can be run from the command line because it has the wrong parameter type.

13. Which of the following are true? (Choose all that apply) A. An instance variable of type boolean defaults to false. B. An instance variable of type boolean defaults to true. C. An instance variable of type boolean defaults to null. D. An instance variable of type int defaults to 0. E. An instance variable of type int defaults to 0.0. F. An instance variable of type int defaults to null. G. None of the above.

A, D. Options A and D are correct because boolean primitives default to false and int primitives default to 0.

17. Which of the following are true? (Choose all that apply) public class Bunny { public static void main(String[] args) { Bunny bun = new Bunny(); } } A. Bunny is a class. B. bun is a class. C. main is a class. D. Bunny is a reference to an object. E. bun is a reference to an object. F. main is a reference to an object. G. None of the above.

A, E. Bunny is a class, which can be seen from the declaration: public class Bunny. bun is a reference to an object. main() is a method.

15. Which of the following lines of code compile? (Choose all that apply) A. int i1 = 1_234; B. double d1 = 1_234_.0; C. double d2 = 1_234._0; D. double d3 = 1_234.0_; E. double d4 = 1_234.0; F. None of the above.

A, E. Underscores are allowed as long as they are directly between two other digits. This means options A and E are correct. Options B and C are incorrect because the underscore is adjacent to the decimal point. Option D is incorrect because the underscore is the last character.

21. What does the following code output? 1: public class Salmon { 2: int count; 3: public void Salmon() { 4: count = 4; 5: } 6: public static void main(String[] args) { 7: Salmon s = new Salmon(); 8: System.out.println(s.count); 9: } } A. 0 B. 4 C. Compilation fails on line 3. D. Compilation fails on line 4. E. Compilation fails on line 7. F. Compilation fails on line 8.

A. While the code on line 3 does compile, it is not a constructor because it has a return type. It is a method that happens to have the same name as the class. When the code runs, the default constructor is called and count has the default value (0) for an int.

19. Suppose we have a class named Rabbit. Which of the following statements are true? (Choose all that apply) 1: public class Rabbit { 2: public static void main(String[] args) { 3: Rabbit one = new Rabbit(); 4: Rabbit two = new Rabbit(); 5: Rabbit three = one; 6: one = null; 7: Rabbit four = one; 8: three = null; 9: two = null; 10: two = new Rabbit(); 11: System.gc(); 12: } } A. The Rabbit object from line 3 is first eligible for garbage collection immediately following line 6. B. The Rabbit object from line 3 is first eligible for garbage collection immediately following line 8. C. The Rabbit object from line 3 is first eligible for garbage collection immediately following line 12. D. The Rabbit object from line 4 is first eligible for garbage collection immediately following line 9. E. The Rabbit object from line 4 is first eligible for garbage collection immediately following line 11. F. The Rabbit object from line 4 is first eligible for garbage collection immediately following line 12.

B, D. The Rabbit object from line 3 has two references to it: one and three. The references are nulled out on lines 6 and 8, respectively. Option B is correct because this makes the object eligible for garbage collection after line 8. Line 7 sets the reference four to the now null one, which means it has no effect on garbage collection. The Rabbit object from line 4 only has a single reference to it: two. Option D is correct because this single reference becomes null on line 9. The Rabbit object declared on line 10 becomes eligible for garbage collection at the end of the method on line 12. Calling System.gc() has no effect on eligibility for garbage collection.

22. Which of the following are true statements? (Choose all that apply) A. Java allows operator overloading. B. Java code compiled on Windows can run on Linux. C. Java has pointers to specific locations in memory. D. Java is a procedural language. E. Java is an object-oriented language. F. Java is a functional programming language.

B, E. C++ has operator overloading and pointers. Java made a point of not having either. Java does have references to objects, but these are pointing to an object that can move around in memory. Option B is correct because Java is platform independent. Option E is correct because Java is object oriented. While it does support some parts of functional programming, these occur within a class.

20. What is true about the following code? (Choose all that apply) public class Bear { protected void finalize() { System.out.println("Roar!"); } public static void main(String[] args) { Bear bear = new Bear(); bear = null; System.gc(); } } A. finalize() is guaranteed to be called. B. finalize() might or might not be called C. finalize() is guaranteed not to be called. D. Garbage collection is guaranteed to run. E. Garbage collection might or might not run. F. Garbage collection is guaranteed not to run. G. The code does not compile.

B, E. Calling System.gc() suggests that Java might wish to run the garbage collector. Java is free to ignore the request, making option E correct. finalize() runs if an object attempts to be garbage collected, making option B correct.

8. Given the following class, which of the following calls print out Blue Jay? (Choose all that apply) public class BirdDisplay { public static void main(String[] name) { System.out.println(name[1]); } } A. java BirdDisplay Sparrow Blue Jay B. java BirdDisplay Sparrow "Blue Jay" C. java BirdDisplay Blue Jay Sparrow D. java BirdDisplay "Blue Jay" Sparrow E. java BirdDisplay.class Sparrow "Blue Jay" F. java BirdDisplay.class "Blue Jay" Sparrow G. Does not compile.

B. Option B is correct because arrays start counting from zero and strings with spaces must be in quotes. Option A is incorrect because it outputs Blue. C is incorrect because it outputs Jay. Option D is incorrect because it outputs Sparrow. Options E and F are incorrect because they output Error: Could not find or load main class Bird- Display.class.

11. Which of the following are true? (Choose all that apply) A. An instance variable of type double defaults to null. B. An instance variable of type int defaults to null. C. An instance variable of type String defaults to null. D. An instance variable of type double defaults to 0.0. E. An instance variable of type int defaults to 0.0. F. An instance variable of type String defaults to 0.0. G. None of the above.

C, D. Option C is correct because all non-primitive values default to null. Option D is correct because float and double primitives default to 0.0. Options B and E are incorrect because int primitives default to 0.

5. Given the following classes, which of the following can independently replace INSERT IMPORTS HERE to make the code compile? (Choose all that apply) package aquarium; public class Tank { } package aquarium.jellies; public class Jelly { } package visitor; INSERT IMPORTS HERE public class AquariumVisitor { public void admire(Jelly jelly) { } } A. import aquarium.*; B. import aquarium.*.Jelly; C. import aquarium.jellies.Jelly; D. import aquarium.jellies.*; E. import aquarium.jellies.Jelly.*; F. None of these can make the code compile.

C, D. Option C is correct because it imports Jelly by classname. Option D is correct because it imports all the classes in the jellies package, which includes Jelly. Option A is incorrect because it only imports classes in the aquarium package—Tank in this case—and not those in lower-level packages. Option B is incorrect because you cannot use wildcards anyplace other than the end of an import statement. Option E is incorrect because you cannot import parts of a class with a regular import statement. Option F is incorrect because options C and D do make the code compile.

2. What is the output of the following program? 1: public class WaterBottle { 2: private String brand; 3: private boolean empty; 4: public static void main(String[] args) { 5: WaterBottle wb = new WaterBottle(); 6: System.out.print("Empty = " + wb.empty); 7: System.out.print(", Brand = " + wb.brand); 8: } } A. Line 6 generates a compiler error. B. Line 7 generates a compiler error. C. There is no output. D. Empty = false, Brand = null E. Empty = false, Brand = F. Empty = null, Brand = null

D. Boolean fields initialize to false and references initialize to null, so empty is false and brand is null. Brand = null is output.

14. Given the following class in the file /my/directory/named/A/Bird.java: INSERT CODE HERE public class Bird { } Which of the following replaces INSERT CODE HERE if we compile from /my/directory? (Choose all that apply) A. package my.directory.named.a; B. package my.directory.named.A; C. package named.a; D. package named.A; E. package a; F. package A; G. Does not compile.

D. The package name represents any folders underneath the current path, which is named.A in this case. Option B is incorrect because package names are case sensitive, just like variable names and other identifiers.

10. Which of the following are legal entry point methods that can be run from the command line? (Choose all that apply) A. private static void main(String[] args) B. public static final main(String[] args) C. public void main(String[] args) D. public static void test(String[] args) E. public static void main(String[] args) F. public static main(String[] args) G. None of the above.

E. Option E is the canonical main() method signature. You need to memorize it. Option A is incorrect because the main() method must be public. Options B and F are incorrect because the main() method must have a void return type. Option C is incorrect because the main() method must be static. Option D is incorrect because the main() method must be named main.

6. Given the following classes, what is the maximum number of imports that can be removed and have the code still compile? package aquarium; public class Water { } package aquarium; import java.lang.*; import java.lang.System; import aquarium.Water; import aquarium.*; public class Tank { public void print(Water water) { System.out.println(water); } } A. 0 B. 1 C. 2 D. 3 E. 4 F. Does not compile.

E. The first two imports can be removed because java.lang is automatically imported. The second two imports can be removed because Tank and Water are in the same package, making the correct answer E. If Tank and Water were in different packages, one of these two imports could be removed. In that case, the answer would be option D.

public void Chick() { } // NOT A CONSTRUCTOR

It is not a constructor since there's a return type.

Java provides a garbage collector to automatically look for objects that aren't needed anymore. All Java objects are stored in your program memory's heap. The heap, which is also referred to as the free store, represents a large pool of unused memory allocated to your Java application.

Java provides a garbage collector to automatically look for objects that aren't needed anymore. All Java objects are stored in your program memory's heap. The heap, which is also referred to as the free store, represents a large pool of unused memory allocated to your Java application.

Java puts classes in_________

Java puts classes in packages

Benefits of Java

Object Oriented Java is an object-oriented language, which means all code is defi ned in classes and most of those classes can be instantiated into objects. Encapsulation Java supports access modifi ers to protect data from unintended access and modification. Platform Independent Java is an interpreted language because it gets compiled to bytecode. A key benefit is that Java code gets compiled once rather than needing to be recompiled for different operating systems. Robust One of the major advantages of Java over C++ is that it prevents memory leaks. Java manages memory on its own and does garbage collection automatically. Simple Java was intended to be simpler than C++. In addition to eliminating pointers, it got rid of operator overloading. Secure Java code runs inside the JVM. This creates a sandbox that makes

static

The keyword static binds a method to its class so it can be called by just the class name,

The full declaration of a method is called a _________________

The full declaration of a method is called a method signature

args

The variable name args hints that this list contains values that were read in (arguments) when the JVM started.

default package

This is a special unnamed package that you should use only for throwaway code. You can tell the code is in the default package, because there's no package name

finalize

This method gets called if the garbage collector tries to collect the object. If the garbage collector doesn't run, the method doesn't get called. If the garbage collector fails to collect the object and tries to run it again later, the method doesn't get called a second time.

instance variables or class variables.

Variables that are not local variables are known as instance variables or class variables. Instance variables are also called fi elds. Class variables are shared across multiple objects. You can tell a variable is a class variable because it has the keyword static before it.

how do yoy define class

When defining a class, you describe all the parts and characteristics of one of those building blocks

You can even put ____ classes in the same ____. one of the classes in the file is allowed to be _______.

You can even put two classes in the same file. one of the classes in the file is allowed to be public.

boolean byte short int long float double char

boolean true or false true byte 8-bit integral value 123 short 16-bit integral value 123 int 32-bit integral value 123 long 64-bit integral value 123 float 32-bit floating-point value 123.45f double 64-bit floating-point value 123.456 char 16-bit Unicode value

JVM

e. The JVM calls on the underlying system to allocate memory and CPU time, access files, and so on.

fields,

fields, more generally known as variables

methods,

methods, often called functions or procedures

■ Local variables—in scope from declaration to _______ ■ Instance variables—in scope from declaration until ____________________ ■ Class variables—in scope from declaration _________________

■ Local variables—in scope from declaration to end of block ■ Instance variables—in scope from declaration until object garbage collected ■ Class variables—in scope from declaration until program ends


Ensembles d'études connexes

CSU Chem 103 Spring 22 Most Missed Questions

View Set

Social Work 2200 Chapter 6-9 Test, Social Work 2200 Chapters 10, 11, 12, 13 & 14, Social Policy and Issues Final

View Set

D4-1: Firewall Architecture (CISSP Domain 4 Communication and Network Security)

View Set

Uworld incorrect week first few exams till nbm2 16

View Set

Before conception and Pregnancy (14+15)

View Set

Chapter 10: Interest Groups (Inquizitive)

View Set