zoukankan      html  css  js  c++  java
  • 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提供给程序员用来释放对象或资源的方法,但是尽量少用





  • 相关阅读:
    我的知识库(4) java获取页面编码(Z)
    知识库(3)JAVA 正则表达式 (超详细)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts
    某人总结的《英语听力的技巧 》,挺搞的
    我的知识库(5)java单例模式详解
    构建可扩展程序
    SerialPort (RS232 Serial COM Port) in C# .NET
    Python学习笔记——String、Sequences
    UI题目我的答案
    jQuery学习系列学会操纵Form表单元素(1)
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7582149.html
Copyright © 2011-2022 走看看