• Java精选笔记_面向对象(包、访问控制、内存机制、垃圾回收机制)


    包的定义与使用

    专门用来存放类的,通常功能相同的类存放在相同的包中。
    包的声明只能位于Java源文件的第一行


    Java语言中的常用包

    java.lang:包含Java语言的核心类,如String、Math、System和Thread类等,使用这个包中的类无须使用import语句导入,系统会自动导入这个包下的所有类。
    java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。
    java.net:包含Java网络编程相关的类和接口。
    java.io:包含了Java输入、输出有关的类和接口。
    java.awt:包含用于构建图形界面(GUI)的相关类和接口。
    java.lang:包含一些Java语言的核心类,如String、Math、System和Thread,提供常用功能


    给Java应用打包

    安全、节省空间、可移植性

    访问控制

    private(类访问级别)、default(包访问级别)、protected(子类访问级别)和public(公共访问级别)从小到大


    private(类访问级别) :如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问,实现类的良好封装
    default(包访问级别) :如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其它类访问
    protected(子类访问级别) :如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问
    public(公共访问级别) :这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中

    用public修饰的类成员(包括字段和方法)称为公有的,公有成员允许Java系统中所有的类访问,外界可以直接存取公有数据,调用公有方法

    用private修饰的类成员称为私有的,类的私有成员只能被这个类的方法直接访问

    用protected修饰的类成员称为被保护的。类的被保护成员允许其子类继承。如果一个类有派生子类,为了使子类能够直接继承父类的成员,则把这些成员(大部分是数据)说明为被保护的。

    如果类成员前面没有任何关键字修饰,则称为默认的。默认的类成员除了允许被其归属的类访问外,还允许同一个包中的其他类访问


    内存机制

    1.存放局部变量
    2.不可以被多个线程共享
    3.空间连续,速度快

    1.存放对象
    2.可以被多个线程共享
    3.空间不连续,速度慢,但是灵活

    方法区

    1.存放类的信息:代码、静态变量、字符串常量等等
    2.可以被多个线程共享
    3.空间不连续,速度慢,但是灵活


    程序执行过程内存分析

    新建对象时,引用类型的数据都是null,基本数据类型 int是0,string是null,boolean是false(默认初始化)
    方法:参数传递的值是 值传递
    局部变量 必须初始化,成员变量会被系统默认初始化。
    栈:自动分配连续的空间,后进先出,一般用来放置局部变量,数据使用完毕之后,会自动释放
    堆:不连续,用来放置 new出来的对象,堆中的数据都会有默认初始化值。引用类型的数据都是null,基本数据类型 int是0,string是null,boolean是false。
    方法区:属于堆的一部分,存放类的信息(代码)、static变量、常量池(字符串常量)

    解析

    1、主函数中定义一个  int  x=3;
    主函数加载时,主函数就在内存中的栈中 开辟一个空间,此空间中就会定义一个变量,并且赋值为3
    2、主函数中创建一个 int[] x=new int[3];
    左边 int[] x,在栈内存中定义了一个变量 x
    new int[3],在堆内存中开辟了一个空间,每个在堆内存中存在的数据都会有一个地址值。
    = 时,就将x的引用指向了new 对象在堆内存中的地址值。

    JAVA语言中除基本类型之外的变量类型,都称之为引用类型。
    JAVA中对象是通过引用reference对其操作的。
    操作对象就是操作地址

    垃圾回收机制Garbage Collection

    对象无人使用了,就变成了垃圾
    对象空间的分配:使用new关键字创建对象即可
    对象空间的释放:将对象赋值null即可,垃圾回收器将负责回收所有“不可达”对象的内存空间
    当一个对象在内存中被释放时,它的finalize()方法会被自动调用


    要点

    程序员无权调用垃圾回收器
    程序员可以通过System.gc()方法。通知GC运行,但是jAVA规范并不能保证立刻运行
    finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用





  • 相关阅读:
    二分-hdu-4768-Flyer
    UVa 340 Master-Mind Hints (优化查找&复制数组)
    Android中的多媒体显示之图片缩放
    asp.net总结(一)
    JAVA中JNI的简单使用
    HDFS集群balance(2)-- 架构概览
    [置顶] 我的Android进阶之旅------>介绍一款集录制与剪辑为一体的屏幕GIF 动画制作工具 GifCam
    HDFS集群balance(3)-- 架构细节
    项目总结——深入浅出socket网络编程
    HDFS集群balance(4)-- 测试计划
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7582149.html
Copyright © 2020-2023  润新知