`
qingxing30
  • 浏览: 32070 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java基础

阅读更多

Java垃圾回收机制 

Java的垃圾回收机制是Java虚拟机提供的一种内存回收机制,Java程序员不需要直接控制内存回收,Java程序的内存分配和回收都是Java虚拟机自动进行的。Java虚拟机会负责回收那些不再使用的内存,这种机制被称为垃圾回收。

 

Java垃圾回收,回收的是无任何对象引用指向的内存空间,而不是对象本身。

 

我们可以显示的调用System.gc()方法 或 Runtime.getRuntime().gc()来建议Java虚拟机进行内存回收;然而Java虚拟机不一定会马上进行内存回收,调用这两个方法的作用仅仅是我们建议Java虚拟机进行内存回收而已。

Java虚拟机垃圾回收是不可预知的;垃圾回收有可能发生在CPU空闲的时候;有可能发生在内存消耗到一定程度的时候;

 

Java虚拟机回收的是堆中的内存空间;

 

面向对象的基本特征

面向对象的基本特征有:封装、继承、多态

 

封装:所有封装,只的是把对象的具体实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;

 

继承:继承指的是子类继承父类后,将直接获得父类的属性和方法。

 

多态:子类对象可以直接赋值给父类变量,但运行的时候依然表现出子类的行为特征。这就意味着同一个类型的对象在执行同一个方法的时候,可能表现出多种行为特征。

 

对象、引用和指针

Java把内存划分成两种:栈内存和堆内存;

Java中,在函数中定义的基本类型的变量和对象的引用变量,都是在函数的栈内存中分配;

当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量分配的内存空间。

 

堆内存用来存放由new创建的对象和数组;

Person p = new Person();

这个过程:

Java在栈开辟一个空间存放p,在推空间中开辟空间存放Person对象;栈中的p保存了堆空间中Person对象的引用。

Person p1 = new Person();

Person p2 = p1 ;

过程:

栈空间开辟了p1和p2两块内存空间,他们保存的地址都指向了堆空间Person对象。

一个栈内存只能指向一个对内存空间,如果要想再指向其他的堆内存空间,则必须先断开已有的指向才能分配新的指向

 

Java中常用的内存区域

1、栈空间:保存所有的对象的名称(保存了堆空间内存的引用)。

2、堆空间:保存每个对象的具体属性内容。

3、全局数据区:保存static类型的属性。

4、全局代码区:保存所有的方法定义。

 

对象的this引用

1、构造器中:代表该构造器正在初始化的对象。

2、方法中:表示调用该方法的对象。

 

Java方法的参数传递机制

1、基本类型(boolean,byte,short,char,int,long,float,double)是值传递。所谓值传递,可以理解为Java把原来对象复制了一份,把这个复制出来的值在方法中传递,故在传递过程中,该值被修改后,不会影响原来的值。

2、对象类型也是值传递。Java复制了一份对象引用的地址,来进行传递。

 

多态

class BaseClass{

public void test(){

System.out.print("BaseClass");

}

}

 

class SubClass extends BaseClass{

public void test(){

System.out.print("SubClass");

}

}

 

public static void main(String[] args){

BaseClass base = new BaseClass();

base.test();//调用的是BaseClass里的test方法

 

BaseClass sub = new SubClass();

sub.test();//调用的是SubClass里的test方法(如果SubClass子类没有重写test方法,则调用的是BaseClass里的test方法)

}

BaseClass sub = new SubClass();构造方法的调用过程

先调用BaseClass无参的构造方法,后调用SubClass的无参构造方法。

BaseClass sub = new SubClass("sanling");构造方法执行过程

先调用BaseClass无参的构造方法,后调用SubClass的有参构造方法。

 

 

 

 

 

分享到:
评论

相关推荐

    JAVA零基础到高级进阶特训营 JAVA多线程并发设计+Spring高级+数据库开发+JAVA基础等

    这套课程既可以作为从零基础开始学习的JAVA基础到高级学习教程,对于有JAVA基础的同学来说可以略过前面的JAVA基础章节,直接学习后续的JAVA高级部分课程。更可以灵活的作为章节技术,进行针对性的JAVA学习。还是要...

    免费开源Java 基础镜像

    Fabric8 Java 基础镜像 这是各种 Fabric8 项目中使用的 Java Docker 基础镜像的存储库。 这些镜像的 Docker 构建文件由Fish-pepper生成 ,fish-pepper 是一个用于生成 Docker 构建的复杂模板系统。fish-pepper允许...

    java基础知识大全(必看经典)

    Java 基础知识大全 本资源摘要信息是 Java 基础知识大全的总结,涵盖了 Java 语言的基本概念、特点、历史发展等方面的知识点。以下是本资源摘要信息的详细内容: 一、 Java 语言的特点 * 面向对象:Java 语言是...

    《Java基础入门》-课后习题答案.doc

    本文将对《Java 基础入门》课后习题答案进行总结,涵盖了 Java 基础知识点,包括 Java 开发入门、Java 基础类、变量类型、运算符、控制流语句、方法重载等。 一、Java 开发入门 * Java EE、Java SE、Java ME 是 ...

    java基础课件java基础课件java基础课件

    java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础课件java基础...

    JAVA 基础有由浅入神中高级视频

    市面上目前流传的java基础视频教程都是讲一些最基础的java语法和相关API的应用,然而用人单位对初级程序员的要求越来越高,那些讲解java基础语法的视频教程已经无法满足大众的学习要求。本套视频教程录制完中国第一...

    Java基础教程(第3版)_ppt.rar

    《Java基础教程(第3版)_ppt.rar》是一个包含多个PPT文件的压缩包,主要用于教学目的,提供了关于Java编程语言的基础知识。这个资源涵盖了Java的核心概念,从基本的类和对象到高级特性如多线程和数据库操作。以下是...

    Java基础案例教程(第2版)-教学设计.zip

    《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其教学设计旨在通过实例引导学生深入理解Java语言的核心概念。本教程覆盖了从环境搭建到程序设计的各个环节,旨在帮助学生建立起坚实的...

    Java基础加强系列视频课程

    资源名称:Java基础加强系列视频课程资源目录:【】黑马程序员Java基础加强(01-10)【】黑马程序员Java基础加强(11-20)【】黑马程序员Java基础加强(21-30)【】黑马程序员Java基础加强(31-40)【】黑马程序员...

    传智播客.黑马程序员《Java 基础入门》课后习题答案

    《Java 基础入门》课后习题答案 第 第 1 章 Java 开发入门 一、填空题 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、选择题 1、ABCD 2、C 3、D 4、B 5、B 三、简答题 1、 面向...

    Java基础实例大全.

    Java基础实例大全适合于初学者 这里是所有Java技术点的集合 每个技术点都有对应的例子。 经典制作不容错过。。。 特别是对Java书籍很迷惑,想看看实际例子的朋友,这里就有你所需要的. Java基础实例大全适合于初学...

    《Java基础案例教程(第2版)》课后习题答案1

    【Java基础知识点】 1. **Java的起源与特性** - Java是由SUN Microsystems公司(后被Oracle收购)开发的一种面向对象的编程语言。 - Java有三个主要版本:Java Standard Edition (JavaSE),用于桌面应用;Java ...

    黑马程序员java基础试题、笔记

    "黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...

    Java 基础入门(传智播客出品).pdf

    Java 基础入门,适合初学入门java的同学

    java基础练习题(基础)精选

    Java基础练习题由本人整理并上传,非常适合于初学者加强巩固自己的知识,编程学好的唯一途径就是多练习。

    java基础知识的培训ppt

    java基础知识的培训ppt,对于java初学者来说可以有一些作用。

    java基础案例教程

    java基础的案例分析和实例教学,适合新手及回顾查阅,对于夯实基础有好处

    java基础知识 ppt

    java基础知识,帮助初学者更快更好地掌握java。ppt内容具体易懂,希望对刚接触java的初学者有所帮助。

Global site tag (gtag.js) - Google Analytics