包的定义与使用

专门用来存放类的,通常功能相同的类存放在相同的包中。
包的声明只能位于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. mac os开发之简单动画

    [NSAnimationContextbeginGrouping]; [[NSAnimationContextcurrentContext] setDuration:.1f]; [[self.wind ...

  2. 解决老是提示找不到Mapper文件无法执行定义的方法问题!

    尼玛,被mybatis的*Mapper.xml文件害惨了!整整两天都在围绕这个问题转圈! 先看问题长啥样吧!下面是通过逆向工程生成的Mapper.xml文件,包路径什么的都没有错! 但是每次调用Map ...

  3. VC2010下Qt5的中文乱码问题

    要搞清楚这个问题,先要弄明白编码.但是编码问题实在太复杂,这里肯定讲不开. 我先找一个例子,比如:“中文” 的 Unicode 码点/UTF8编码/GBK 分别是多少. 先去这个网站,输入 “中文” ...

  4. jquery实现仿京东侧边栏

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. Web应用程序开发的标准架构

  6. 纯css3实现的幽灵按钮导航

    之前为大家介绍了好几款导航菜单,今天再给大家带来一款css3实现的幽灵按钮式的导航菜单.导航界面非常好看.右侧是一个css3实现的动画消息图标.效果图如下: 在线预览   源码下载 实现代码: htm ...

  7. 云端中间层负载均衡工具 Eureka

    亚马逊提供了一个负载均衡工具 Elastic Load Balancer,但针对的是终端用户 Web 流量服务器,而 Eureka 针对的是中间层服务器的负载均衡.AWS 固有的环境,对 IP 地址. ...

  8. rufus/scheduler

    之前先在initializers 文件夹下建立了一个task.rb ,rails服务启动的时候执行,本地没问题,可是服务器上启动了3个进程,会执行3遍,解决方法是 把task.rb 放到 script ...

  9. Ajax轮询——“定时的通过Ajax查询服务端”

    Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...

  10. spring配置事务 元素 "tx:annotation-driven" 的前缀 "tx" 未绑定

    在进行spring与mybatis整合时,启动项目报错,控制台提示“元素 "tx:annotation-driven" 的前缀 "tx" 未绑定”. 经过查找, ...