المعاملات والمتحولات

بعض العمليات الجاهزة التي استخدمناها تتطلب متحولات (arguments)، وهي قيم تعطيها للعملية لتسمح لها بإتمام عملها. مثلاً، إذا أردت حساب جيب عدد ما، يجب عليك أن تحدد ما هو ذلك العدد. إذن، يأخذ sin قيمة من نوع double كمتحول. لطباعة سلسلة محرفية، عليك أن تعطي تلك السلسة إلى عملية الطباعة، ولهذا فإن println تأخذ String كمتحول.
بعض العمليات تأخذ أكثر من متحول، مثل pow، التي تأخذ متحولين من نوع double، الأساس والأس.
عندما تستخدم عملية، تزودها بالمتحولات. عندما تكتب عملية، تحدد قائمة المعاملات. المعامل (parameter) هو متغير يخزن متحول. تحدد قائمة المعاملات المتحولات المطلوبة للعملية.
مثلاً، تحدد printTwice معاملاً واحداً، s، من النوع String. لقد أسميته s ليبدو أنه من نوع String، لكن من الممكن أن أدعوه بأي اسم مسموح آخر.
كود:
public static void printTwice(String s) {
   System.out.println(s);
   System.out.println(s);
}
عندما نستدعي printTwice، علينا تقديم متحول واحد من النوع String.
printTwice("Don't make me say this twice!");
عندما تستدعي عملية، يتم إسناد المتحولات التي أعطيتها للمعاملات. في هذا المثال، يسند المتحول
"Don't make me say this twice!" إلى المعامل s. هذه العملية تدعى تمرير المعاملات
(parameter passing) وذلك بسبب تمرير القيم من خارج العملية إلى داخلها.
يمكن أن نمرر أي نوع من العبارات كمتحول، فإذا كنا نملك متغيراً من نوع String، أمكننا تمريره كمتحول:
كود:
   String argument = "Never say never.";
   printTwice(argument);
يجب أن تكون القيمة التي توفرها كمتحول من نفس نوع معامل العملية التي تستدعي. مثلاً، لو جربت هذه التعليمة:
كود:
printTwice(17);
ستحصل على رسالة خطأ مثل "cannot find symbol"، "لا يمكن العثور على الشكل"، وهي غير مفيدة كثيراً. السبب هو أن Java تبحث عن عملية باسم printTwice يمكنها أن تأخذ عدداً صحيحاً كمتحول. نظراً لعدم وجود تلك العملية، فلن تتمكن Java من العثور على ذلك "الشكل".
تستطيع System.out.println أن تقبل أي نوع كمتحول. لكن هذه حالة خاصة؛ معظم العمليات ليست بهذه التوافقية.