首页 > 编程语言 >java(十三)参数传递

java(十三)参数传递

时间:2024-09-08 10:53:21浏览次数:7  
标签:传递 java String 十三 void 参数传递 static println public

Java中的参数传递:分为值传递和引用传递。

这里讲的参数传递针对的是方法里面传递的值的时候发生的情况
但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指针,地址的东西。

1.值传递

只有基本数据类型采用值传递,特点是传递的是值的拷贝,传递完后两者就没有关系了。也就是说方法内 的值,不会影响原始参数的值。

基本数据类型:
·整型:int,long,byte,short
浮点型:float,double
字符型:char
布尔型:boolean
注:8种基本数据类型以外的数据类型都为引用类型。

public class PassByValueExample {

    public static void main(String[] args) {

        int x = 10;

        change(x);

        System.out.println(x); // 输出仍然是 10,因为方法内的修改不会影响原始值

    }

    public static void change(int x) {

        x= 20;

      System.out.println(x); //栈,先进后出,执行完方法后,change弹出

    }

}

2.引用传递

在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
虽然你可以将对象传递给方法,但方法接收的是对象引用的副本,因此在方法内部修改对象的内容会影响原始对象。

需要注意的是,虽然在对象传递时,看起来好像是按引用传递,但实际上仍然是按值传递,只不过传递的值是对象引用的副本,这意味着你可以修改对象的状态,但不能修改对象引用本身。如果将新的对象赋值给方法内的参数,原始引用不会受到影响。

public class PassByReference {
    public static void main(String[] args) { 
            int [] a={1,2,3};
            System.out.println(a[0]);
            change(a);
            System.out.println(a[0]);
            int [] b={1,2,3};
            change1(b);
        System.out.println(b[0]);
    }
    public static void change(int[] a ){
        a[0]=100;
    }
    /**
     * 在涉及引用数据类型的传递时,
     * 方法调用可以改变所指向对象的属性,
     * 但绝不能改变原变量所引用的对象,
     */
    public static void change1(int[] b ){
        b = new int[]{13,14,15};
        b[0]=b[0]+10;

    }
}
public class PassByReferenceExample {
    public static void main(String[] args) {
        StringBuilder str = new StringBuilder("Hello");
        reassignStringBuilder(str);
        System.out.println(str); // 输出 "Hello",因为重新分配了一个新的对象给参数
    }
    public static void reassignStringBuilder(StringBuilder s) {
        s = new StringBuilder("New Value");
    }
}

 

3.String类型传递

先说结论,String类型传递与基本数据类型的传递效果相似。不会改变。值传递

3.String类型传递
先说结论,String类型传递与基本数据类型的传递效果相似。不会改变。值传递
public class Test{
    public static void main(String[] args) {
        String a = "hehe";
        modifyStr(a);
        System.out.println("a的值"+a);//hehe
  }
    public static void modifyStr(String s){
        s = s+"haha";
        System.out.println("s的值"+s);//hehehaha
    }
}

标签:传递,java,String,十三,void,参数传递,static,println,public
From: https://blog.csdn.net/sadfasdfsafadsa/article/details/142023320

相关文章

  • JAVA(十五)类和对象
    面相对象编程为什么会设计类这个东西程序中要表示一个人的特征如何表示,它具有不同的类型,第一个name姓名age年龄 19intsex性别男String第二个name1姓名age1年龄 19intsex1性别男String第n个。调用第几个怎么调用,我们知道数组放的是数据相同的......
  • JAVA(十四)类和对象之面向对象编程
    编程的分类按编程风格分类面向过程编程和面向对象编程和面向接口编程1.1面向过程编程过程式编程,也称为命令式编程,是一种编程范式,它依赖于过程调用来实现逻辑。代码按照一定的顺序执行,从而实现功能。在过程式编程中,程序被组织成一系列的过程或函数调用,每个过程都负责执行特......
  • Javaweb-数据库设计案例
    1.createtablemusic( idintPRIMARYkey, titlevarchar(32), aliasvarchar(32), imagevarchar(64), stylevarchar(8), typevarchar(4), mediumvarchar(4), publish_timedate, publishervarchar(16), numbertinyint, barcodebigint, summaryvarcha......
  • Javaweb-数据库设计-多表关系实现
    createtabletb_order( idintPRIMARYkeyauto_increment, paymentdouble(10,2), payment_typetinyint, statusTinyint);createtabletb_goods( idintPRIMARYkeyauto_increment, titlevarchar(100), pricedouble(10,2));createtabletb_order_goods(......
  • java计算机毕业设计门诊电子处方管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着医疗技术的飞速发展与信息化建设的深入推进,传统的手写门诊处方已难以满足现代医疗服务的高效、准确与安全性需求。门诊电子处方管理系统的研发应......
  • java计算机毕业设计课程教学平台设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化时代,教育模式的变革日益显著,传统教学模式逐渐向数字化、网络化转型。随着在线教育的兴起,构建一个高效、便捷的课程教学平台成为提升教学质量......
  • java计算机毕业设计家乡印象网站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在快速城市化的今天,人们对家乡的眷恋与记忆愈发珍贵。随着互联网的普及,线上平台成为连接过去与现在、个人与家乡情感的重要桥梁。然而,市场上缺乏一个......
  • javase复习day18API
    游戏打包exeMathabs方法的小bug:以int类型为例,取值范围:-2147483648~2147483647如果没有正数与之对应,那么传递负数结果有误-2147483648没有正数对应则结果还是 -2147483648可以使用JDK15后的新方法absExact如果结果有误则会报错packageMathDemo1;publiccla......
  • 2025年25届最新:如何打造Java SpringBoot个人健康档案管理系统,集成Vue,实现高效信息管理
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......
  • Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o
    文本目录:❄️一、栈(Stack):  ▶1、栈的概念: ▶ 2、栈的使用和自实现:   ☑1)、Stack():   ☑2)、push(Ee):   ☑3)、empty():     ☑4)、peek(Ee):     ☑5)、pop(Ee):    ☑6)、size(Ee): ▶3、栈自实现的总代码:......