java学习笔记15--引用传递

java学习笔记15--引用传递

范例一

  1. class Demo{
  2. public int temp = 30;
  3. }
  4. public class T {
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Demo d1 = new Demo();
  8. d1.temp = 50;
  9. System.out.println("fun()方法调用之前:"+d1.temp);
  10. fun(d1);
  11. System.out.println("fun()方法调用之后:"+d1.temp);
  12. }
  13. public static void fun(Demo d2){
  14. d2.temp = 1000;
  15. }
  16. }

内存分析:

范例二

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. String str1 = "hello";
  5. System.out.println("fun()方法调用之前:"+str1);
  6. fun(str1);
  7. System.out.println("fun()方法调用之前:"+str1);
  8. }
  9. public static void fun(String s2){
  10. s2 = "MLDN";
  11. }
  12. }

内存分析

范例三

[java] view plaincopy

  1. class Demo{
  2. String temp = "hello";
  3. }
  4. public class T {
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Demo d1 = new Demo();
  8. d1.temp = "world";
  9. System.out.println("fun()方法调用之前:"+d1.temp);
  10. fun(d1);
  11. System.out.println("fun()方法调用之后:"+d1.temp);
  12. }
  13. public static void fun(Demo d2){
  14. d2.temp = "MLDN";
  15. }
  16. }

内存分析

本程序与范例一的流程完全是一样的,范例二是特殊的,因为String是一个特殊的类,其内容不可改变。

时间: 2024-07-30 23:54:57

java学习笔记15--引用传递的相关文章

Java学习---- 数组的引用传递

1. public class ArrayRefDemo01{ public static void main(String args[]){ int temp[] = {1,3,5} ; // 利用静态初始化方式定义数组 fun(temp) ; // 传递数组 for(int i=0;i<temp.length;i++){ System.out.print(temp[i] + ".") ; } } public static void fun(int x[]){ // 接收整型

我的java学习笔记(15)关于接口

1.接口技术主要用来描述具有什么功能,而并不给出每个功能的具体实现. 2.一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 3.在java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类的需求要遵从接口描述的统一格式进行定义. 4.接口中的所有方法自动的属于public. 5.接口决不能含有实例域,也不能在接口中实现方法. 6.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 7.可以将接口看成是没有实例域的抽象类.但是这两个概念还是有区别的.

Java学习笔记-方法引用

方法引用(Method Reference) 上一篇中记录了Lambda表达式,其可以创建匿名方法.当Lambda表达式只是调用一个存在的方法时,可以采用方法引用(JDK8具有的特性).如下: 1 public class Person { 2 3 public enum Sex { 4 MALE, FEMALE 5 } 6 7 String name; 8 LocalDate birthday; 9 Sex gender; 10 String emailAddress; 11 int age;

Java学习笔记15

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中toString()方法是如何定义的: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 通过以下程序可以看出toString()方法返回的是这个类的全称

Java学习笔记之深入理解引用

引言:Java中数据传递的方式,除了基本数据类型是按照值传递,其它类型全部是按照引用传递,这和C++有很大区别,但是很多网上文章都解释的不清楚,甚至是错误的,在查阅资料之后,下面整理出一个比较容易理解的版本. 我们知道引用根据引用的类型不同有许多名称,如字符串引用,数组引用等等. 一.栈内存和堆内存 我们数组来引出和解释这两个概念. 数组引用变量只是一个引用,这个引用可以指向任何有效的内存. 简单的理解就是,这个引用是用来存放数据地址的(数据地址指向数据在内存中的存储位置),在声明引用变量的时候

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java中String是不是引用传递?

本文转自:http://www.jcodecraeer.com/a/chengxusheji/java/2012/0805/340.html 编者语:书上都说string是引用类型,但事实上我所看到的string和所谓的值类型没有什么区别,但通过看以下的文章,明白了: 1.string a="abc";之后,如果a="xy",则是a并没有改变内存中已经存在的"abc",而是又创建了另外一个实例.实际上相当于:string a=new String