this关键字,值传递和引用传递

1.this关键字

this关键字的用途
1.用于区别属性和参数(加this表示属性,没有加表示参数)
2.this关键字可用来调用类中的构造方法(所带的参数必须与调用的构造方法一致)
代码实例:
//定义一个学生类
public class Student{
    //定义属性
    private String name;
    private int grade;
    private int score;
    //创建构造方法
    public Student(){
       System.out.println("调用了第一个构造方法");
    }
    public Student(String name,int grade,int score){
       this();//调用第一个构造方法
       this.name=name;/*this.name中的name表示学生类的属性name,name表示参数。若该处为name=name,则根据java的就近原则,将该方法中的局部变量即参数name赋值给了参数name,无意义*/
       this.grade=grade;
       this.score=score;
       System.out.println(name+"的"+grade+"分数是:"+score);
      
    }
}

this关键字表示当前调用方法的对象
代码实例:
Student stu=new Student("Tom",3,79);
创建该对象时,stu调用构造方法,故该构造方法中的this表示stu。


2.java数据类型分类

(1).基本数据类型(八大基本数据类型)
8bit       byte      字节型     -128~127
16bit      short     短整型
32bit      int       整型
64bit      long      长整型

32bit      float     浮点型单精度     //单精度与双精度的区别在于表示的范围不同
64bit      double    浮点型双精度

16bit      char      字符型
           boolean   布尔型   取值ture或false
(2).引用数据类型(对象类型,类类型)
a.说有由class.abstract class和interface定义的类,抽象类,接口。
b.数组   int []array=new array[10];

使用了new关键字的,就属于引用数据类型。
String是Java中的一个类,是引用数据类型。


3.值传递

   值传递适用于Java中的八大基本数据类型和String。
   值传递的方式是将变量i的值拷贝一份存入另一个变量score,此时在栈内存中就存在了两块独立的存储空间,分别存储了i和score的值,这是改变其中一个的值对另外一个的值无影响。若想要改变两者的值,需在改变后将值再重新赋值一次。
代码实例:
Student类中的方法:
public void study(int score){
      score++;
      System.out.println(name+"学习了一次学分加一,学分为"+score);//输出score为71
   }
TeachTest中调用该方法:
   { int i=70;
    stu.study(i);
    System.out.println("值传递后i的值:"+i);}//输出的i为70
i传值后并未改变自身的值

4.引用传递

    引用传递适用于引用数据类型
    引用传递是将对象名stu1中存储的地址拷贝一份存入stu2中,此时两者指向同一地址即指向同一对象,通过其中一个对象名对其属性进行修改,那么另外一个的也会被修改。(相当于1个人有2个名字)
代码实例:
    tea1=tea2;
    tea1.teach(stu);
    tea2.setName_Major("Jim","English");
    tea1.teach(stu);
通过对象名tea2改变对象的属性,对象名tea1的也被改变。

猜你喜欢

转载自yangxing7211.iteye.com/blog/1835513