www.pluralsight.com Open in urlscan Pro
2606:4700::6811:2455  Public Scan

Submitted URL: https://connect.pluralsight.com/dc/l6WRhHKnwa3LcpUsJiJZ-KNupKrVAFT9E5p1RhihJqUqAQKNwkZCGHNAWM61_nivy5tVhsjnPPwZ7aRo7XapaSC5CeHXY...
Effective URL: https://www.pluralsight.com/resources/blog/software-development/what-happens-call-java-method?utm_source=marketo&utm_medium=...
Submission: On December 20 via api from US — Scanned from US

Form analysis 4 forms found in the DOM

<form class="header-search-form">
  <input class="header-search-input" type="text" name="q" placeholder="What do you want to learn?" autocomplete="off">
</form>

<form class="header-search-form -flex-and-center">
  <input class="header-search-input flex-1" type="text" name="q" placeholder="Search" autocomplete="off">
  <button type="submit">
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" role="button">
      <title>A search magnifying glass</title>
      <mask id="mask0_3541_6692" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="2" y="2" width="20" height="20">
        <path fill-rule="evenodd" clip-rule="evenodd"
          d="M21.3534 19.9404L21.3535 19.9404L16.314 14.9C17.403 13.504 18 11.799 18 10C18 7.863 17.167 5.856 15.656 4.344C14.145 2.832 12.137 2 10 2C7.863 2 5.854 2.832 4.344 4.344C2.832 5.856 2 7.863 2 10C2 12.137 2.832 14.146 4.344 15.656C5.854 17.168 7.863 18 10 18C11.799 18 13.504 17.404 14.9 16.315L19.9394 21.3544C20.1347 21.5497 20.4513 21.5497 20.6466 21.3544L21.3534 20.6476L21.3534 20.6475C21.5487 20.4523 21.5487 20.1357 21.3534 19.9404ZM14.242 14.243C13.109 15.376 11.602 16 10 16C8.397 16 6.891 15.376 5.758 14.243C4.624 13.11 4 11.603 4 10C4 8.398 4.624 6.891 5.758 5.758C6.891 4.624 8.397 4 10 4C11.602 4 13.109 4.624 14.242 5.758C15.376 6.891 16 8.398 16 10C16 11.603 15.376 13.11 14.242 14.243Z"
          fill="white"></path>
      </mask>
      <g mask="url(#mask0_3541_6692)">
        <rect width="24" height="24" fill="#A5AACF"></rect>
      </g>
    </svg>
  </button>
</form>

<form id="customMarketo_1298" data-mkto-id="1298">
  <div class="marketo-form-field">
    <label for="FirstName" class="mrkto_text_lbl">First Name<span class="requiredAsterix">*</span></label>
    <input type="text" id="1298_FirstName" class="mrkto_text" name="FirstName" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="LastName" class="mrkto_text_lbl">Last Name<span class="requiredAsterix">*</span></label>
    <input type="text" id="1298_LastName" class="mrkto_text" name="LastName" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="Email" class="mrkto_text_lbl">Email Address<span class="requiredAsterix">*</span></label>
    <input type="email" id="1298_Email" class="mrkto_email" name="Email" required="" oninvalid="setCustomValidity('Must be valid email. example@yourdomain.com)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="Company" class="mrkto_text_lbl">Company<span class="requiredAsterix">*</span></label>
    <input type="text" id="1298_Company" class="mrkto_text" name="Company" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="Title" class="mrkto_text_lbl">Job Title<span class="requiredAsterix">*</span></label>
    <input type="text" id="1298_Title" class="mrkto_text" name="Title" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="Phone" class="mrkto_text_lbl">Phone<span class="requiredAsterix">*</span></label>
    <input type="text" id="1298_Phone" class="mrkto_text" name="Phone" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <label for="Country" class="mrkto_select_lbl">Country<span class="requiredAsterix">*</span></label>
    <select id="1298_Country" class="mrkto_select" name="Country" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')">
      <option value="">Select...</option>
      <option value="United States">United States</option>
      <option value="Afghanistan">Afghanistan</option>
      <option value="Aland Islands">Aland Islands</option>
      <option value="Albania">Albania</option>
      <option value="Algeria">Algeria</option>
      <option value="American Samoa">American Samoa</option>
      <option value="Andorra">Andorra</option>
      <option value="Angola">Angola</option>
      <option value="Anguilla">Anguilla</option>
      <option value="Antarctica">Antarctica</option>
      <option value="Antigua and Barbuda">Antigua and Barbuda</option>
      <option value="Argentina">Argentina</option>
      <option value="Armenia">Armenia</option>
      <option value="Aruba">Aruba</option>
      <option value="Australia">Australia</option>
      <option value="Austria">Austria</option>
      <option value="Azerbaijan">Azerbaijan</option>
      <option value="Bahamas">Bahamas</option>
      <option value="Bahrain">Bahrain</option>
      <option value="Bangladesh">Bangladesh</option>
      <option value="Barbados">Barbados</option>
      <option value="Belgium">Belgium</option>
      <option value="Belize">Belize</option>
      <option value="Benin">Benin</option>
      <option value="Bermuda">Bermuda</option>
      <option value="Bhutan">Bhutan</option>
      <option value="Bolivia">Bolivia</option>
      <option value="Bonaire, Saint Eustatius and Saba">Bonaire, Saint Eustatius and Saba</option>
      <option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
      <option value="Botswana">Botswana</option>
      <option value="Bouvet Island">Bouvet Island</option>
      <option value="Brazil">Brazil</option>
      <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>
      <option value="Brunei Darussalam">Brunei Darussalam</option>
      <option value="Bulgaria">Bulgaria</option>
      <option value="Burkina Faso">Burkina Faso</option>
      <option value="Burundi">Burundi</option>
      <option value="Cambodia">Cambodia</option>
      <option value="Cameroon">Cameroon</option>
      <option value="Canada">Canada</option>
      <option value="Cape Verde">Cape Verde</option>
      <option value="Cayman Islands">Cayman Islands</option>
      <option value="Central African Republic">Central African Republic</option>
      <option value="Chad">Chad</option>
      <option value="Chile">Chile</option>
      <option value="China">China</option>
      <option value="Christmas Island">Christmas Island</option>
      <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>
      <option value="Colombia">Colombia</option>
      <option value="Comoros">Comoros</option>
      <option value="Congo">Congo</option>
      <option value="Congo the Democratic Republic of the">Democratic Republic of the Congo</option>
      <option value="Cook Islands">Cook Islands</option>
      <option value="Costa Rica">Costa Rica</option>
      <option value="Cote d'Ivoire">Cote d'Ivoire</option>
      <option value="Croatia">Croatia</option>
      <option value="Curacao">Curacao</option>
      <option value="Cyprus">Cyprus</option>
      <option value="Czech Republic">Czech Republic</option>
      <option value="Denmark">Denmark</option>
      <option value="Djibouti">Djibouti</option>
      <option value="Dominica">Dominica</option>
      <option value="Dominican Republic">Dominican Republic</option>
      <option value="Ecuador">Ecuador</option>
      <option value="Egypt">Egypt</option>
      <option value="El Salvador">El Salvador</option>
      <option value="Equatorial Guinea">Equatorial Guinea</option>
      <option value="Eritrea">Eritrea</option>
      <option value="Estonia">Estonia</option>
      <option value="Ethiopia">Ethiopia</option>
      <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
      <option value="Faroe Islands">Faroe Islands</option>
      <option value="Fiji">Fiji</option>
      <option value="Finland">Finland</option>
      <option value="France">France</option>
      <option value="French Guiana">French Guiana</option>
      <option value="French Polynesia">French Polynesia</option>
      <option value="French Southern Territories">French Southern Territories</option>
      <option value="Gabon">Gabon</option>
      <option value="Gambia">Gambia</option>
      <option value="Georgia">Georgia</option>
      <option value="Germany">Germany</option>
      <option value="Ghana">Ghana</option>
      <option value="Gibraltar">Gibraltar</option>
      <option value="Greece">Greece</option>
      <option value="Greenland">Greenland</option>
      <option value="Grenada">Grenada</option>
      <option value="Guadeloupe">Guadeloupe</option>
      <option value="Guam">Guam</option>
      <option value="Guatemala">Guatemala</option>
      <option value="Guernsey">Guernsey</option>
      <option value="Guinea">Guinea</option>
      <option value="Guinea-Bissau">Guinea-Bissau</option>
      <option value="Guyana">Guyana</option>
      <option value="Haiti">Haiti</option>
      <option value="Heard Island and McDonald Islands">Heard Island and McDonald Islands</option>
      <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
      <option value="Honduras">Honduras</option>
      <option value="Hong Kong">Hong Kong</option>
      <option value="Hungary">Hungary</option>
      <option value="Iceland">Iceland</option>
      <option value="India">India</option>
      <option value="Indonesia">Indonesia</option>
      <option value="Iraq">Iraq</option>
      <option value="Ireland">Ireland</option>
      <option value="Isle of Man">Isle of Man</option>
      <option value="Israel">Israel</option>
      <option value="Italy">Italy</option>
      <option value="Jamaica">Jamaica</option>
      <option value="Japan">Japan</option>
      <option value="Jersey">Jersey</option>
      <option value="Jordan">Jordan</option>
      <option value="Kazakhstan">Kazakhstan</option>
      <option value="Kenya">Kenya</option>
      <option value="Kiribati">Kiribati</option>
      <option value="Korea, Republic of">Korea</option>
      <option value="Kosovo">Kosovo</option>
      <option value="Kuwait">Kuwait</option>
      <option value="Kyrgyzstan">Kyrgyzstan</option>
      <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
      <option value="Latvia">Latvia</option>
      <option value="Lebanon">Lebanon</option>
      <option value="Lesotho">Lesotho</option>
      <option value="Liberia">Liberia</option>
      <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
      <option value="Liechtenstein">Liechtenstein</option>
      <option value="Lithuania">Lithuania</option>
      <option value="Luxembourg">Luxembourg</option>
      <option value="Macao">Macao</option>
      <option value="Macedonia, the Former Yugoslav Republic of">Republic of Macedonia</option>
      <option value="Madagascar">Madagascar</option>
      <option value="Malawi">Malawi</option>
      <option value="Malaysia">Malaysia</option>
      <option value="Maldives">Maldives</option>
      <option value="Mali">Mali</option>
      <option value="Malta">Malta</option>
      <option value="Marshall Islands">Marshall Islands</option>
      <option value="Martinique">Martinique</option>
      <option value="Mauritania">Mauritania</option>
      <option value="Mauritius">Mauritius</option>
      <option value="Mayotte">Mayotte</option>
      <option value="Mexico">Mexico</option>
      <option value="Micronesia, Federated States of">Federated States of Micronesia</option>
      <option value="Moldova, Republic of">Republic of Moldova</option>
      <option value="Monaco">Monaco</option>
      <option value="Mongolia">Mongolia</option>
      <option value="Montenegro">Montenegro</option>
      <option value="Montserrat">Montserrat</option>
      <option value="Morocco">Morocco</option>
      <option value="Mozambique">Mozambique</option>
      <option value="Myanmar">Myanmar</option>
      <option value="Namibia">Namibia</option>
      <option value="Nauru">Nauru</option>
      <option value="Nepal">Nepal</option>
      <option value="Netherlands">Netherlands</option>
      <option value="Netherlands Antilles">Netherlands Antilles</option>
      <option value="New Caledonia">New Caledonia</option>
      <option value="New Zealand">New Zealand</option>
      <option value="Nicaragua">Nicaragua</option>
      <option value="Niger">Niger</option>
      <option value="Nigeria">Nigeria</option>
      <option value="Niue">Niue</option>
      <option value="Norfolk Island">Norfolk Island</option>
      <option value="Northern Mariana Islands">Northern Mariana Islands</option>
      <option value="Norway">Norway</option>
      <option value="Oman">Oman</option>
      <option value="Pakistan">Pakistan</option>
      <option value="Palau">Palau</option>
      <option value="Palestinian Territory, Occupied">Palestinian Territory</option>
      <option value="Panama">Panama</option>
      <option value="Papua New Guinea">Papua New Guinea</option>
      <option value="Paraguay">Paraguay</option>
      <option value="Peru">Peru</option>
      <option value="Philippines">Philippines</option>
      <option value="Pitcairn">Pitcairn</option>
      <option value="Poland">Poland</option>
      <option value="Portugal">Portugal</option>
      <option value="Puerto Rico">Puerto Rico</option>
      <option value="Qatar">Qatar</option>
      <option value="Reunion">Reunion</option>
      <option value="Romania">Romania</option>
      <option value="Rwanda">Rwanda</option>
      <option value="Saint Barthelemy">Saint Barthelemy</option>
      <option value="Saint Helena">Saint Helena</option>
      <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
      <option value="Saint Lucia">Saint Lucia</option>
      <option value="Saint Martin (French part)">Saint Martin</option>
      <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
      <option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
      <option value="Samoa">Samoa</option>
      <option value="San Marino">San Marino</option>
      <option value="Sao Tome and Principe">Sao Tome and Principe</option>
      <option value="Saudi Arabia">Saudi Arabia</option>
      <option value="Senegal">Senegal</option>
      <option value="Serbia">Serbia</option>
      <option value="Seychelles">Seychelles</option>
      <option value="Sierra Leone">Sierra Leone</option>
      <option value="Singapore">Singapore</option>
      <option value="Sint Maarten">Sint Maarten</option>
      <option value="Slovakia">Slovakia</option>
      <option value="Slovenia">Slovenia</option>
      <option value="Solomon Islands">Solomon Islands</option>
      <option value="Somalia">Somalia</option>
      <option value="South Africa">South Africa</option>
      <option value="South Georgia and the South Sandwich Islands">South Georgia and the South Sandwich Islands</option>
      <option value="South Sudan">South Sudan</option>
      <option value="Spain">Spain</option>
      <option value="Sri Lanka">Sri Lanka</option>
      <option value="Sudan">Sudan</option>
      <option value="Suriname">Suriname</option>
      <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
      <option value="Swaziland">Swaziland</option>
      <option value="Sweden">Sweden</option>
      <option value="Switzerland">Switzerland</option>
      <option value="Taiwan">Taiwan</option>
      <option value="Tajikistan">Tajikistan</option>
      <option value="Tanzania, United Republic of">United Republic of Tanzania</option>
      <option value="Thailand">Thailand</option>
      <option value="Timor-Leste">Timor-Leste</option>
      <option value="Togo">Togo</option>
      <option value="Tokelau">Tokelau</option>
      <option value="Tonga">Tonga</option>
      <option value="Trinidad and Tobago">Trinidad and Tobago</option>
      <option value="Tunisia">Tunisia</option>
      <option value="Turkey">Turkey</option>
      <option value="Turkmenistan">Turkmenistan</option>
      <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>
      <option value="Tuvalu">Tuvalu</option>
      <option value="Uganda">Uganda</option>
      <option value="Ukraine">Ukraine</option>
      <option value="United Arab Emirates">United Arab Emirates</option>
      <option value="United Kingdom">United Kingdom</option>
      <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>
      <option value="Uruguay">Uruguay</option>
      <option value="Uzbekistan">Uzbekistan</option>
      <option value="Vanuatu">Vanuatu</option>
      <option value="Venezuela">Venezuela</option>
      <option value="Viet Nam">Viet Nam</option>
      <option value="Virgin Islands, British">Virgin Islands, British</option>
      <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>
      <option value="Wallis and Futuna">Wallis and Futuna</option>
      <option value="Yemen">Yemen</option>
      <option value="Zambia">Zambia</option>
      <option value="Zimbabwe">Zimbabwe</option>
    </select>
  </div>
  <div class="marketo-form-field">
    <label for="License_Count__c" class="mrkto_select_lbl">How many licenses will you need?<span class="requiredAsterix">*</span></label>
    <select id="1298_License_Count__c" class="mrkto_select" name="License_Count__c" required="" oninvalid="setCustomValidity('This field is required.)" oninput="setCustomValidity('')">
      <option value="">Select...</option>
      <option value="1">1 User</option>
      <option value="2">2 to 10</option>
      <option value="11">11 to 20</option>
      <option value="21">21 to 50</option>
      <option value="51">51+</option>
    </select>
  </div>
  <div class="marketo-form-field">
    <span>By filling out this form and clicking submit, you acknowledge our<span>&nbsp;</span></span><a href="https://www.pluralsight.com/privacy" target="_blank">privacy policy</a><span>.</span>
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_UTM_Source__c" class="mrkto_hidden" name="UTM_Source__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_UTM_Medium__c" class="mrkto_hidden" name="UTM_Medium__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_UTM_Campaign__c" class="mrkto_hidden" name="UTM_Campaign__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_UTM_Content__c" class="mrkto_hidden" name="UTM_Content__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_UTM_Term__c" class="mrkto_hidden" name="UTM_Term__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_mcvisid__c" class="mrkto_hidden" name="mcvisid__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_Click_ID__c" class="mrkto_hidden" name="Click_ID__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1298_Electronic_Person__c" class="mrkto_hidden" name="Electronic_Person__c">
  </div>
  <div class="marketo-form-field">
    <button type="submit" class="mrkto_submit">Submit</button>
    <input type="hidden" name="formid" value="1298">
  </div>
</form>

<form id="customMarketo_1041" data-mkto-id="1041">
  <div class="marketo-form-field">
    <label for="Email" class="mrkto_text_lbl">Email Address:<span class="requiredAsterix">*</span></label>
    <input type="email" id="1041_Email" class="mrkto_email" name="Email" required="" oninvalid="setCustomValidity('Must be valid email. example@yourdomain.com)" oninput="setCustomValidity('')" maxlength="255">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_UTM_Source__c" class="mrkto_hidden" name="UTM_Source__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_UTM_Medium__c" class="mrkto_hidden" name="UTM_Medium__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_UTM_Campaign__c" class="mrkto_hidden" name="UTM_Campaign__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_UTM_Content__c" class="mrkto_hidden" name="UTM_Content__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_UTM_Term__c" class="mrkto_hidden" name="UTM_Term__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_Click_ID__c" class="mrkto_hidden" name="Click_ID__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_mcvisid__c" class="mrkto_hidden" name="mcvisid__c">
  </div>
  <div class="marketo-form-field">
    <input type="hidden" id="1041_Electronic_Person__c" class="mrkto_hidden" name="Electronic_Person__c">
  </div>
  <div class="marketo-form-field">
    <input type="checkbox" id="1041_Single_Opt_In__c" class="mrkto_checkbox" name="Single_Opt_In__c" value="yes">
    <label for="1041_Single_Opt_In__c" class="mrkto_checkbox_lbl">I would like to receive emails from Pluralsight</label>
  </div>
  <div class="marketo-form-field">
    <button type="submit" class="mrkto_submit">Submit</button>
    <input type="hidden" name="formid" value="1041">
  </div>
</form>

Text Content

Skip to content
 * For individuals
 * For businesses
 * For public sector

 * Pluralsight
 * Skills
 * A Cloud Guru
 * Flow
 * Blog


An avatar icon Sign in
 * A skills logo
   
   Sign in to Skills
   
   The Skills product logo icon
   
 * A Cloud Guru small logo icon
   
   Sign in to A Cloud Guru
   
   A Cloud Guru logo, color version
   
 * Flow product logo
   
   Sign in to Flow
   
   The Flow product logo icon
   

The Pluralsight logo, color version
 * Explore
 * Software dev
 * Cloud
 * Tech Operations
 * AI & Data
 * Cybersecurity

 * A search magnifying glass icon
   A search magnifying glass icon
   
 * Contact sales
 * View plans

Close Icon

Sign in Menu
 *  * A skills logo
      
      Sign in to Skills
      
      The Skills product logo icon
      
    * A Cloud Guru small logo icon
      
      Sign in to A Cloud Guru
      
      A Cloud Guru logo, color version
      
    * Flow product logo
      
      Sign in to Flow
      
      The Flow product logo icon
      

 *  * Pluralsight
    * Skills
    * A Cloud Guru
    * Flow
    * Blog

A search magnifying glass
 * Explore
 * Software dev
 * Cloud
 * Tech Operations
 * AI & Data
 * Cybersecurity

 * Contact sales
 * View plans


CONTACT SALES

First Name*
Last Name*
Email Address*
Company*
Job Title*
Phone*
Country* Select... United States Afghanistan Aland Islands Albania Algeria
American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina
Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados
Belgium Belize Benin Bermuda Bhutan Bolivia Bonaire, Saint Eustatius and Saba
Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean
Territory Brunei Darussalam Bulgaria Burkina Faso Burundi Cambodia Cameroon
Canada Cape Verde Cayman Islands Central African Republic Chad Chile China
Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Democratic
Republic of the Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Curacao
Cyprus Czech Republic Denmark Djibouti Dominica Dominican Republic Ecuador Egypt
El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands
(Malvinas) Faroe Islands Fiji Finland France French Guiana French Polynesia
French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece
Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana
Haiti Heard Island and McDonald Islands Holy See (Vatican City State) Honduras
Hong Kong Hungary Iceland India Indonesia Iraq Ireland Isle of Man Israel Italy
Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Korea Kosovo Kuwait
Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia
Libyan Arab Jamahiriya Liechtenstein Lithuania Luxembourg Macao Republic of
Macedonia Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands
Martinique Mauritania Mauritius Mayotte Mexico Federated States of Micronesia
Republic of Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique
Myanmar Namibia Nauru Nepal Netherlands Netherlands Antilles New Caledonia New
Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands
Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea
Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion
Romania Rwanda Saint Barthelemy Saint Helena Saint Kitts and Nevis Saint Lucia
Saint Martin Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa
San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra
Leone Singapore Sint Maarten Slovakia Slovenia Solomon Islands Somalia South
Africa South Georgia and the South Sandwich Islands South Sudan Spain Sri Lanka
Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Taiwan
Tajikistan United Republic of Tanzania Thailand Timor-Leste Togo Tokelau Tonga
Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu
Uganda Ukraine United Arab Emirates United Kingdom United States Minor Outlying
Islands Uruguay Uzbekistan Vanuatu Venezuela Viet Nam Virgin Islands, British
Virgin Islands, U.S. Wallis and Futuna Yemen Zambia Zimbabwe
How many licenses will you need?* Select... 1 User 2 to 10 11 to 20 21 to 50 51+
By filling out this form and clicking submit, you acknowledge our privacy
policy.








Submit

Thank you!

Close button icon

 1. Blog
 2. Software Development


WHAT HAPPENS WHEN I CALL A JAVA METHOD?

A guide to Java method invocation basics, explaining what happens when you call
a Java method, method signatures, pass-by-value, stack vs. heap memory and more.

By Josh Cummings

Nov 8, 2024 • 9 Minute Read


 * Software Development
 * Guides

--------------------------------------------------------------------------------

Subscribe to the newsletter


In this article, we’re going to take an up-close look at what happens when you
call a method in Java and in other languages in general. We’ll talk about
signatures, modifiers, pass-by-value, and how these matter whenever a method is
invoked.


DINNER WITH FRIENDS

My partner and I had a nice dinner with friends the other night. The chef was
Peruvian and very creative with the dishes he’d design. My favorite was this
roasted asparagus with whipped feta and strawberry salsa; so yummy!

Anyway, I was thinking, as one does, that a menu at a restaurant is a bit like a
set of Java methods. A menu item has a name; I give that name to the waiter, and
they bring me back the requested food. A method also has a name; I call that
name in a Java program, and Java invokes it, bringing me back its return value.

No, I didn’t spring that analogy on our dinner guests. We don’t pay them enough
to stay our friends and hear my nerdy musings.

But you get to, so let’s dive in!


MENU ITEMS AND METHOD SIGNATURES

Every restaurant has a menu (at least those I’ve been to), and on these menus
are the things you can order. They usually look something like this:

Cheeseburger with Carrots …….. $13

And if we were to write a Java program that represents this (delightful?) menu
item, it might look something like this:

      public Cheeseburgers orderCheeseBurgerWithCarrots(int count, 
double amount) throws OutOfStockException;

    

This is called the method signature or the thing that uniquely identifies this
method from all other methods in the application runtime. It’s important that
the method signature be unique, just like each menu item needs to be unique;
otherwise, how would the waiter know which you want?


ORDERING AND INVOKING

Even though the assumption is that I want just one of the item that I’m ordering
at the restaurant, I can technically ask them to bring me 2 or 3, which would
not be weird at all. Invoking a method also affords this same flexibility in two
ways:

 1. You can pass a parameter that says how many you want 
 2. You can call the method multiple times

The first one, given our example method above, would look something like this:


      Cheeseburgers cheeseburgers = orderCheeseBurgerWithCarrots
(2, 26.00);

    

So, as you can see, to call a Java method you need to do at least two things:

 1. Type the name of the method
    
 2. Pass the needed parameters to it
    

Most of the time you need one more step first, and that is to have a reference
to the class where the method is declared. For example, if the method is not
static (like the one we declared), it would likely be declared in a class like
this one:

      public class Menu {
    public Cheeseburgers orderCheeseBurgerWithCarrots(int count, 
double amount)
             throws OutOfStockException {
        // … make count cheeseburgers
        return cheeseburgers;
    }
}

    

And that means that you need to first have a reference to an instance of Menu to
invoke it:

      Menu menu = new Menu();
Cheeseburgers cheeseburgers = menu.orderCheeseBurgerWithCarrots
(4, 52.00);

    

Once that’s settled, your waiter can take your order to the kitchen and Java can
take your parameters to the method.


STACKS, HEAPS, AND TICKETS

In the olden days before computers, waiters would write your order down… on
paper… and give that paper (or ticket) to the kitchen. This part is important
because the waiter needs to be able to leave and go take other orders from other
tables. If the waiter needed to sit there and wait for the cook to be done, then
customers could be left waiting.

Likewise, when you call a method in Java, the parameters are placed on a stack,
each parameter representing an item in that stack, like so:

|-----------|
|     4     |
|-----------|
| 52.00 |
|-----------|

Because Java remembers the method’s signature, it knows that the first item in
the stack is the number of burgers and the second item in the stack is the
dollar amount.

Given your level of experience with Java, you may already know that each slot in
the stack has a very specific size so that the JVM can locate them quickly in
memory. But, you may also know that not all data has the same size; think arrays
or objects.

Hold that thought, and we’ll come back to it shortly. For now, remember the term
heap and that variables are stored on the stack and sometimes part of a
variable’s data is stored on that heap.



COOKING AND EXECUTING

First, though, let’s talk about what happens in the kitchen. In a restaurant,
the cook makes the meal, and in Java, the runtime runs the body of the method.

In Java, we are always inside the execution of a method, even from the
beginning. To illustrate this, consider Java’s most famous method:


      public static void main(String[] args) { … }

    

This method has a signature also, and it is the first method that the runtime
invokes. To get other things to happen, that main method usually needs to call
other methods (and those methods call other methods).

It might look something like this:

      1: public static void main(String[] args) {
2:     Menu menu = new Menu();
3:     Cheeseburgers cheeseburgers = 
menu.orderCheeseBurgerWithCarrots(4, 52.00);
4:     Person person = new Person();
5:     person.eat(cheeseburgers); // yum!
6: }

    

In the program above, it first creates a `Menu` instance on line 2. Then the
program proceeds to line 3 to invoke the `orderCheeseBurgerWithCarrots` method.
The runtime stops processing the `main` method and moves into the
`orderCheeseBurgerWithCarrots` method.

The runtime then runs all the lines inside the order method, returning the
cheeseburgers back to the `main` method where the runtime can then proceed to
line 4.


WHAT WAS THAT THING ABOUT STACKS OF HEAPS AGAIN?

Okay, so some programming metaphors can be a little abstract sometimes. A stack
takes its imagery from things like a stack of pancakes; you add from the bottom
up and you remove from the top down. In computer memory, you can imagine a stack
of memory slots of equal size; each method parameter is placed into one of these
slots. Because the slots are equal in size, a computer can do simple arithmetic
to immediately locate a given slot.

The issue is that not all method parameters are going to be the same size. Some
may even vary in size from one call to another, like if one of the parameters is
a list or array. How Java and many other languages solve this is to place a
pointer or reference on the stack, like a road sign. This road sign points the
computer from one memory location -- the stack -- to another -- the heap, like
so:

           Stack                                    Heap
  fixed-size data             dynamically-sized data

|---------|
|    4    |
|---------|
|52.00|
|---------|
|--->| cheese | tomatoes | carrots | brussel sprouts | sriracha |
|---------|

In this case, we’re imagining a method signature that can also take a list of
toppings:

      public Cheeseburgers orderCheeseBurgerWithCarrots(int count, 
double amount, List<String> toppings)
        throws OutOfStockException;

    

Because the list of toppings doesn’t fit on the stack, Java instead sends a
pointer that the runtime can follow from the stack, where method parameters
live, to the heap, where the values are.


IS JAVA PASS BY REFERENCE OR BY VALUE?

You may have heard the terms pass-by-reference and pass-by-value when talking
about how a language passes variables to a method.

“By reference” means that the language sends references (pointers) to data
instead of the actual data. “By value” means that the language sends copies of
the data instead of the actual data.

Before I dramatically reveal what Java does, let’s look even closer at what
happens when Java invokes a method.

When main invokes orderCheeseBurgerWithCarrots, it copies all of the values main
has and moves them into orderCheeseBurgerWithCarrots’s stack:

  main’s stack                         Heap                             order’s
stack
fixed-size data         dynamically-sized data         fixed-size data

    |---------|                                                                
        |---------|
    |    4    |                                                                
       |    4    |
    |---------|                                                                
        |---------|
    |52.00|                                                                    
   |52.00|
    |---------|                                                                
        |---------|
   | ->|cheese|tomatoes|carrots|brusselsprouts|sriracha|<- |
    |---------|                                                                
        |---------|

The keyword is that it copies all of the stack values, meaning that Java is
pass-by-value. Even though one of the values is an arrow, it still copies that
arrow. 

Just like the restaurant kitchen, though, languages are full of things that you
may have felt better before you knew them.

Notice that the heap in the middle is shared by everyone. So, even though Java
makes a copy of the pointer, if orderCheeseBurgerWithCarrots were to add to the
topping list itself, then main would see the change:

      1: public Cheeseburgers orderCheeseBurgerWithCarrots
(int quantity, double amount, List<String> toppings) {
2:  toppings.add(“horseradish”); // everyone loves this, right??
3:  // … kitchen stuff
4:  return cheeseburgers;
5: }
6: 
7: public static void main(String[] args) {
8:  Menu menu = new Menu();
9:  List<String> toppings = new ArrayList<>(List.of(“cheese”, 
“lettuce”, “tomatoes”));
10:  assert toppings.size() == 3; // pass!
11:  Cheeseburgers cheeseburgers = 
menu.orderCheeseBurgerWithCarrots
(4, 52.00, toppings);
12:  assert toppings.size() == 3; // fail!
13:  // …

    

Because of this Java exhibits pass-by-reference behavior with objects.


SERVING AND RETURNING

Once the kitchen is done, it’s time for the waiter to bring the food you ordered
back to you. And when Java is done executing a method, it’s time for the runtime
to give the final value back to the caller.

This is what is happening between line 4 and 11 in the most recent snippet. The
program executes line 7 first (Java always enters from a main method), then
8-11. And then, it jumps to line 1-4 where it makes the cheeseburgers. Once it’s
done, it returns to line 11, sets the variable to the result of the method and
moves to line 12.

This is also done with pass-by-value. Java copies the return value back to
main’s stack. Since Cheeseburgers is an object, that means that main gets a copy
of the pointer.


CONCLUSION

In this article, you saw what happens when Java calls a method. Given a unique
method signature, it takes the parameters from one stack and copies them into
another. The method uses this copy to perform its operations and then returns
its result. Because it copies these values, we say that Java is pass-by-value;
however, since Java also uses the concept of a heap, it can sometimes look like
pass-by-reference.


WAIT! I HAVE MORE QUESTIONS!

What happens when a method experiences an error? 

What about if there is more than one method with the same name, but different
parameter lists? Or a method of the same name in a superclass? 

And how does the waiter take other orders while mine is being made?

These are important questions for another day. You can learn more by reading my
article on exception handling or by watching the following Java courses:

Scaling Java Applications Through Concurrency
Object-oriented Programming in Java
Java SE 17
Java SE 11 Developer Certification (1Z0-819)
Java Coding Practices

For now, though, maybe sit down and enjoy the four carrot cheeseburgers that you
just paid $52 for.

Josh C.

Like many software craftsmen, Josh eats, sleeps, and dreams in code. He codes
for fun, and his kids code for fun! Right now, Josh works as a full-time
committer on Spring Security and loves every minute. Application Security holds
a special place in his heart, a place diametrically opposed to and cosmically
distant from his unending hatred for checked exceptions.

More about this author



 * SUPPORT
   
   * Contact
   * Help Center
   * IP Allowlist
   * Sitemap
   * Download Pluralsight
   * Skills Plans
   * A Cloud Guru Plans
   * Flow Plans


 * COMMUNITY
   
   * Guides
   * Teach
   * Partner with Pluralsight
   * Affiliate Partners
   * Pluralsight One
   * Authors


 * COMPANY
   
   * About Us
   * Careers
   * Newsroom
   * Resources


 * INDUSTRIES
   
   * Education
   * Financial Services (FSBI)
   * Healthcare
   * Insurance
   * Non-Profit
   * Public Sector


 * NEWSLETTER
   
   Email Address:*
   
   
   
   
   
   
   
   
   I would like to receive emails from Pluralsight
   Submit
   
   Thank you!
   
   * A facebook icon
   * 
   * 
   * 
   * 

--------------------------------------------------------------------------------

Pluralsight logo Copyright © 2004 - 2024 Pluralsight LLC. All rights reserved
 * Terms of Use
 * Privacy Notice
 * Modern Slavery Statement