美文网首页
Java面向对象-引用传递

Java面向对象-引用传递

作者: 筱笑 | 来源:发表于2017-07-18 10:00 被阅读12次

一、引用传递

【案例-1】

引用传递-1.png
代码
class Ref1{
    int temp = 10;
}
public class Demo08 {
    public static void main(String[] args) {
        Ref1 r1 = new Ref1();
        r1.temp = 20;
        System.out.println(r1.temp);
        tell(r1);
        System.out.println(r1.temp);
    }
    public static void tell(Ref1 r2) {
        r2.temp = 30;
    }
}
结果:
20
30

【案例-2】

引用传递-2.png
代码
public class Demo09 {
    public static void main(String[] args) {
        String str1 = "hello";
        System.out.println(str1);
        tell(str1);
        System.out.println(str1);
    }
    public static void tell(String str2) {
        str2 = "jike";
    }
    
}
结果:
hello
hello

【案例-3】

引用传递-3.png
代码
class Ref2{
    String temp = "hello";
}
public class Demo10 {
    public static void main(String[] args) {
        Ref2 r1 = new Ref2();
        r1.temp = "jike";
        System.out.println(r1.temp);
        tell(r1);
        System.out.println(r1.temp);
    }
    public static void tell(Ref2 r2) {
        r2.temp = "xueyuan";
    }
}
结果:
jike
xueyuan

二、this关键字

使用
  • 表示类中的属性和调用方法。
  • 调用本类中的构造方法。
  • 表示当前对象。
代码一
class People{
    private String name;
    private int age;
    
    public People(String name,int age){
        this();//通过this调用构造方法,必须方法构造方法的首行
    
        //通过this调用本类中的属性
        this.name = name;
        this.age = age;
    }
    
    //无论什么情况下都要执行此方法
    //需要在其他构造方法中调用此方法
    public People(){
        System.out.println("无参数构造方法");
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void tell() {
        //通过this调用当前类中的方法
        System.out.println("姓名:"+this.getName()+"  "+"年龄:"+this.getAge());
    }
}
public class Demo11 {
    public static void main(String[] args) {
        People p = new People("张三", 30);
        p.tell();
    }
}
结果:
无参数构造方法
姓名:张三  年龄:30

代码二

package cn.sec.ch02;
class People1{
    public void tell() {
        System.out.println(this);
    }
}
public class Demo12 {
    public static void main(String[] args) {
        People1 p1 = new People1();
        System.out.println(p1);
        p1.tell();
        //通过People1实例化的对象和this得到的对象是一个对象
        //通过this可以表示当前对象
    }
}
结果:
cn.sec.ch02.People1@7852e922
cn.sec.ch02.People1@7852e922

三、static关键字

  • 使用static声明属性:static声明全局属性
  • 使用static声明方法:直接通过类名调用
  • 注意点:使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。
示例一
代码
class PersonA{
    String name;
    private static String country = "北京"; //声明成静态的,是大家公有的属性
    public PersonA(String name){
        this.name = name;
    }
    
    public static String getCountry() {
        return country;
    }
    public static void setCountry(String country) {
        PersonA.country = country;
    }

    public void tell() {
        System.out.println("姓名:"+name+"  出生地:"+country);
    }
}
public class Demo13 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
         PersonA.setCountry("上海");//静态的方法通过类名调用 ,可以在实例化之前调用
         PersonA pA1 = new PersonA("张三");
//       PersonA.country = "上海"; //静态的属性通过类名调用  
         pA1.tell();
         PersonA pA2 = new PersonA("李四");
//       pA2.country = "上海";
         pA2.tell();
         PersonA pA3 = new PersonA("王五");
//       pA3.country = "上海";
         pA3.tell(); 
    }
}
结果:
姓名:张三  出生地:上海
姓名:李四  出生地:上海
姓名:王五  出生地:上海
示例二
代码
public class Demo14 {
    
    private static int i = 10;
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。
        System.out.println(i);
        tell();
    }
    public static void tell() {
        
    }
}

相关文章

  • Java面向对象-引用传递

    一、引用传递 【案例-1】 【案例-2】 【案例-3】 二、this关键字 使用 表示类中的属性和调用方法。调用本...

  • 【JAVA基础】函数知识

    1.函数参数传递方式 虽然java通过引用操作对象,所有的对象变量都是引用,然而,java不能通过引用传递方法参数...

  • Java基础-面向对象-值传递与引用传递

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / Ja...

  • java的String值传递还是引用传递

    java值传递还是引用传递 一般可以这样认为基础类型是值传递,而对象封装是引用传递 对于test。传入对象,以后都...

  • Java 浅拷贝和深拷贝

    java中传递为值传递,对于引用类型,改变值后,原对象及引用对象值将都改变,最近刚好看java中浅拷贝和深拷贝问题...

  • java的参数传递机制

    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承...

  • Java中的按值传递和按引用传递

    1.在java中传递基本数据类型是按值传递的2.在Java中传递对象是按"引用传递"的,引用传递是在C语言中的指针...

  • Java值传递和引用传递

    Java中无论基础数据类型还是引用变量,Java参数传递都是值复制的传递过程.对于引用变量,复制指向对象的首地址

  • JAVA是按值传递还是按引用传递

    java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用...

  • Java核心知识点(二)

    Java面向对象基本概念——引用 Java语言中除基本类型之外的变量类型都称之为引用类型 Java中的对象是通过引...

网友评论

      本文标题:Java面向对象-引用传递

      本文链接:https://www.haomeiwen.com/subject/mlrohxtx.html