
public class ReturnType {
int getLetter(char s) {
return s;
}
double getNumber(int a) {
return ++a;
}
public static void main(String args[]) {
ReturnType r = new ReturnType();
System.out.println(r.getLetter('c')); // 99
System.out.println(r.getNumber(5)); // 6.0
}
}
При передаче параметров в метод и при возвращении значения из метода производится автоматическое безопасное приведение типов.
public class CompatibleReturnTypes {
double sum(int first, short second, long third) {
float sum = first + second + third;
return sum;
public static void main(String args[]) {
CompatibleReturnTypes r = new CompatibleReturnTypes();
short first = 1;
byte second = 10;
int third = 100;
System.out.println(r.sum(first, second, third));
}
}
Будет выведено 111.0. т.к. слагаемые приводятся к типу long, сумма к типу float, а возвращаемый результат к double.Если типы не являются безопасно-приводимыми, то их несоответствие ожидаемым типам вызывает ошибку компиляции:
float sum(int first, short second) {
double sum = first+second;
return sum;
}
Тип double безопасно не приводится к float, только явно: return (float)sum;
Следующий пример тоже вызовет ошибку компиляции:
double fourth = 1000.0;
System.out.println(r.sum(first, second, fourth));
Тип double безопасно не приводится к long, только явно: r.sum(first, second, (long)fourth).