`

黑马程序员-编程基础02-小知识点

 
阅读更多

 

------- android培训java培训、期待与您交流! ----------

JavaDoc:

生成DOC文档的命令:javadoc -d 要存放到的目录 -author -version 源文件名.java

 

内存:

Java程序在运行时,需要为虚拟机分配一定的内存空间。为了提高运算效率,又对该内存空间进行了不同区域的划分,

每一片区域都有特定的数据处理方式和内存管理方式。

1.栈内存:用于存储局部变量,当数据用完后,所占空间会自动释放,并且是先进后出

2.堆内存:用于存储对象(数组也是对象),通过new创建的实例都存放在这里,它们都有一个内存地址,并且实体中的字段都有默认的

初始化值。如果实体不再被引用的时候,当垃圾回收器工作时会将其回收

3.方法区(共享区、数据区):存放类中的静态方法、成员方法、静态类变量

4.本地方法区:

5.寄存器:


面向对象:

面向过程:强调的是功能行为

面向对象:将功能封装进对象,强调的是具备了功能的对象。是复杂的过程简单化,从以前的执行者编程了现在的指挥者。

面向对象的三大特征:封装,继承,多态。

 

类:对现实生活中事物的描述,用于描述一类事物的共性。

对象:一类事物实实在在存在的实体。

接口:对一类事物的共同行为的抽象定义。使用接口降低了耦合性,提高了扩展性。

 

抽象类:

当多个类中出现功能相同,主体不同的时候,可以向上抽取功能定义,而不抽取主体定义。

* 抽象方法一定是定义在抽象类中的,因为类中只要存在抽象方法,则这个类也必须为抽象类

* 抽象方法和抽象类必须用abstract关键字修饰

* 抽象类不可以被实例化,因为调用抽象方法没意义

* 抽象类中的抽象方法想要被使用,必须由子类实现其所有抽象方法,再创建子类实例去调用

* 如果抽象类的子类只实现了部分抽象方法,则这个子类也必须是抽象类

 

构造代码块、构造函数、静态代码块

构造代码块:在构造器之前执行,为所有对象初始化

构造函数:为对应的对象进行初始化

静态代码块:随着类的加载而执行,为类初始化,值执行一次


this、static:

this:就是对调用当前方法的对象的引用

static修饰的成员,随着类的加载而加载(存在于方法区中),随着类的消失而消失,它的生命周期最长,优先于对象的存在,被所有对象共享,可以使用类名调用。


对象的创建过程:

1.加载对应的Class文件

2.静态代码块执行,为类初始化

3.在堆内存中开辟空间,分配内存地址

4.在堆内存中建立对象的特有属性,并默认初始化

5.对属性显示初始化

6.构造代码块初始化

7.对应的构造器初始化

8.将内存地址赋给栈内存中的引用变量

 

封装:

隐藏对象的属性和实现细节,只对外提供公共访问方式。这样就将变化隔离了起来,使用更为方便,提高了可重用性和安全性。

继承:

提高了代码的复用性,让类与类之间产生了关系,有了这个关系,才有了多态的特性。必须是类与类之间有所属关系(is a)才可以承。

Java只支持单继承,不支持多继承,因为多继承容易带来安全隐患,当多个父类中定义了相同的功能但内容不同时,子类对象不确定要运行哪一个,但是Java保留的这种机制,并用另外一种形式来体现,即多实现。

Java支持多层继承。

多态:

某一类事物的多种存在形态,例如猫和狗也是动物中的一种。在程序中表现为用父类类型的引用变量指向子类类型的对象。

多态大大的提高了代码的扩展性和可重用性,降低了耦合性

多态中成员函数的特点(非静态):------>动态绑定
编译:参阅引用变量所属类是否有调用的方法,有则通过,没有则失败
执行:参阅对象所属类是否有调用的方法,有则调用对象类的方法,没有则调用引用变量所属类的方法
多态中成员变量及静态成员函数:-------->静态绑定
编译和执行的时候都是参阅引用变量所属类,即均参阅左边的类。
其中静态成员函数,不依附于对象存在,所以引用是哪个类就执行哪个类的方法。

 

继承:is a,谁是谁的一种

聚集、聚合:has a,谁里面有谁

组合:部分和主体不可分割


覆盖(Override):

当子类继承了父类的时候,沿袭了父类的功能,但是能功能的内容不一样,这时就可以采用覆盖的方式来解决,保留从父类继承的功能,重写功能的内容

静态只能覆盖静态

 

final关键字:

final可以修饰类、方法、变量

 

final修饰的类不可以被继承

final修饰的方法不可以被覆盖

final修饰的变量为常量,只能被赋值一次

局部内部类只能访问被final修饰的局部变量

 

模版方法设计模式:

在定义功能时,功能的一部分是确定的,但也有一部分是不确定的,而确定的部分在使用不确定的部分,这时就可以把不确定的部分单独分装为一个抽象方法,具体功能由子类去实现

这种设计模式既提高了扩展性,也提高了复用性

 

内部类方位外部类成员(包括实例成员和静态成员)时,可以直接访问,因为内部类持有外部类实例的引用,格式为 外部类名.this

外部类访问内部类实例成员(内部类只能有实例成员)时,内部类的成员不管哪种访问级别对于外部类都是可以访问的,需要创建内部类实例

内部类访问内部类成员(实例成员)时,因为内部类实例是建立在外部类实例的基础上的,内部类对内部类的访问都要通过外部类来实现,内部类的成员不管种访问级别对于外部类都是可以访问的,所以类中的内部类与内部类之间可以互相访问而不受权限的控制

内部类(包括局部内部类,不包括静态内部类)中不能有静态成员,因为内部类是建立在外部类的实例上的,只有创建了外部类的实例后,内部类才会被加载,外部类的实例还没创建的时候,内部类中的静态方法能被加载吗?

静态内部类不不能直接访问外部类的实例成员,因为静态内部类的加载不依赖外部类的实例,当外部类加载完毕时,静态内部类也被加载了,在静态内部类中没有对外部类实例的引用,所以要访问外部类的实例成员时,需要使用外部类实例来引用,基于静态内部类随外部类一起加载的原理,静态内部类是可以直接访问外部类静态成员的,也可以定义静态成员

总结:内部类是在外部类创建实例后被加载的,静态内部类是随着外部类一起被加载的

 

------- android培训java培训、期待与您交流! ----------   
详细请查看:http://edu.csdn.net/heima/ 
分享到:
评论

相关推荐

    黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构

    ### 黑马程序员Java基础教学知识点详解 #### 一、变量的作用域与生命周期 变量的作用域定义了变量的可见性和生存周期。在Java中,变量根据其声明位置的不同,具有不同的作用域。例如,在给定的示例代码中: ```...

    黑马程序员-C#坦克大战

    总的来说,《C#坦克大战》的开发涵盖了C#语言基础、图形用户界面设计、游戏逻辑编程、多线程处理、对象导向编程等多个IT知识点,对于学习C#和游戏开发的初学者来说,这是一个很好的实践项目,可以帮助他们提升技能,...

    黑马程序员Javase笔记

    Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。

    黑马程序员测试题部分答案

    “黑马”则表明这份资料与“黑马程序员”这个教育品牌相关,意味着其内容可能涵盖了该机构课程中的知识点,具有一定的权威性和系统性。 【压缩包子文件的文件名称列表】:“itheima”可能是一个文件夹名称,通常在...

    黑马程序员训练营基础测试题

    【标题】"黑马程序员训练营基础测试题"涵盖了IT领域中的iOS开发基础知识,这是一份专为学习者设计的测试题目集,旨在检验学员在iOS编程方面的能力和理解程度。在iOS开发中,开发者需要掌握Objective-C或Swift编程...

    黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义.rar

    以上这些是《黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义》中可能涉及的核心知识点。通过深入学习和实践,你将能够掌握C++的高级特性和编程技巧,为后续的软件开发工作打下坚实基础。这份讲义的无废话...

    Linux系统及编程基础习题答案.pdf

    本资源提供了 Linux 系统和编程基础习题的答案,涵盖了 Linux 基础、安装、主要特点、组成部分、与 Windows 的主要区别等方面的知识点。 1. 什么是 Linux? Linux 是一款优秀的计算机操作系统,支持多用户、多进程...

    安卓黑马程序员课表

    ### 安卓黑马程序员课程知识点概览 #### 1. XML编程 - **知识点概述**:XML编程是学习安卓开发的基础之一,通过本课程学员将掌握XML的基本语法、元素及属性定义、命名空间等概念。 - **教师**:王昭珽 - **教学目标...

    B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记

    【标题】:“B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记” 【描述】提及的是一个针对初学者的C++教学资源,来自B站上的视频课程“BV1et411b73Z”。这门课程的特色在于提供了一份...

    黑马程序员_Java基础辅导班教程课件[第01期]第15天

    《黑马程序员_Java基础辅导班教程课件[第01期]第15天》是针对初学者设计的一堂深入浅出的Java编程课程,旨在帮助学员巩固和深化Java基础知识。这堂课件涵盖的内容广泛且实用,对于想要在IT行业中开启Java开发旅程的...

    黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义.rar

    以上知识点构成了C++初学者从基础到实践的完整学习路径,通过《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》的学习,你可以逐步掌握C++编程语言,并具备开发实际项目的能力。在学习过程中,务必...

    全网首发黑马程序员鸿蒙 HarmonyOS NEXT星河版零基础入门到实战,零基础也能快速入门鸿蒙开发教程2

    《全网首发黑马程序员鸿蒙 HarmonyOS NEXT星河版零基础入门到实战》是一套针对初学者精心设计的鸿蒙操作系统开发教程。本教程旨在帮助没有编程基础的学员快速掌握HarmonyOS的开发技能,通过丰富的实例和清晰的讲解,...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员毕业设计资料,代码,数据库设计论文等

    "黑马程序员毕业设计资料,代码,数据库设计论文等" 这个标题表明这是一份来自“黑马程序员”教育平台的资源集合,主要用于帮助学生进行毕业设计。其中包含了项目代码、数据库设计相关的论文等内容,适用于计算机科学...

    黑马程序员JAVA WEB全笔记pdf

    本笔记基于黑马程序员的课程内容,全面覆盖了Java Web的基础知识,包括前端开发技术如HTML、CSS、JavaScript,以及后端服务器端的Java Servlet和JSP(Java Server Pages)。 一、前端基础 1. ...

    黑马程序员入学测试题

    【标题】:“黑马程序员入学测试题”是一份用于评估编程基础和理解能力的测试集,主要针对准备加入黑马程序员培训课程的学生。这份测试题旨在帮助新手程序员检验自己的知识水平,以便更好地适应学习环境。 【描述】...

    黑马程序员Python视频中代码、课后习题等第二章内容

    在“黑马程序员Python视频中代码、课后习题等第二章内容”这个资源包中,我们聚焦于Python编程语言的学习,特别是第二章的核心知识点。这一章通常会涵盖基础语法和重要概念,对于初学者来说是至关重要的。下面,我们...

    黑马程序员入学面试题

    3. **Java基础知识提问**:考察应聘者对于Java基础知识的掌握程度,包括但不限于数据类型、控制结构、面向对象特性等。 #### 2. 面向对象的理解 面向对象是一种编程范式,它将数据和处理这些数据的方法封装在一起...

    黑马程序员最新一期高清教学视频

    根据提供的文件信息,这里将对“黑马程序员最新一期高清教学视频”进行详细的解析与扩展,以便更好地理解其中可能涵盖的知识点和技术内容。 ### 黑马程序员教学视频概述 #### 标题解读:“黑马程序员最新一期高清...

    黑马程序员_Java基础辅导班教程课件[第01期]第13天

    在"黑马程序员_Java基础辅导班教程课件[第01期]第13天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java开发的基本技能。第13天的课程通常会涵盖上一天(第12天)所学...

Global site tag (gtag.js) - Google Analytics