Everything Is an Object

You must create all the objects
Where storage lives
There are five different places to store data:
1. Registers.This is the fastest storage because it exists in a place different from that of other storage: inside the processor. However, the number of registers is severely limited, so registers are allocated as they are needed.
2.The stack. This lives in the general random-access memory (RAM) area, but has direct support from the processor via its stack pointer. The stack pointer is moved down to create new memory and moved up to release that memory. This is an extremely fast and efficient way to allocate storage, second only to registers. The Java system must know, while it is creating the program, the exact lifetime of all the items that are stored on the stack. This constraint places limits on the flexibility of your programs, so while some Java storage exists on the stack—in particular, object references—Java objects themselves are not placed on the stack.
3. The heap.This is a general-purpose pool of memory(also in the RAM area)where all Java objects live. The nice thing about the heap is that, unlike the stack, the compiler doesn’t need to know how long that storage must stay on the heap. Thus, there’s a great deal of flexibility in using storage on the heap. Whenever you need an object, you simply write the code to create it by using new, and the storage is allocated on the heap when that code is executed. Of course there’s a price you pay for this flexibility: It may take more time to allocate and clean up heap storage than stack storage.
4. Constant storage. Constant values are often placed directly in the program code, which is safe since they can never change. Sometimes constants are cordoned off by themselves so that they can be optionally placed in read-only memory (ROM), in embedded systems.
5. Non-RAM storage. If data lives completely outside a program, it can exist while the program is not running, outside the control of the program. The two primary examples of this are streamed objects, in which objects are turned into streams of bytes, generally to be sent to another machine, and persistent objects, in which the objects are placed on disk so they will hold their state even when the program is terminated. The trick with these types of storage is turning the objects into something that can exist on the other medium, and yet can be resurrected into a regular RAM- based object when necessary. Java provides support for lightweight persistence, and mechanisms such as JDBC and Hibernate provide more sophisticated support for databases

Special case: primitive types
Create an object with new—especially a small, simple variable—isn’t very efficient, because new places objects on the heap. Instead of creating the variable by using new, an “automatic” variable is created that is not a reference. The variable holds the value directly, and it’s placed on the stack, so it’s much more efficient.
Java determines the size of each primitive type. These sizes don’t change from one machine architecture to another. This size invariance is one reason Java programs are more portable than programs in most other languages.


High-precision numbers
Java includes two classes for performing high-precision arithmetic: BigInteger and BigDecimal. Neither one has a primitive analogue.
You can do anything with a BigInteger or BigDecimal that you can with an int or float, it’s just that you must use method calls instead of operators. Also, since there’s more involved, the operations will be slower. You’re exchanging speed for accuracy.
BigInteger supports arbitrary-precision integers. This means that you can accurately represent integral values of any size without losing any information during operations.
BigDecimal is for arbitrary-precision fixed-point numbers; you can use these for accurate monetary calculations, for example.

Arrays in Java
When you create an array of objects, you are really creating an array of references, and each of those references is automatically initialized to a special value with its own keyword: null.
You can also create an array of primitives. Again, the compiler guarantees initialization because it zeroes the memory for that array.

Creating new data types: class
Default values for primitive members



The default values are only what Java guarantees when the variable is used as a member of a class.
This guarantee doesn’t apply to local variables—those that are not fields of a class.

Methods, arguments, and return values
he method name and argument list (which is called the signature of the method) uniquely identify that method.

Building a Java program
Name visibility
Use your Internet domain name in reverse since domain names are guaranteed to be unique. Since my domain name is MindView.net, my utility library of foibles would be named net.mindview.utility.foibles.
The entire package name is lowercase.

The static keyword
When you say something is static, it means that particular field or method is not tied to any particular object instance of that class. So even if you’ve never created an object of that class you can call a static method or access a static field.

Your first Java program
Automatically brought into every Java file: java.lang
One of the classes in the file must have the same name as the file


猜你喜欢

转载自kellylin1115.iteye.com/blog/2418606