一、Java中,方法参数的使用情况:
1、一个方法不能修改一个基本数据类型的参数;
2、一个方法可以改变一个对象参数的状态;
3、一个方法不能让对象参数引用一个新的对象;
例子代码为:
package com.study.write; public class ParamTest { public static void main(String[] args) { /*方法不能修改基本数据类型参数*/ System.out.println("Testing tripleValue"); double percent = 10; System.out.println("Before:percent=" + percent); tripleValue(percent); System.out.println("After:percent=" + percent); /*方法能改变对象参数的状态*/ System.out.println("/nTesting tripleSalary:"); Employee1 harry = new Employee1("Harry", 50000); System.out.println("Before:salary=" + harry.getSalary()); tripleSalary(harry); System.out.println("After:salary=" + harry.getSalary()); /*方法不能让对象参数引用一个新的对象*/ System.out.println("/nTesting swap:"); Employee1 a = new Employee1("Alice", 70000); Employee1 b = new Employee1("Bob", 60000); System.out.println("Before: a=" + a.getName()); System.out.println("Before: b =" + b.getName()); swap(a, b); System.out.println("After: a=" + a.getName()); System.out.println("After: b=" + b.getName()); } public static void tripleValue(double x) { x = 3*x; System.out.println("End of method: x=" + x); } public static void tripleSalary(Employee1 x) { x.raiseSalary(200); System.out.println("End of method:salary=" + x.getSalary()); } public static void swap(Employee1 x, Employee1 y) { Employee1 temp = x; x = y; y = temp; System.out.println("End of method: x=" + x.getName()); System.out.println("End of method: y=" + y.getName()); } } class Employee1 { public Employee1(String n, double s) { name = n; salary = s; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent; salary += raise; } private String name; private double salary; }
二、final关键字
private final Date hiredate;
存储在hiredate变量中的对象引用在对象构造之后不能被改变。而并不意味着hiredate对象是一个常量。任何方法都可以对hiredate引用的对象调用setTime更改器。
例子代码:
package com.study.write; public class TestFinal { public static void main(String[] args) { Date d = new Date(2012, 3, 14); final Date hiredate = d; System.out.println(hiredate.toString()); d.setDate(2012, 3, 15); System.out.println(hiredate.toString()); } } class Date { public Date(int y, int m, int d) { year = y; month = m; day = d; } public String toString() { return String.valueOf(year) + String.valueOf(month) + String.valueOf(day); } public void setDate(int yy, int mm, int dd) { year = yy; month = mm; day = dd; } private int year; private int month; private int day; }
结果: