`
lihui8848
  • 浏览: 9566 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java 的传值原理,小例子

阅读更多

public class Test {

    static class B {
        public int i = 0;
        public String s = "0";
    }

    public static void main(String[] args) {
        int i = 0;
        change1(i);
        System.out.println(i);                         //0

        String a = "0";
        change2(a);
        System.out.println(a);                         //0

        B b1 = new B();
        change3(b1);
        System.out.println(b1.i + "   " + b1.s);       //100  100


        B b2 = new B();
        change4(b2);
        System.out.println(b2.i + "   " + b2.s);       //0  0
       
        int[] c1 = new int[]{0};
        change5(c1);
        System.out.println(c1[0]);                     //100
       
        int[] c2 = new int[]{0};
        change6(c2);
        System.out.println(c2[0]);                     //0
    }

    public static void change1(int i) {
        i = 100;
    }

    public static void change2(String a) {
        a = "100";
    }

    public static void change3(B b) {
        b.i = 100;
        b.s = "100";
    }

    public static void change4(B b) {
        b = new B();
        b.i = 100;
        b.s = "100";
    }
   
    public static void change5(int[] c) {       
        c[0] = 100;
    }
   
    public static void change6(int[] c) {
        c = new int[]{100};       
    }
}

 

5
5
分享到:
评论
2 楼 黎明的曙光 2011-11-27  
其实都是传值,只不过有的时候传的是地址的副本有的是存储单元内容的副本
1 楼 393799950 2011-11-24  
我一直记得我们java老师说过,
java传输,是传值。传输的是指针的副本。

public static void main(){
  B b = new B();
  change4(b);
  Systen,out.println(b.i+"===="+b.s); // 都是0的原因
  // 如果java是传引用的话
  B b1 = new B();
  change4(b1);
  Systen,out.println(b1.i+"===="+b1.s); // 就都会变成100
}
public static void change4(B b) {
        b = new B();
        b.i = 100;
        b.s = "100";
    }

相关推荐

    TabHost页面传值小例子

    这个"TabHost页面传值小例子"很适合初学者理解如何在不同的Tab之间传递数据。下面,我们将深入探讨`TabHost`的工作原理以及如何在不同Tab之间传递数据。 `TabHost` 是Android SDK中的一个类,它允许我们在应用中...

    JAVA中传值与引用问题

    本文将深入探讨Java中的传值与传引用问题,并通过具体的例子来解析其中的原理。 #### 二、基础知识回顾 在Java中,所有的数据类型可以分为两大类:基本类型(如int, double等)和引用类型(如Object, String等)。...

    Android-Fragment和Activity的传值通例子

    本篇将深入探讨Fragment与Activity之间的数据传递,以及通过实际例子来说明这一过程。 一、Fragment与Activity的数据传递原理 1. Intent传递:在Activity之间,我们通常使用Intent对象来传递数据,然而,由于...

    ajax例子servlet传值

    本文将通过一个具体的例子来详细介绍如何使用AJAX与Servlet进行数据交换,并通过Servlet与数据库交互来验证用户名是否已经存在。 #### 二、基础知识简介 ##### 2.1 AJAX基本原理 AJAX技术的核心是`XMLHttpRequest`...

    多页面JSP传值

    这里我们将详细探讨几种在JSP中传递参数的方法,并通过示例来理解它们的工作原理。 1. **URL请求参数传递** 这是最简单的方法,参数直接附加在URL后面。例如: ```html 直接传递参数 ``` 或者在`response....

    java 之方法调用 方法传参 值传递还是引用传递字节码

    在Java编程语言中,方法调用和参数传递是核心概念,理解它们的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们...

    Android Handler传值的demo

    在Android开发中,`Handler`、`Message`和`Looper`是实现线程间通信的重要机制,...通过熟练掌握`Handler`、`Message`和`Looper`的工作原理,开发者可以更好地控制应用程序的多线程行为,提升程序的响应性和用户体验。

    Java经典面试题大全(带答案)

    - **解释**:Java中,如果一个源文件包含一个公共类,则该类的名字必须与文件名完全一致,包括大小写。 2. **Unicode编码** - **知识点**:Unicode编码。 - **解释**:Unicode是一种国际化的字符编码标准,使用...

    web项目中json传值

    本文将详细介绍如何在Java Web项目中实现JSON数据的传递,并通过具体的代码示例来阐述其工作原理。 #### 二、背景知识 1. **JSON格式**:JSON支持以下几种数据类型:对象、数组、字符串、数值、布尔值以及`null`。...

    Kotlin实现页面互相跳转和互相传值源代码

    在Android应用开发中,页面之间的跳转和数据传递是至关重要的功能。Kotlin作为一种现代、类型安全且极其适合...通过理解Intent的工作原理和如何利用Parcelable接口,你将能够构建出更加流畅和功能丰富的Android应用。

    SpringBoot前后端传值.docx

    - **作用原理**:`@RequestParam` 实际上是利用了 Spring 的转换机制,通过 `ConversionService` 配置将 `Request.getParameter()` 方法中的 Key-Value 参数映射到方法参数上。 - **应用场景**:当客户端发送 GET ...

    使用JNA获取窗口句柄,并发送消息

    首先,让我们深入理解JNA的工作原理。JNA允许Java程序直接调用系统函数库中的函数,通过映射Java方法到C函数调用来实现。JNA的核心组件包括`platform-3.5.2.jar`和`jna-3.5.2.jar`,它们包含了必要的库和接口定义,...

    java实现简单的给sql语句赋值的示例

    首先,了解PreparedStatement的工作原理。当我们创建一个PreparedStatement对象时,我们需要提供一个带有占位符(通常是问号'?')的SQL语句。在执行SQL前,我们可以使用`setXXX()`方法(如`setString()`, `setInt()`...

    北航程序设计语言原理题目与参考答案

    java.util.concurrent.Semaphore类用于控制多线程访问共享资源的线程数量。在文档中也包含了一个名为SleepBarber的示例程序,其核心逻辑是通过信号量来控制理发店的顾客和理发师的座位分配问题。这个例子展示了如何...

    实验项目B、Java类基础编程

    - 通过具体的例子来演示局部变量和类变量的作用域区别。 4. **可变长度参数方法** - 定义一个接受可变数量参数的方法,并演示如何使用它。 5. **递归编程** - 编写一个递归方法,例如计算阶乘或斐波那契数列,...

    JSP Spring配置文件中传值的实例详解

    本文将深入讲解如何在Spring配置文件中传递值,并通过具体的实例来展示其工作原理。 首先,我们要理解Spring配置文件中的`<bean>`元素,它是定义一个对象(bean)的容器,包含了类路径、初始化方法等信息。例如: ...

    SimpleJava.pdf

    - **监视器机制**:Java中的锁实现原理。 - **可重入性**:同一线程可以多次获取同一把锁。 - **死锁避免**:使用正确的锁定顺序来预防死锁。 #### 30. Java集合框架的接口与类层次结构图解 - **Collection接口**...

    教师信息资源管理系统报告

    在程序设计训练中,我们可以通过具体的例子来学习和理解不同的参数传递方式。例如,上述报告中提到的一个训练题目,通过三种不同的传参方式——传值、引用和指针,来判断输入的年份是否为闰年。传值方式会复制变量的...

    Intent的简单使用

    现在,我们重点关注Intent在3个类之间的传值。在Android中,通常有以下几种方式: 1. **通过putExtra()和getExtra()方法**:在创建Intent时,可以使用`putExtra(String name, Parcelable value)`将数据作为额外参数...

Global site tag (gtag.js) - Google Analytics