Jump to content

Recommended Posts

Posted

It is hard for me to talk about the structure of methods without talking about classes. A method is like a function that is used to act on data in a class. With that in mind, I will use static methods to explain passing parameters and return values.

 

Static Methods

 

A static method is a method in a class that you can call without creating an instance of the class. The Math class contains a lot of static methods.

 

Example:

Math.round(5.35);

A static method is called by using the class name followed by the method name.

 

If I statically import the Math class then I can use the round method like this:

round(5.35);

However, I don't like to do this. It makes more sense to me when I know what class contains the method.

 

To write a static method you include the static keyword in the method prototype.

 

Example:

public static void out(int val) {
System.out.println(val);
}

 

The method is declared to be public and static. It doesn't have a return value. To call this method I would just use the name of the class followed by the method name.

 

Assume that the above method is defined in the class Test. I would then call the method like this:

Test.out(6);

The output would be:

7

One more thing to note about static methods is that main will always be a static method.

 

 

Passing Parameters by Copy

 

When you pass a primitive variable to a method, it will always be passed as a copy. Thus any changes in the methods are not made outside of the method.

 

Example:

public static void out(int v) {
v++;
System.out.println(v);
}

public static void main(String[] args) {
int nVal = 6;
out(nVal);
System.out.println(nVal);
}

The output is:

7
6

Why? When we call the out method the method receives a copy of nVal, and incrementing the variable in the method increments a copy of the variable. The changes are not made to the original variable.

 

Passing by reference

 

If you want to update a value in a method, you can't pass by copy. However, in Java you are not allowed to pass variables by reference. However, Objects are passed by reference. If you want to update a primitive in the method then you can pass the primitive wrapper instead.

 

Java provides wrapper objects for every primitive data type. Ex: the int wrapper is called Integer.

 

Try this:

public static void main(String[] args) {
Integer v = new Integer(5);
out(v);
v++;
System.out.println(v);
}

public static void out(Integer v) {
v++;
System.out.println(v);
}

The output of main will be:

6
7

Why? Since the object is passed by reference, when it is updated in the method is outpated in main as well. Arrays are also passed by reference. If you don't want the original array or object to be updated then you need to make a copy either in main before passing or in the method before you do any modification.

 

Local variables

 

When you create a variable in a method, it is local to that function. This means that once the function returns a value any variable created in the method no longer exists.

 

Try this:

public static void out(int v) {
int x = 2;
v+=x;
System.out.println(v);
}

public static void main(String[] args) {
out(6); // outputs 8
System.out.println(x); // ERROR
}

The output line will throw an error because the x variable doesn't exist in main or as a static variable that is public.

 

Returning arrays

 

Before you name the function, you indicate the return type of the function. You can return an array by writing the function like this:

public static boolean[] sieve(int n) {
boolean[] arbPrimes = new boolean[n+1];

for (int i=2;i<n;i++) {
	if (!arbPrimes[i]) {
		for (int x=2;x*i<n;x++) {
			arbPrimes[i*x] = true;
		}
	}
}
return arbPrimes;
}

This function will return a reference to a boolean array. So in main you can populate a boolean array like this:

boolean[] primes = sieve(500);

Returning values

 

You can return any data type you want. Similar to the function above, just replace boolean[] with whatever data type you want. The function must return a value. However, it can have multiple return points.

public static int ret(int n) {
if (n == 5) {
	return n*2;
}
}

This code will not compile because it doesn't return a value. You might say yes it does. No, it doesn't. It only returns a value if n is 5. The function must always return a value.

Credits chili5 + me

  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • L2 DEVS - HTML DESIGN (ALL NPC'S)    
    • I only share for free what they are reselling 🙂 You keep crying in all the publications, and if you are looking for h5 or gd wait for 5 or 6 years... cheers.... GENERAL Cached Extended to 8192kb IOBuffer Hair2SlotCache ItemBidAuctioner Clan Hall Current Olympiad Season Rank pages System (Shows Points/Games - Fully Configurable) Automatic Flag Around Raidboss System Offline Shop & Buffers Restore After Restart (Fixed location) Offline Buffer System PvP Auto Announce System Rebuilt with Extra Addons (Fully Configurable, Name, Zones, Rewards) Automatic Announce System Rebuilt with Extra Addons (Fully Configurable) ALT+B Augmentation House Shift+Click Droplist/Spoil List Epic Items Rank RB points Rank ChangeColorName ChangeColorTitle Change Skin (Race) Change Gender Custom Subclass (Acumulative) Achievements Item Delivery System  Augmentations/Enchants Automatic Announce System Auto Learn Skills PvP Reward Pk Reward War Reward Scheme buffer GlobalChatTrade Trade Augment Items Castle Announce Time Castle Standby Time Fix Spiritshots delay SpellbooksDrop Enable/Disable Drop custom Fully configurable, lvl min max allmobs, allrb, individual New cancel effect min,max BlessedarmorEnchantRate BlessedmagicWeaponEnchantRate BlessednormalWeaponEnchantRate MaxSlosChars MaxSlotsDwarfs Enable or disable all commands Fix fast loading npc OlympiadRestoreStatsOnFightStart OlympiadSystemSecondTimeEnabled OlympiadEnterLast10Minute OlympiadThirdClassSummons MinLevelTrade AnnounceSubClassMsg1 AnnounceSubClassMsg2 AnnounceSubClassMsg3 LimitedSubClassRace NoSellItems Change ID SealStones for AA NoPrivateBuyItems NoDropPlayerOnDie DisableSkillEnchantData Show Level Mobs Show npc clan flag DespawnSummonEnBattle SummonPetEnBattle RideSummonPetEnBattle DitanceToTargetMove EnterWorld_Undying EnterWorld_UnHide BlockWhispMessagePlayerToGM UseItemsWithHide CriticalSkillDamageBonusPer=4.0 Disable SSQSystem OnCastle Siege End Use any dyes Buy halls directly in auctioneer without waiting for the auction, configuration to change the item you consume MensajeEnterWorldServer Command .hero enable/disable hero aura Config vip global chat character, chat by systemsg Soulshots: NoSendSystemMessageUse Panel //admin Global vote reward Agathions system Anti Interface, control all patch files by md5 Command .menu configurable, last restart, name, maxusers, privatestores Spawn protection activate deactivate consume items to activate  Activate or deactivate autoloot for vip characters EVENTS Happy Hour Event reworked Configurable by announcements or systemsg Team VS Team Capture The Flag Death Match Last Man Standing Destroy The Base Korean Style Castle Siege Check if the player is inside the tvt event due to disconnection/critical error Top 1/5 killer reward/announce TimeAfk ResetReuseSkills ResetBuffsOnFinish Firework effect Reward win/lost Add Team Location Title custom Red/blue Open Door/Wall System BalanceBishops Show kills in title Invest positions Show Death To Top Delete Non-Subclass Skills     RELOADS Reload Enterworld Html Option Reload Faction System Reload Donate Shop Reload OfflineBuffer Reload Champion NPC Reload CliExt Reload AntiBot Reload Vip System Reload Auction Reload AutoLoot Reload CastleSiegeManager Reload CharacterLock Reload ClanPvPStatus Reload AutoLearn Reload ClanReputationRank Reload ClanSystem Reload CreatureAction Reload Customs.ini Reload L2server.ini Reload SkillData.txt Reload doordata.txt Reload decodata.txt Reload Multisell Reload DropList   Extender tested for more than 3 years. Assured stability. Possibility of adding MOD's upon request. (Not included, consult).
    • some peoples trash is another mans treasure, is that your treasure?   people might like the content but you are still the rat in the room     thats the community judging you.  
    • Keep reselling what I publish here for free!!! 🙂 GG  
  • Topics

×
×
  • Create New...