包的定义与使用

专门用来存放类的,通常功能相同的类存放在相同的包中。
包的声明只能位于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提供给程序员用来释放对象或资源的方法,但是尽量少用

Java精选笔记_面向对象(包、访问控制、内存机制、垃圾回收机制)的更多相关文章

  1. Java精选笔记_面向对象(慨念、类和对象)

    面向对象概念 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 相对于面向过程而言.是一种思想,强调的是功能的对象. 面向对象的本质:以类的方式组织代码, ...

  2. Java精选笔记_面向对象(构造方法、this关键字、static关键字、内部类)

    构造方法constructor构造器 构造方法的定义 [修饰符]  类名 (形式参数列表){         //语句 } 构造器用于构造该类的实例.作用:用来初始化对象!一般由系统在创建对象(即类的 ...

  3. Java精选笔记_面向对象(多态、异常)

    多态 概述 可以理解为事物存在的多种体现形态.同样的引用调用同样的方法却做了不同的事情 多态的本质是:一个程序中同名的不同方法. 多态的体现 父类的引用指向子类的对象,父类的引用接收子类的对象. 多态 ...

  4. 【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制

      Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来.C/C++程序员既拥有每一个对象的所有权,同时也担负着每一个对象生 ...

  5. Java精选笔记_多线程(创建、生命周期及状态转换、调度、同步、通信)

    线程概述 在应用程序中,不同的程序块是可以同时运行的,这种多个程序块同时运行的现象被称作并发执行. 多线程可以使程序在同一时间内完成很多操作. 多线程就是指一个应用程序中有多条并发执行的线索,每条线索 ...

  6. Java精选笔记_国际化

    国际化 什么是国际化 指软件在开发时就应该具备支持多种语言和地区的功能,当应对不同国家和地区的用户访问,针对不同国家和地区的用户,提供相应的.符合来访者阅读习惯的页面和数据. 由于国际化interna ...

  7. Java精选笔记_自定义标签

    自定义标签 自定义标签入门 什么是自定义标签 自定义标签可以有效地将HTML代码与Java代码分离,从而使不懂Java编程的HTML设计人员也可以编写出功能强大的JSP页面 JSP规范中定义了多个用于 ...

  8. Android_对android虚拟机的理解,包括内存管理机制垃圾回收机制。dalvik和art区别

    虚拟机很小,空间很小,谈谈移动设备的虚拟机的大小限制 16M ,谈谈加载图片的时候怎么处理大图片的,outmemoryExceptionBitmapFactory.option 垃圾回收,没有引用的对 ...

  9. [CLR via C#]21. 自动内存管理(垃圾回收机制)

    目录 理解垃圾回收平台的基本工作原理 垃圾回收算法 垃圾回收与调试 使用终结操作来释放本地资源 对托管资源使用终结操作 是什么导致Finalize方法被调用 终结操作揭秘 Dispose模式:强制对象 ...

随机推荐

  1. CentOS7.3 搭建Openvpn

    环境:CentOS Linux release 7.3.1611 (Core) 查看os版本命令:[root@openvpn ~]# cat /etc/redhat-release 命令记录如下: y ...

  2. js冒泡事件

    一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处 理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个 ...

  3. LeetCode: Binary Tree Preorder Traversal 解题报告

    Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' valu ...

  4. JFinal概述

    JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...

  5. C语言 · 核桃的数量

    历届试题 核桃的数量   时间限制:1.0s   内存限制:256.0MB        锦囊1 最小公倍数. 锦囊2 答案是a, b, c的最小公倍数.   问题描述 小张是软件项目经理,他带领3个 ...

  6. Eclipse里安装插件

    1.在eclipse中选择 help->install new software. 2.在work with 框中输入:Indigo - http://download.eclipse.org/ ...

  7. Linux服务器同步时间

    进行Linux服务器的时间同步是一件需要注意的事情,不然,集群中的服务器时间不同将导致许多奇怪问题发生, 如果没有安装crontab,那么,使用yum install crontabs进行安装和启动, ...

  8. Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序

    Part1 环境搭建和工具安装 1.1 设置交叉编译环境 安装相关的编译工具: sudo apt-get install build-essential gcc-arm-linux-gnueabi 这 ...

  9. 树形结构 DropDownList

    前台 <asp:DropDownList ID="ddlOutType" runat="server" /> 后台代码: 先绑定第一级 string ...

  10. iOS开发小技巧--定义宏和pch文件的使用

    一.创建pch文件,默认跟项目同名 二.告诉系统,编译的时候要编译pch文件的步骤 三.把经常用到的宏  或者  分类 包含到这里