Java SE学习之方法参数的使用

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。

Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。

在Java程序设计语言中,方法参数的使用情况:

1、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型);

2、一个方法可以改变一个对象参数的状态;

3、一个方法不能实现让对象参数引用一个新的对象。

下面是测试代码

package SE;

public class ParamTest {

	/**
	 * <p>
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-10-29 上午10:42:39
	 * @param args
	 */
	public static void main(String[] args) {
		//1、实验一
		System.out.println("Testing tripleValue");
		double percent = 10;
		System.out.println("Before:percent="+percent);
		tripleValue(percent);
		System.out.println("After:percent="+percent);

		//2、实验二
		System.out.println("\nTesting tripleValue Object");
		StringBuffer percentD = new StringBuffer("开始——————");
		System.out.println("Before:percent="+percentD);
		tripleValue(percentD);
		System.out.println("After:percent="+percentD);

		//2.1、实验二  测试String对象
		System.out.println("\nTesting tripleValue Object");
		String percentS = "String开始——————";
		System.out.println("Before:percent="+percentS);
		tripleValue(percentS);
		System.out.println("After:percent="+percentS);

		//3、实验3
		System.out.println("\nTesting tripleSalary:");
		Employee harry = new Employee("Harry",50000);
		System.out.println("Before:salary="+harry.getSalary());
		tripleSalary(harry);
		System.out.println("After:salary="+harry.getSalary());

		//4、实验4
		System.out.println("\nTesting swap:");
		Employee a = new Employee("Alice",7000);
		Employee b = new Employee("Bob",6000);
		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());
	}
	//一个方法不能修改String呀
	public static void tripleValue(String  x){
		x = x+("测试");
		System.out.println("End of method :x ="+x);
	}

	public static void tripleValue(StringBuffer x){
		x = x.append("测试");
		System.out.println("End of method :x ="+x);
	}
	//一个方法不能修改一个基本数据类型的参数
	public static void tripleValue(double x){
		x = 3 * x;
		System.out.println("End of method :x ="+x);
	}
	//一个方法可以改变一个对象参数的状态
	public static void tripleSalary(Employee x){
		x.raiseSalary(200);
		System.out.println("End of method:x="+x.getSalary());
	}
	//一个方法不能实现让对象参数引用一个新的对象
	public static void swap(Employee x,Employee y){
		System.out.println("Before of method: x="+x.getName());
		System.out.println("Before of method: y="+y.getName());
		Employee 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 Employee {
	private String name;
	private double salary;

	public Employee(String n,double s){
		name = n;
		salary = s;
	}

	public void raiseSalary(double i) {
		double raise = salary*i/100;
		salary += raise;

	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}
}
时间: 2024-12-28 23:44:36

Java SE学习之方法参数的使用的相关文章

JAVA入门学习: 方法参数的传递(函数传参问题)

引言:我们知道C++中拥有两种参数传递方式, 值调用和引用调用. 有些程序员认为JAVA程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的. 由于这种误解存在普遍性,所以下面将阐述一下这个问题. 所以用一段简单的代码来阐述一下这个问题: 1 //如果方法参数是的输入时引用,那么我们将交换两个指针(即引用) 2 public static void swap(Employee x, Employee y) 3 { 4 Employee temp = x; 5 x =y; 6 y = te

java SE学习之线程同步(详细介绍)

       java程序中可以允许存在多个线程,但在处理多线程问题时,必须注意这样一个问题:               当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量时,那么这个程序是该如何执行?              也就是先访问这个变量还是先修改这个变量.              在学习线程的这段时间里,我也一直被这个问题所困扰!但是今天终于算是搞明白了.              于是将这些好的列子一一列举出来,分享一下. (1)什么是线程同步 ?      

java 里定义的方法参数 (final String... args)

定义成final是为了防止在方法类里面修改参数,final String... args 为JDK新的特性,为可变长参数.编译的时候被解释为:public DCMException(final String id, final String[] args), 但是在编程中你可以给方法参数为 DCMException("id","arg1","arg2","arg3"....)这样编程人员更为方便,不必再次组装数组作为参数.

Java SE学习之Random

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. 昨天在项目中想使用几个随机数,结果使用Random时居然出现随机数相同的情况,忍不住查了些资料. 现将代码总结如下: package SE; import java.util.Random; public class RandomUnit { /** * * <p> * 无种子参数的构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数, * 然后使用这个种子数构造Random对象. * </p> *

Java SE学习之printf 日期转换符

本文是学习网络上的文章时的总结,感谢大家无私的分享. System.out.printf()方法能够对日期做处理输出. 相应列表 转换符 类型 举例 c 完整的日期和时间 Mon Feb 09 18:05:11 PST 2004 F ISO 8061日期 2004-02-09 D 美国格式的日期 02/09/2004 T 24小时时间 18:03:23 r 12小时时间 05:03:23 pm R 24小时时间没有秒 18:05 Y 4位数字的年(前面补0) 2004 y 年的后两位数字(前面补

Java SE学习之枚举总结

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. 最近在看Java基础方面的书的时候,又遇到了枚举的介绍.在网上查了一些资料,对这些资料进行一些总结. 用法一:常量 package meiju; /** * * @ClassName: Color * @Description: 枚举变量的常量用法 * @author zhangjunshuai [email protected] * @date 2014-11-16 下午07:29:40 * */ public enum

Java SE学习之数组——匿名数组和不规则数组

本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享. 最近偶然遇到了数组的问题,学习了匿名数组和不规则数组. 匿名数组适用于只使用一次的情况:不规则数组适用是每行数据总数不确定的情况. 下面贴上我的小例子 package SE; import java.util.Random; /** * <p> * Description: 此方法是对匿名数组和不规则数组的学习 * </p> * @author zhangjunshuai * @version 1.0 * Cr

Java SE学习之System.getProperties

本文是学习网络上的文章时的总结,感谢大家无私的分享. Java提供的java System.getProperties()方法是获取运行环境的系统参数的,综合了网上各位大神的帖子我总结出一些可用属性. java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java

javassist:增强型的java反射工具,获取方法参数名

java的反射是不能获取方法的参数名的.比如: [java] view plaincopyprint? public String concatString(String str1,String str2){ return str1+str2; }     public String concatString(String str1,String str2){         return str1+str2;     } 想获取"str1",和"str1"这个参数