类和对象(2)

本文详细介绍了Java编程中的`this`关键字,包括如何用于访问对象属性和调用构造函数。同时,解释了引用类型的概念,区分了值传递和引用传递的区别。此外,还探讨了实例变量和局部变量的特性,以及它们的初始化过程和默认值。通过这些内容,读者可以更好地理解Java中对象和变量的管理方式。

1、this关键字

        1.1、点取属性、点取方法

        this关键字用来指向当前对象。

        Java编程语言自动将所有的实例变量和方法与this关键字联系在一起。

        当成员变量与方法中的局部变量名称相同时,this.变量代表当前对象的成员变量(大括号外边的),不加this的变量代表局部变量(大括号里边的)。

        当变量名称不冲突时,this可以省略。

        1.2、this()调用构造函数

        构造方法可以存在多个,区别在于构造方法的形式参数数量。

        在构造方法中,this()代表当前类的构造方法。可以相互调用。但是必须出现在构造方法的第一句,且一个构造方法只能调用一个不同构造方法。

2、引用类型

        2.1、什么是引用类型

        除去8个基本数据类型,其他的都是引用数据类型,自己定义的class都是引用类型,可以像基本类型一样使用。

        比如:    MyPoint mp=new MyPoint();     mp就是一个引用类型的变量。

        2.2、值传递和引用传递

        值传递:按照参数的值传递,传递的是值的拷贝,传递后变量的变化不会相互影响。

        如:     int a=10; int b=a;   a++;      打印的结果是a为11,b为10;

        引用传递:按照参数的引用传递,传递的是引用的地址。传递前和传递后指向同一个地址(同一个内存空间),相互影响。

        如:    class A{ int x;} 

        A a1=new A();   A a2=a1;    a1.x=10;      打印a1.x的结果为10,a2.x的结果也为10;

3、变量

        3.1、实例变量和局部变量

        ~实例变量:声明在类中,永远有默认值。不赋值会有初值。放在堆内存中。

        class A{

                String name;

        }

        这个类中的name就是一个实例变量,如果没有初始值就为null。但必须实例A才可使用。

        ~局部变量:声明在方法中,没有初始默认值,在赋值前使用会导致编译错误。放在栈内存中。(所有方法中的变量都在栈内存中)       

        public void method(){

                String name=“张三”;              无默认值,需要赋值

        }

这个方法中,name就是一个局部变量。当方法执行结束后,变量所占用的内存空间就会销毁。

        3.2、实例变量的初始化

        任何变量都需要初始化后才可以使用,默认为指定的初始化值。如果初始化没有赋值则按下标赋值。

数据类型初始值
byte、short、int、long0(long为0L)
char / double / float\u0000 / 0.0d / 0.0f
boolean/其他false/null

        注:空值不引用任何对象,否则会导致空指针一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值