java学习日记2022.5.27

面向对象的深入

一、对象和引用

在java中除了基本类型的变量其他的变量都是引用类型,我们的对象就是通过引用类型的变量对其中的元素进行访问和操作的。

我们都知道创建对象的方法:

Do d1=new Do();

这里我们用内存图去理解它

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87dVr4Fs-1653647587836)(C:\Users\xichen\AppData\Roaming\Typora\typora-user-images\1653396532115.png)]

首先创建对象的第一步是加载类,将类信息从硬盘读到java虚拟机内存里的方法区,这时类中动态变量和方法只是存在内存中方法区但是还不能被访问,没有加载。当我们创建对象时,便会在堆内存中开辟一块只属于这个对象的内存空间,创建一个实体的对象,每创建一个对象就会将类中成员变量和方法复制一份存入堆内存中对应的对象地址,但是这个时候创建的对象就像一个没有吸管的饮料,我们喝不到它的内容,这时候就需要创建一个Do类引用变量,让这个实体的变量指向该对象在堆内存中的地址,通过这个变量去访问对象中的变量和方法。

二、值传递和引用传递

所以在java中方法调用传递参数时,也有两种方式:

值传递:

值传递时,形参的类型是基本数据类型,传递后不改变实际参数的值。

引用传递:

引用传递时,形参的类型是引用数据类型,传递的是地址,所以实参和形参会指向同一个地址,对形
参的操作就是对实际参数的操作,方法结束后,使实际参数的值会受到影响。

总结:

基本类型传递的是数据值本身,传递后与实参无关。引用类型传递的是对对象的引用,而不是对象
本身。

三、this关键字

this关键字代表当前对象,可以引用成员变量和方法。

比如我们在通过构造方法或者成员方法传递参数时,如果出现形式参数名和对象成员变量名相同的情况。就可以用this关键字来区分对其进行操作。

public class Took{
    int a;
    public Took(int a){
        this.a=a
    }
    public static void main(String[] args){
        int a=10;
        Took t1=new Took(a);
    }
    }

上述代码若不加this就相当于形参把自己的值再给自己赋了一次,该对象的变量值t1.a仍是0。

四、static关键字

static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。

特点:

1、被static修饰的成员,在类加载时会随着类加载在java虚拟机内存的方法区存储。而非静态的只能等创建对象时和对象一起存储在堆内存中。(这里再次使用上面的内存图)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfN4JpLK-1653647587843)(C:\Users\xichen\AppData\Roaming\Typora\typora-user-images\1653396532115.png)]

2、比对象提前存在。

3、被static修饰的成员会共享给每一个创建的对象。

4、因为其随着类加载存储在方法区,所以在未创建对象时可以使用类名直接调用,动态的成员则不能用类名直接调用。

static属性:

1、静态属性是类的所有对象共享的,不管创建了多少个对象,静态属性在内存(方法区)中只有一个。

2、被static修饰的方法可以使用对象调用,也可以直接用类名调用,一般建议用类名调用。

3、在static方法内部只能访问类的static属性,不能访问类中的动态属性,因为static属性优先于动态属性先加载。

五、代码块

代码块在类中声明,可以看成一个没有名称的方法体,代码块分实例代码块和静态代码块
实例代码块:
{

//在每次创建对象时都会被调用一次

}
静态代码块:
static {
//在类加载时调用一次,类加载一次后再创建对象时不会再次调用
}

六、包

1、命名规范

在包名中,可以使用“.”号来区分包的级别,包名一般情况下是小写
第一级 指该项目的类型,如com,org,gov等
第二级 指项目所开发或者运行的公司名称,如:mihayou,huawei

第三级 指项目的名称,如:bcms,oa,erp,cms等
第四级 指项目模块的名称,如:bean,action,exception等

2、包可以更好得管理逻辑相关的类,可以控制不同包之间的访问权限
3、导入外部包的类,使用关键字“import”(比如常见的:import java.util.Scanner; )

七、访问权限修饰符

Java语言共有四个权限访问修饰符,权限从大到小依次为:
(1)public :公共权限,被public修饰的类、属性、方法。可以被任意类访问
(2)protected:受保护的权限 被protected修饰的属性、方法。可以被同包里的其他类访问,如果不是同包类,必须导包,并让该类继承被protected修饰属性、方法的类
(3)default:同包权限 修饰类、属性、方法。只能被同包的类访问
(4)private:私有权限 修饰属性、方法。 只能在本类中访问

注意:

private和protecte不能修饰类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值