Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects (Retired) Creating the MVP Strings and Chars

Chaz Hall
Chaz Hall
1,970 Points

Arguments in Java?

Arguments are variables that are utilized by that object in a class only. The method uses the argument to declare things

public void addTile(char tile); mHand+=tile;

public boolean hasTile(char tile); boolean hasTile=mHand.indexOf(tile)!=1; return false;

The char tile (char tile) is the same name in two different methods. Is this the same variable throughout the class or is it unique to the method? I know that the name of each (addTile and hasTile) are different and it necessarily wouldn't matter, I wouldn't think. The only reason I would think it was the same is because of char tile.

I'm trying to understand the logic and this has just slightly tripped me up. Thanks!

ScrabblePlayer.java
public class ScrabblePlayer {
    private String mHand;

    public ScrabblePlayer() {
        mHand = "";
    }

    public String getHand() {
       return mHand;
    }

    public void addTile(char tile) {
     mHand += tile;

    }

    public boolean hasTile(char tile) {
     boolean hasTile = mHand.indexOf(tile) != -1;
       return false;
    }
}

2 Answers

When you create a method and specify an input argument, you can name that argument whatever you want (although the name should comply with the naming conventions).

So, in

 public void addTile(char tile) { }

it could be (char aTile) or (char myTile) or (char inputTile) just as easily as (char tile).

What you name it has nothing to do with the name of an input (or formal) parameter of any other function.

What Java does, when it runs the function, is it creates a local variable, e.g., named tile, whose scope is the function's code block. After the function runs, that local variable goes out of scope.

iftekhar uddin
iftekhar uddin
4,194 Points

Jcorum pretty much summed it up but in simple terms. The variable you're talking about (the one created in the parameter) is destroyed after the method is finished and it can only be used within that method unless you specifically pass it into another function.

Ex: lets say that hasTitle had parameter (char mTile) instead of (char tile). You cannot use the variable tile in the hasTile function because it's not in the same scope.

To Understand Scope info 1 info 2