DOC PREVIEW
Penn CIT 594 - Using Statics

This preview shows page 1-2-3-4 out of 13 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 13 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 13 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 13 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 13 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 13 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Using StaticsReview: class and instance variablesExample of a static variableReview: class and instance methodsStatic contextAbout the termAn example of static poisoningAnother exampleA solutionA better solutionThe best solutionSummaryThe EndUsing Statics2Review: class and instance variables•int is a data type;3 is a value (or instance) of that type•A class is a data type;an object is a value (instance) of that type•A class variable belongs to the class as a whole; there is only one of it•An instance variable belongs to individual objects; there is one of it for each object, but none for the class as a whole•You can’t refer to an instance variable if you don’t have an instance•You “always” have the class•The keyword static marks a variable as a class variable3Example of a static variableclass Person { String name; // Instance variable boolean alive; // Instance variable static int population; // Class variable Person(String name) { // Constructor this.name = name; alive = true; population++; } public void die() // Method alive = false; population--; }4Review: class and instance methods•An instance method “belongs to” an individual object—you can use it only by “sending a message” to that object•Example: String s = myTextField.getText();•Example: saddamHussein.die();•A class (static) method belongs to a class•Examples:–y = Math.abs(x);–if (Character.isLetter(ch)) { ... }–population = (int)(0.9 * population); // war5Static context•An application requires a public static void main(String args[]) method•It must be static because, before your program starts, there aren’t any objects to send messages to•This is a static context (a class method)–You can send messages to objects, if you have some objects: myTextField.setText("Hello");–You cannot send a message to yourself, or use any instance variables—this is a static context, not an object•non-static variable xxx cannot be referenced from a static context6About the term•Static poisoning refers the fact that, in an application, you can’t access non-static variables or methods from a static context, so you end up making more and more things static•“Static poisoning” is not a term that is in widespread use—I made it up•There is a simple solution to this problem7An example of static poisoningpublic class StaticPoison { int x; int y; public static void main(String args[]) { doOneThing(); } void doOneThing() { x = 5; doAnotherThing(); } void doAnotherThing() { y = 10; }}staticstaticstaticstaticerrorerrorerrorerror8Another examplepublic class JustAdd { int x; int y; int z; public static void main(String args[]) { x = 5; y = 10; z = x + y; }}all are wrong9A solution public class JustAdd { int x; int y; int z; public static void main(String args[]) { JustAdd myself = new JustAdd(); myself.x = 5; myself.y = 10; myself.z = myself.x + myself.y; }}10A better solution public class JustAdd { int x; int y; int z; public static void main(String args[]) { new JustAdd().doItAll(); } void doItAll() { x = 5; y = 10; z = x + y; }}11The best solution•Know when a variable or method should be static!–A variable should be static if:•It logically describes the class as a whole•There should be only one copy of it–A method should be static if:•It does not use or affect the object that receives the message (it uses only its parameters)•When you are writing a “main” class with a main method:–Would it possibly make sense to have more than one of this “main” object?–If so, create one in your main method and use it12Summary•In an application, frequently the best way to write the main method is as follows:•class MyClass { public static void main(String args[]) { MyClass myself = new MyClass(); myself.doAllTheWork(); } void doAllTheWork() { // Note: not static }}13The


View Full Document

Penn CIT 594 - Using Statics

Documents in this Course
Trees

Trees

17 pages

Searching

Searching

24 pages

Pruning

Pruning

11 pages

Arrays

Arrays

17 pages

Stacks

Stacks

30 pages

Recursion

Recursion

25 pages

Hashing

Hashing

24 pages

Recursion

Recursion

24 pages

Graphs

Graphs

25 pages

Storage

Storage

37 pages

Trees

Trees

21 pages

Arrays

Arrays

24 pages

Hashing

Hashing

24 pages

Recursion

Recursion

25 pages

Graphs

Graphs

23 pages

Graphs

Graphs

25 pages

Stacks

Stacks

25 pages

Recursion

Recursion

25 pages

Quicksort

Quicksort

21 pages

Quicksort

Quicksort

21 pages

Graphs

Graphs

25 pages

Recursion

Recursion

25 pages

Searching

Searching

24 pages

Counting

Counting

20 pages

HTML

HTML

18 pages

Recursion

Recursion

24 pages

Pruning

Pruning

11 pages

Graphs

Graphs

25 pages

Load more
Download Using Statics
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Using Statics and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Using Statics 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?