1. 数组也是引用类型的,分为栈内存,堆内存。
2. 类Field最好就直接用类去调用,别用对象去调用,分清了好。
3. 引用型数据结构,当定义的时候在栈内存中生成一个引用型变量(不同的函数有它自己的栈区),它指向函数运行时候的堆内存中相应的对象,(所以,若String str1 = “test”;String str2 = "test";str1 == str2 输出的是“false”)但是Integer有例外,当在-128-127之间的时候,比如说Integer int1=2;Integer int2=2,int1==int2,返回的是“true”,这只不过和java的Integer形成的机制有关,大于127,或者小于-128也是普通的。
4. 类的static Field在第一次加载类的时候就初始化好的。
5. import static载入某一类的所有静态方面,静态Field
6. 无参构造器还是重要的,一般自己写构造器后自己要手动添加一个无参的构造器。
7. 类中自己调用构造器是通过this。(this(“ag”,8);)。
8. 构造器在执行的时候是一直往上找它的父亲,从最顶层的父亲的构造函数开始执行,最后到自己,也就是说每次new一个类,Object的构造器都会执行一次(默认执行的无参的构造器)。
9. this,和super都不能出现在static修饰的方法中,static修饰的东西属于类不属于对象。
10. BaseClass p = new SubClass();p这个引用变量,它编译时类型是BaseClass,而运行时类型是SubClass,它能调用的还是BassClass中的方法,不能调用SubClass类中的方法。
11. 当创建一个子类的时候,系统不仅仅需要为该子类定义Field分配内存空间,而且需要为它的父类所定义的Field分配内存空间。
12. 在创建一个java对象的时候,不仅会执行该类的普通初始化块和构造函数,而且系统会一直上溯到Object类,先执行Object的初始化块,开始执行Object构造函数,依次向下执行、、、、、、。
13. ==:只要两个变量时基本类型变量,且都是数值类型(不一定要求数据类型严格相同,也就是说假如把char和int比较就是在用char的ASC码在和int的数值在比较),则返回true;对于两个引用型变量,必须它们同时指向同一个对象时候才是true。
14. 常量池专门用于管理在编译期别确定保存并被保存在已编译的.class文件中的一些数据,它还包括关于类,方法,接口中的常量,还包括字符串常量。example:String str1 = “testtet2”;String str2 = "tet2";String str3 = "test"+"tet2";String str4 ="test";String str5 = str4 + str2;这里str1,str2,str3,str4都可以在编译期都可以定下来,并且str1==str3,输出是“true”,str5不是的,str5==str1,输出“false”,关于equals()方法,这里str5.equals(str1),输出的是“true”,其实equals()它实际的意义也是表示变量指向同一个对象才返回“true”,这里之所以返回“true”是因为String的equals()方法已经重写过了,只要值相等就相等,是重写后的结果。所以可以自己重写equals()方法来表示自己对于两个对象相等的标准。例子:public boolean equals(Object object){
if(this == object){
return true;
}
if(object != null && object.getClass() == XXXX.class){
XXXXXXXXXXXXXXXXXXX;
}
return false;
}
而对于列子为何直接用object.getClass() == XXXXX.class,来确定对象到底属于哪一个类,而不是用object Instanceof XXXX,这是因为加入object是XXXX的子类也是返回“true”,这样就不能精确的表示是否属于哪一个类,例子中的判断写的绝对,更加精确。
15. BaseClass tset = null;tset.test();加入test()是static方法,语句没有问题的。
16. 可执行“宏替换”的final变量,String str1 = "testxixi";final String str2="test";final String str3="xixi";String str4=str2+str3;这里str1 == str4,输出的是“true”,也就是说加入是final变量,在编译期String str4 = str2 + str3相当于String str4 = "test" + "xixi",即宏替换。
17. 在某种情况下,父类知道自己的子类应该包含什么样的方法,但是无法准确的知道具体如何实现这些方法,抽象类。
18. 接口中的变量就是public static final,方法是public abstract,都是默认,或者默认添齐的。不可以用static去描述其中的方法。
19. 接口与抽象类:
都不能实例化,被其他类实现和继承,都可以包含抽象方法。
区别:
接口作为系统与外界交互的窗口,接口体现的是一种规范。对于接口实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式提供),对于接口的调用者而言,接口规定了调用者可以调用哪些服务(就是如何来调用方法)。当在一个程序中使用接口时,接口是多个模块间的耦合标准,当在多个应用程序之间使用接口时候,接口是多个程序直接通信的标准。某种程度上来说接口类型与整个系统的“总纲”,它制定了系统各模块应该遵循的标准,因此一个系统中的接口本不应该经常变化。一旦接口被改变,对整个系统影响是辐射型的。
抽象类作为系统中多个子类的共同父类,它所体现的是一种模板式设计。抽象类作为多个子类的抽象父类,可以被当成系统实现过程中的中间产品,整个中间产品已经实现了系统部分功能(那些已经提供实现的方法),但这个产品依然不能当做最终产品。必须有更进一步的完善。
区别还有:
抽象类中处理抽象方法还可有普通方法,和静态方法,和普通Field,构造器(给其子类调用),初始化块,
一个类可以实现多个接口,弥补了单继承的不足。
20. 简单工厂模式,即在不确定到底该调用哪一种对象时候,让这些对象都去实现一个接口,这个接口相当于一个中间产物(即工厂),有工厂去确定到底产生哪一个具体对象,它返回的就是一个对象,这样做目的是为了减轻后期假如代码要修改带来的麻烦。另外加入正的有这种并行的方法选择这样结构更加清晰,代码更加优雅。
分享到:
相关推荐
这份"java复习笔记"旨在帮助学习者系统地回顾和深入理解Java的关键概念和技术,以便于提升编程技能和应对各种开发挑战。 一、基础语法 Java的基础语法包括变量、数据类型、运算符、流程控制语句等。例如,变量是...
Java EE的复习笔记是学习这个复杂框架的重要参考资料,尤其对于开发者来说,深入理解其核心概念和技术是必不可少的。 首先,Struts是Java EE中的一个MVC(Model-View-Controller)框架,它的主要任务是分离业务逻辑...
Java 是一种广泛应用于软件开发的编程语言,具有平台独立、面向对象、简单易学等特点。下面是 Java 基础知识的汇总和学习笔记。 Java 概述 Java 是由 Sun Microsystems 公司开发的高级编程语言,于 1995 年首次...
Java基础每日复习笔记-JavaSE高级阶段.edf
本压缩包集合了多种JAVA试题与复习笔记,涵盖了基础理论、编程实践以及解题技巧等多个方面,旨在帮助Java学习者巩固知识,提升编程能力。 1. **Java基础** - **数据类型**:包括基本数据类型(如int、char、...
JAVA复习笔记.doc
Java复习笔记.md
同时附赠一份我学习的资料,是github上的一位大神写的,非常棒的笔记,力荐!总结了Java知识、IO、http、socket、redis、git、docker,设计层次比较全,大家可以下载看看,注意文档格式是markdown的。
达内的Java复习笔记是针对学习者整理的一份详尽的学习资料,涵盖了Java语言的基础到进阶知识,适合初学者和有一定经验的开发者进行复习和巩固。 1. **Java基础知识** - **数据类型**:包括基本数据类型(如整型、...
Java基础每日复习笔记-JavaSE高级阶段.2020-10-13-211312.edf
Java复习笔记(期末考试复习) Java 是一种广泛应用于桌面程序、企业级开发、嵌入式开发的编程语言。下面是 Java 的一些重要知识点: 1.Java SE、Java EE、Java ME 的区别: Java SE(Java Standard Edition)主要...
Java期末复习笔记.md
【JAVA Web复习笔记】 在JAVA Web开发中,我们首先要理解几个关键的概念。Web技术主要分为两种架构模式:C/S(客户端/服务器端)和B/S(浏览器/服务器)。C/S架构通常涉及到专用的客户端应用程序与服务器进行交互,...
本资源适合已有java基础,但稍微有点忘记的人群,对于初学者可能不够全面,慎...本资源中的笔记未.md格式,是自己在观看黑马的教学视频时跟着做的笔记,弥补了部分后面Java核心技术部分,各位可下载下来进行复习使用。
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性,灵活性和安全性。本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,...
【标签】"笔记笔记笔记笔记" 强调了这是一份学习资料,重点在于记录和回顾,对于读者来说,这可能是一个很好的参考资料,用于复习Java编程的各种知识点。 【压缩包子文件的文件名称列表】: 1. **Execution.htm** -...
Java基础每日复习笔记-JavaSE基础阶段.edf
这份名为"超详细的Java复习知识点2019——个人笔记"的文档,旨在为初学者提供一个全面且深入理解Java基础知识的指南。笔记内容可能涵盖了以下几个关键领域: 1. **Java语法基础**:包括变量、数据类型、运算符、...
Java是一种广泛使用的面向对象的编程语言,以其跨平台和丰富的库而闻名。下面是对Java一些核心概念的详细解释,主要涵盖数组、常用类、流、线程和网络编程。 **数组**是Java中存储固定数量同类型元素的数据结构。一...