1 methods chapter 5 spring 2007 cs 101 aaron bloomfield
TRANSCRIPT
![Page 1: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/1.jpg)
1
Methods
Chapter 5Spring 2007CS 101Aaron Bloomfield
![Page 2: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/2.jpg)
2
Preparation Scene so far has been background material and experience
Computing systems and problem solving Variables Types Input and output Expressions Assignments Using objects Standard classes and methods Decisions (if, switch) Loops (while, for, do-while)
Next: Experience what Java is really about Design and implement objects representing information
and physical world objects
![Page 3: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/3.jpg)
3
Object-oriented programming Basis
Create and manipulate objects with attributes and behaviors that the programmer can specify
Mechanism Classes
Benefits An information type is design and implemented once
Reused as needed No need reanalysis and re-justification of the
representation
![Page 4: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/4.jpg)
4
Known Classes Classes we’ve seen
BigInteger String Rectangle Vector Scanner System
Classes we’ll be seeing soon BigDecimal
But the first step is on creating methods…
![Page 5: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/5.jpg)
55
MethodsMethods
![Page 6: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/6.jpg)
6
Methods we’ve seen We’ve seen methods (functions) before
angleSin = Math.sin (90 * PI/180.0); System.out.println (“Hello world”); value = card.getBlackjackValue();
We are going to start defining them
Note that many of these “return” a value Math.sin() and card.getBlackjack()
The way to name methods is the same as variables allTheWordsTogether With the first letter of each word capitalized Except the very first letter is lower case
![Page 7: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/7.jpg)
7
Our first class with methodspublic class Methods1 {
public static void main (String args[]) {Scanner stdin = new Scanner (System.in);System.out.println ("Enter a valid int value");int value = stdin.nextInt();if ( value == 1 ) validValue();else if ( value == 2 ) validValue();else if ( value == 3 ) invalidValue();else if ( value == 4 ) invalidValue();else validValue();
}
}
![Page 8: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/8.jpg)
8
Our first class with methods, continued
public static void invalidValue() { System.out.println ("You have entered an invalid value."); System.out.println ("The program will now exit."); System.exit (0);
}
public static void validValue() { System.out.println ("You have entered an valid value."); System.out.println ("Congratulations!"); System.out.println ("The program will now exit."); System.exit (0);
}
![Page 9: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/9.jpg)
99
Program DemoProgram Demo
Methods1.javaMethods1.java
![Page 10: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/10.jpg)
10
public static void validValue() { System.out.println ("You have entered an valid value."); System.out.println ("Congratulations!"); System.out.println ("The program will now exit."); System.exit (0);
}
public static void main (String args[]) { Scanner stdin = new Scanner (System.in); System.out.println ("Enter a valid int value"); int value = stdin.nextInt(); if ( value == 1 ) validValue();
// ... }
What’s happening there
Scanner
stdin
value 1
![Page 11: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/11.jpg)
11
Notes on these methods At this point, all methods in the class are static
We will be discussing what static means later in this slide set
Until then, I’ll be ignoring it, and just telling you when things should and should not be static Sorry!
None of those two methods return a value Notice the “void” before the method name
And none take in any parameters Notice the empty parameters after the method name
![Page 12: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/12.jpg)
1313
![Page 13: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/13.jpg)
1414
A previous HW J3A previous HW J3
![Page 14: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/14.jpg)
15
![Page 15: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/15.jpg)
16
Revamping last semester’s HW J3
Start over
Publicdanger
Defensecontractor
Promoted
Cynicalguru
Becomea coder
Done tech support?
Been asysadmin?
Workedwith NT?
Want toplay
w/nukes?
Hatepeople?
Bitteryet?
Successfulmanaging?
Starthere
Start over
A revised HW 3 flowchart
Green paths are “yes” paths, red are “no” paths
We’ll make a slight modification to the diagram:
Note that this part is repeated twice!
![Page 16: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/16.jpg)
17
HW J3 Code The yellow
boxed part is what was repeated from the previous slide
if ( extractor.askUser(Q_TECH_SUPPORT) ){ if ( extractor.askUser(Q_BITTER_YET) )
if ( extractor.askUser(Q_MANAGEMENT) ) System.out.println (A_CYNICAL);else System.out.println (A_PROMOTED);
elseSystem.out.println (A_START_OVER);
} else if ( extractor.askUser(Q_BEEN_SYSADMIN) ){ if ( extractor.askUser(Q_HATE_PEOPLE) ) {
System.out.println (A_CODER); } else if ( extractor.askUser(Q_WINNT) ){
if ( extractor.askUser(Q_NUCLEAR_WEAPONS) ) System.out.println (A_DEFENSE_CONTRACTOR);else System.out.println (A_PUBLIC_DANGER);
} elseSystem.out.println (A_START_OVER);
} else if ( extractor.askUser(Q_WINNT) ){ if ( extractor.askUser(Q_NUCLEAR_WEAPONS) )
System.out.println (A_DEFENSE_CONTRACTOR); else
System.out.println (A_PUBLIC_DANGER);} else System.out.println (A_START_OVER);
![Page 17: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/17.jpg)
18
HW J3 Code with methods The yellow
boxed part is what was repeated from the previous slide
if ( extractor.askUser(Q_TECH_SUPPORT) ){ if ( extractor.askUser(Q_BITTER_YET) )
if ( extractor.askUser(Q_MANAGEMENT) ) System.out.println (A_CYNICAL);else System.out.println (A_PROMOTED);
elseSystem.out.println (A_START_OVER);
} else if ( extractor.askUser(Q_BEEN_SYSADMIN) ){ if ( extractor.askUser(Q_HATE_PEOPLE) ) {
System.out.println (A_CODER); } else
doBottomPartOfFlowchart();} else doBottomPartOfFlowchart();
![Page 18: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/18.jpg)
19
HW J3 Code with methods The doBottomPartOfFlowchart method:
public static void doBottomPartOfFlowchart() { if ( extractor.askUser(Q_WINNT) ){
if ( extractor.askUser(Q_NUCLEAR_WEAPONS) ) System.out.println (A_DEFENSE_CONTRACTOR);else System.out.println (A_PUBLIC_DANGER);
} elseSystem.out.println (A_START_OVER);
}
![Page 19: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/19.jpg)
20
What happened here We took a common set of code
Wrote it once But used it multiple times (twice in this case)
Granted, the code was a small segment (7 lines) But, in other programs, could be very large
This is called Refactoring It is an essential principle of software engineering Has other names: factoring (notice there is no ‘re’ at the
beginning), extracting a method, etc.
![Page 20: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/20.jpg)
21
Pros of Refactoring Benefits of Refactoring
Reduce length of code As you don’t have to repeat that section of code
multiple times Make code easier to read
The main if-else-if statement is shorter, thus easier to understand what’s going on
Changes are easier to make If we want to modify that part of the flowchart, we only
have to do it once Rather than searching for each of the repeated code
segments in a program
![Page 21: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/21.jpg)
22
Cons of Refactoring Drawbacks of Refactoring
Because you are calling another method, it will be slightly slower On the order of a few nanoseconds Modern compilers can sometimes eliminate this
penalty
The general consensus is that the benefits of Refactoring far outweigh the drawback(s)
![Page 22: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/22.jpg)
2323
![Page 23: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/23.jpg)
2424
Return ValuesReturn Values
![Page 24: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/24.jpg)
25
The return keyword The return keyword immediately stops execution of a method
And jumps back to whatever called that method And possibly returns a value (we’ll see this next)
Consider the following method
public static void foo (int x) { if ( x == 1 ) return; System.out.println (“x is not 1”);}
This method will only print the String if x is not 1
![Page 25: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/25.jpg)
26
Return values At some point in those methods, Java must be told to take a value
and “pass” it back
Consider angleSin = Math.sin (90 * PI/180.0); At some point in the Math.sin() method, the sin has been
computed And that value must be “passed back” to be stored in angle
Consider value = card.getBlackjackValue(); At some point in the card.getBlackjackValue() method, the value
has been computed And that value must be “passed back” to be stored in value
This is called “returning” a value from a method
Note that some methods don’t return a value System.out.println(), for example
![Page 26: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/26.jpg)
27
Return values (aka return types)public class Methods2 {
public static int returnsAValue () { return 1;
}
public static double alsoReturnsAValue() { return 1.0;
}
public static void main (String args[]) { int value1 = returnsAValue(); System.out.println (value1);
double value2 = alsoReturnsAValue(); System.out.println (value2);
// The following line requires a cast int value3 = (int) alsoReturnsAValue(); System.out.println (value3);
}
}
![Page 27: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/27.jpg)
2828
Program DemoProgram Demo
Methods2.javaMethods2.java
![Page 28: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/28.jpg)
29
Return types All a return statement does is take the value
Which could be a number Or a value in a variable Or an expression (such as x+1)
And “pass” it back to whatever called the method
![Page 29: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/29.jpg)
30
How well do you feel you How well do you feel you understand return values?understand return values?
a)a) Very well! This stuff is so easy.Very well! This stuff is so easy.
b)b) With a little review, I’ll be good.With a little review, I’ll be good.
c)c) Not very well at all.Not very well at all.
d)d) I’m so lost. What’s a return type I’m so lost. What’s a return type again?again?
e)e) I’d rather not answer this question, I’d rather not answer this question, thanks.thanks.
![Page 30: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/30.jpg)
31
Parameters Sometimes you need to pass in parameters to tell a method
how to perform Consider Math.sin() – it needs to know the angle
The parameters are listed between the parenthesis after the method name
public static void main (String args[])
The methods we will study next compute (and return) x2, x3, and x4
![Page 31: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/31.jpg)
32
The methods
public static int square (int x) {int theSquare = x * x;return theSquare;
}
public static int cube (int x) {return x * x * x;
}
public static int fourthPower (int x) {return square(x) * square(x);
}
![Page 32: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/32.jpg)
33
A method with multiple parameters
public static int squareOrCube (int which, int value) {if ( which == 1 ) return value * value;else if ( which == 2 ) { int cube = value * value * value; return cube;} else return 0;
}
![Page 33: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/33.jpg)
34
The main() methodimport java.util.*;
public class Methods3 {
// the previous methods go here
public static void main (String args[]) { Scanner stdin = new Scanner (System.in); System.out.println ("Enter an int value"); int value = stdin.nextInt(); int theSquare = square(value); System.out.println ("Square is " + theSquare); System.out.println ("Cube is " + cube (value)); System.out.println ("Square is " + squareOrCube (1, value)); System.out.println ("Cube is " + squareOrCube (2,value)); System.out.println ("Fourth power is " + fourthPower (value));
}
}
![Page 34: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/34.jpg)
3535
Program DemoProgram Demo
Methods3.javaMethods3.java
![Page 35: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/35.jpg)
3636
![Page 36: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/36.jpg)
37
Returning objects We can also return objects from methods
What gets returned is the reference to the object
public class Methods4 {
public static String getCourse () {String name = "CS 101";return name;
}
public static void main (String args[]) {String courseName = getCourse();System.out.println (courseName);
}
}
String
“CS 101”
courseName
name
![Page 37: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/37.jpg)
3939
Program DemoProgram Demo
Methods4.javaMethods4.java
![Page 38: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/38.jpg)
40
Modifying parameters Consider the following code
public class Methods5 {
public static void changeValue (int x) { x = 7;
}
public static void main (String args[]) { int y = 5; changeValue(y); System.out.println (y);
}
}
What gets printed?
![Page 39: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/39.jpg)
4141
Program DemoProgram Demo
Methods5.javaMethods5.java
![Page 40: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/40.jpg)
42
Pass by value Java is a pass-by-value language
This means that a COPY of the parameter’s value is passed into the method If a method changes that value, only the COPY is changed Once the method returns, the copy is forgotten And thus the change is not visible outside the method
There are other manners of returning values that are used in other languages Pass by reference Pass by name (nobody uses this anymore)
We will see about trying to change object parameters later in this slide set
![Page 41: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/41.jpg)
43
How well do you feel you How well do you feel you understand parameters?understand parameters?
20% 20% 20%20%20%1.1. Very well! This Very well! This stuff is easy!stuff is easy!
2.2. Fairly well – with Fairly well – with a little review, I’ll a little review, I’ll be goodbe good
3.3. Okay. It’s not Okay. It’s not great, but it’s not great, but it’s not horrible, eitherhorrible, either
4.4. Not well. I’m Not well. I’m kinda confusedkinda confused
5.5. Not at all. I’m Not at all. I’m soooooo lostsoooooo lost
![Page 42: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/42.jpg)
44
Variable scoping A variable is visible within the block it is declared
Called the “scope” of the variable
public class Scoping {static int z
public static void foo (int x) {// ...
}
public static void bar () {// ...
}
public static void main (String[] args) {int y;// ...
}}
This local variable is visible until the end of the main() method
This variable is visible anywhere in the Scoping class
This parameter is visible only in the foo() method
![Page 43: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/43.jpg)
45
How well do you feel you How well do you feel you understand variable understand variable
scoping?scoping?20% 20% 20%20%20%1.1. Very well! This Very well! This
stuff is easy!stuff is easy!2.2. Fairly well – with Fairly well – with
a little review, I’ll a little review, I’ll be goodbe good
3.3. Okay. It’s not Okay. It’s not great, but it’s not great, but it’s not horrible, eitherhorrible, either
4.4. Not well. I’m Not well. I’m kinda confusedkinda confused
5.5. Not at all. I’m Not at all. I’m soooooo lostsoooooo lost
![Page 44: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/44.jpg)
46
Method notes summary You can put the methods in a class in any order
Java doesn’t care which one is listed first Thus, you can call a method listed later in the method
This is different than C/C++
All methods must specify a return type If it’s void, then no value is returned
Parameters can’t be changed within a method Although the objects that the parameters point to can be
![Page 45: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/45.jpg)
4747
Agricultural Agricultural historyhistory
PhysicsPhysics MedicineMedicine LiteratureLiterature PeacePeace EconomicsEconomics
ChemistryChemistry BiologyBiology NutritionNutrition
Fluid dynamicsFluid dynamics
The 2005 Ig Nobel PrizesThe 2005 Ig Nobel Prizes““The Significance of Mr. Richard Buckley’s Exploding The Significance of Mr. Richard Buckley’s Exploding
Trousers”Trousers”
The pitch drop experiment, started in 1927The pitch drop experiment, started in 1927
Neuticles – artificial replacement testicles for dogsNeuticles – artificial replacement testicles for dogs
The 409 scams of Nigeria for a “cast of rich characters”The 409 scams of Nigeria for a “cast of rich characters”
Locust brain scans while they were watching Star WarsLocust brain scans while they were watching Star Wars
For an alarm clock that runs away, thus making people For an alarm clock that runs away, thus making people more productivemore productive
““Will Humans Swim Faster or Slower in Syrup?”Will Humans Swim Faster or Slower in Syrup?”
For cataloging the odors of 131 different stressed frogsFor cataloging the odors of 131 different stressed frogs
To Dr. Yoshiro Nakamats who catalogued and analyzed To Dr. Yoshiro Nakamats who catalogued and analyzed every meal he ate for the last 34 years (and every meal he ate for the last 34 years (and counting)counting)
““Pressures Produced When Penguins Pooh – Pressures Produced When Penguins Pooh – Calculations on Avian Defaecation”Calculations on Avian Defaecation”
![Page 46: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/46.jpg)
4848
More on parameter passingMore on parameter passing
![Page 47: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/47.jpg)
49
Modifying parameters Consider the following code
public class Methods5 {
public static void changeValue (int x) { x = 7;
}
public static void main (String args[]) { int y = 5; changeValue(y); System.out.println (y);
}
}
What gets printed? 5 is printed
5y
5x 7x
![Page 48: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/48.jpg)
5050
Program DemoProgram Demo
Methods5.javaMethods5.java
![Page 49: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/49.jpg)
51
Pass by value Java is a pass-by-value language
This means that a COPY of the parameter’s value is passed into the method If a method changes that value, only the COPY is changed Once the method returns, the copy is forgotten And thus the change is not visible outside the method
There are other manners of returning values that are used in other languages Pass by reference Pass by name (nobody uses this anymore)
We will see about trying to change object parameters later in this slide set
![Page 50: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/50.jpg)
52
Modifying parameters Consider the following code
import java.awt.*;
public class Methods6 {
public static void changeValue (Rectangle r) {
r.setSize (10,20); }
public static void main (String args[]) {Rectangle rect = new Rectangle(1, 2);changeValue(rect);System.out.println (rect.getWidth());
}
}
What gets printed? 10 is printed
+ Rectangle ()+ Rectangle (int width, int height)+ setSize (int width, int height)+ getWidth ()
Rectangle
- width = 1 - height = 2
rect
+ Rectangle ()+ Rectangle (int width, int height)+ setSize (int width, int height)+ getWidth ()
Rectangle
- width = 10 - height = 20r
![Page 51: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/51.jpg)
5353
Program DemoProgram Demo
Methods6.javaMethods6.java
![Page 52: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/52.jpg)
5454
Fan-supplied demotivators!Fan-supplied demotivators!
![Page 53: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/53.jpg)
55
Pass by value Java is still a pass-by-value language
This means that a COPY of the parameter’s value is passed into the method But the parameter is a REFERENCE to an object The object itself is not passed So any changes to the reference are forgotten about But you can modify the object it refers to
![Page 54: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/54.jpg)
56
Modifying parameters Consider the following code
import java.awt.*;
public class Methods7 {
public static void changeValue (Rectangle r) {
r = new Rectangle (10,20); }
public static void main (String args[]) {Rectangle rect = new Rectangle(1, 2);changeValue(rect);System.out.println (rect.getWidth());
}
}
What gets printed? 1 is printed
+ Rectangle ()+ Rectangle (int width, int height)+ setSize (int width, int height)+ getWidth()
Rectangle
- width = 1 - height = 2
rect
+ Rectangle ()+ Rectangle (int width, int height)+ setSize (int width, int height)+ getWidth()
Rectangle
- width = 10 - height = 20
r
The only change!
![Page 55: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/55.jpg)
5757
Program DemoProgram Demo
Methods7.javaMethods7.java
![Page 56: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/56.jpg)
58
Pass by value Java is still a pass-by-value language
This means that a COPY of the parameter’s value is passed into the method But the parameter is a REFERENCE to an object The object itself is not passed So any changes to the reference are forgotten about But you can modify the object it refers to
![Page 57: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/57.jpg)
59
How well do you feel you How well do you feel you understand parameter understand parameter
passing?passing?20% 20% 20%20%20%1.1. Very well! This Very well! This
stuff is easy!stuff is easy!2.2. Fairly well – with Fairly well – with
a little review, I’ll a little review, I’ll be goodbe good
3.3. Okay. It’s not Okay. It’s not great, but it’s not great, but it’s not horrible, eitherhorrible, either
4.4. Not well. I’m Not well. I’m kinda confusedkinda confused
5.5. Not at all. I’m Not at all. I’m soooooo lostsoooooo lost
![Page 58: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/58.jpg)
60
A frisbee demo of parameter passing…
![Page 59: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/59.jpg)
61
How well do you feel you How well do you feel you understand parameter understand parameter
passing?passing?20% 20% 20%20%20%1.1. Very well! This Very well! This
stuff is easy!stuff is easy!2.2. Fairly well – with Fairly well – with
a little review, I’ll a little review, I’ll be goodbe good
3.3. Okay. It’s not Okay. It’s not great, but it’s not great, but it’s not horrible, eitherhorrible, either
4.4. Not well. I’m Not well. I’m kinda confusedkinda confused
5.5. Not at all. I’m Not at all. I’m soooooo lostsoooooo lost
![Page 60: 1 Methods Chapter 5 Spring 2007 CS 101 Aaron Bloomfield](https://reader035.vdocuments.site/reader035/viewer/2022070414/5697c00f1a28abf838cca5b6/html5/thumbnails/60.jpg)
6262
Today’s demotivatorsToday’s demotivators