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

    • Selling Telegram bots with 2024 year old. Strong. Bots clean, without subscribers, without blocking Price list: From 3 bots - 3.5$ for 1sht. From 20 bots - 3$ for 1pc. From 60 bots - 2.8$ for 1pc. From 100 bots - 2.5$ for 1pc. From 400 bots - 2$ for 1pc. Full transfer of owner rights / transfer account. Sell empty channels 2022. Without shadow bans. Not used. Without posts. Write in Telegram - @SMMTG6
    • Hello everyone   We are engaged in search engine optimization bots in Telegram.   - We make ranking bots to order Telegram search bots up to 100,000 premium subscribers.   We work with countries such as: USA, China, Israel, Russia, Uzbekistan, India, Saudi Arabia, Iran, Italy, Turkey and other countries. Clarify with us. Possible output in multi-geo (several countries).   Prices from 10$ from 20$ per 1000 Premium subscribers, depending on the country.   Term of manufacture of bot - 4 days   We are one of the most famous sellers in Telegram. We agree on the guarantor at your expense.   ☆ Our Telegram-channel - https://t.me/+e_DKWnC5AFw0ZDhi   ☆ For questions about buying a bot contact @SMMTG6   ☆ Our panel with the best Premium subscribers - smmtg.pro
    • Opening April 26 at 19:00 (UTC +3)  https://lineage2dex.com/en/sign-in Open Beta Test from April 22 This is pre-announcing of NEW season server, so we want to share some key points of it. Full details with road map, patch notes we will announce a bit latter Main features Modern Classic client (less lags, smoother gameplay, a lot of useful interface features). Anti-bot protection - we use our own system in combine with popular solutions like AAC, so in the end our project have one of the best anti-bot shield exists. Buff book to buff yourself or your summon/pet. With regular buff book you can create only 1 buff profile, if you need more - get the modern buff book and create up to 10 profiles! Daily rewards - login to the game every day and get rewards. Expanded subclass slots - you can have 5 subclasses from the beginning and expand up to 10. Class/Gender change - you can change your main class and gender if you want. Masterwork items (can be obtained by crafting or farming RBs, have better bonuses than regular items). Item Broker Auctions in towns can sell some epic jewelry and other useful goods for adena (3 times per week). Giran Harbor Fair - daily event which allows you to get temporary epic jewelry a lot of other rare items for adena. Talents - special tree with passive skills which will help you to tune your class better. Team vs Team event. Episodes - we open new content step by step to keep you engaged, bring more fun and extend the game. Episodes reveal following features: Hellbound Island Isle of Preyer, with new content, new Dynasty gear PvP item improvement allows you to improve your items with additional bonuses. Charms can be equipped in one of the special slots that open when wearing a bracelet. Each type of charm grants the wearer certain bonuses Instance Zones New Epic Bosses - Freya, Beleth, Tiat, Trasken Cyclic macros (macros restarts when finishes) Why choose Dex? We have destroyed the stereotypes that PvP servers live for a couple of weeks. Our Union x50 server proves it (working from April 2020 with good online). We have enough high-end content that will allow you to maintain interest in the game all the time! And we are always working on improving the game and adding new interesting activities and content. Seasonal servers have a road map with planned list of changes to keep you engaged. When the time comes the server will be merged with the Union server. So if you're new on Dex, you can start from zero like all othe players on NEW (seasonal) server. All your items and characters will be safe, and you can continue play when season over on our main server - UNION. High-end content (unlocked over episodes) Hellbound Island Spoiler Hellbound is an endgame location mostly for parties, but if you will be well geared you can farm most spots solo. You can get to Hellbound with help of gatekeepers. Hellbound contains multiple raid bosses and entrance to new epic boss Beleth. Drop from raid bosses and from entire island in general is very valuable. Monsters at Hellbound can drop special Hellbound Coins which can be exchanged to some useful goods at the Hellbound Trader Joseph. Isle of Prayer Spoiler Isle of Prayer is a high-end location, divided into several areas, each tailored for different classes and playstyles. By completing quests and farming mobs on IoP, you can obtain Dynasty equipment. You can read more about specific features and spots from our wiki: The most popular Lineage 2 classic server waiting for you. Download L2 client and play! You expect grandiose battles and incredible siege. The adrenaline just rolls! The most popular Lineage 2 classic server waiting for you. Download L2 client and play! You expect grandiose battles and incredible siege. The adrenaline just rolls!  lineage2dex.com We will be glad to hear any comments and suggestions on our discord channel, join it we have very friendly community there  - Join discord  
    • rly cool l2off pack...but rly expesive....
  • Topics

×
×
  • Create New...