1.     类的访问控制权限共有两种:public和默认。默认级别的类只能被同一个包中的类看到,包外不可见。

2.     类成员的访问权限共有四种:public,protected,private和默认。protected成员包内随便访问,包外继承才能访问。private类外不能访问,内部类可以访问。默认包内可以访问,包外不能访问。

3.     final修饰变量的基本含义是,该变量一旦被显示初始化之后其值不能再被修改。原始类型赋值不能修改。引用类型赋值只能修改对象,不能修改指向哪个对象。final的成员变量,系统不会为其赋默认值,而是要求在构造器完成之前显式初始化。初始化位置有3种:在声明的同时;在非静态语句块中;在构造器中。final的局部变量,可以只声明而不初始化,但一旦初始化不能修改。

4.     final用来修饰类时,其含义是该类不能再分子类。当final修饰方法时,该方法在子类中将无法覆盖,只能继承。

5.     static关键字只能修饰成员,例如变量、方法、语句块、内部类等。静态成员的目的:1)方法总是以相同的方式运行,其行为与结果不依赖对象的状态(Math);2)若想记录某个类的所有对象的个数等关于这个类的所有对象的信息,必须需要一个依赖于类的而不是依赖于对象的变量来记录此信息。静态方法访问非静态成员需要使用指向特定对象的引用(main方法访问对象的成员)。

6.     abstract可以修饰类和方法。abstract声明的类不能实例化,只能用于继承扩展,此外可以作为引用指向其他对象。抽象方法只能在抽象类中,而且没有实现。抽象类中可以有非抽象方法。抽象类的第一个非抽象子类必须实现其父类所有的抽象方法,其中也包括父类继承的抽象方法,否则报错。

7.     静态最终成员变量可以用来当作常量。系统不会为其初始化,初始化位置有2种:在声明的同时;在静态语句块中

8.     成员变量的继承规则:1)公有成员,不论是否在同一个包内,子类均能继承其父类的该成员;2)私有成员,任何子类不能继承该成员;3),默认成员,包外的子类不能继承该成员,包内相当于public;4),受保护的成员,当成员变量被修饰为protected时,若访问该变量的类位于包外,只有通过继承才能访问,而且只能在子类内部进行调用,不能用子类引用调用该受保护的成员变量。而且可以修改该继承的成员变量。

9.     成员变量的隐藏。对于成员变量,当子类具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。当在子类中调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是从父类继承的成员变量。可以通过super访问父类的该成员变量。继承中,对于成员变量的访问系统认的是引用类型,引用是什么类型,系统就访问谁的成员(Car c=new Truck(); c.name将会打印Car的内容)。

10.  继承中,引用只能调用其所在的类具有的成员,不能调用子类特有的成员,这点对于成员变量和方法是一样的。

11. 继承中,方法的调用按对象的类型,无论使用什么类型的引用,其调用的都是具体对象所在类中定义的方法。这与成员变量不同,成员变量按引用的类型。

12. 方法的覆盖规则:1)返回类型若为基本类型,则必须完全相同,若为对象引用类型,必须与被覆盖方法返回类型相同,或派生自被覆盖方法的返回类型(子类型)。2)访问级别的限制一定不能比被覆盖方法窄,可以比被覆盖方法宽。3)不能覆盖被表示为final的方法。4)静态方法没有覆盖,非静态方法覆盖静态方法报错;若子类覆盖的方法也是静态的时候,其实质是将父类的静态方法隐藏,而不是覆盖(父类引用将调用父类的方法,而不是子类的方法)。

13. 构造函数可以有四类访问限制:public,private,protected和默认。构造函数没有继承,所以protected和默认作用相同。private构造函数只能类的内部使用,若想外部创建该类对象,需要用静态工厂方法。

14. 构造函数的调用是级联调用。如果没有在构造函数中明确调用特定的父类或兄弟构造函数,编译器会自动将调用父类无参构造函数的代码添加为构造函数代码的第一句。

15. java程序的加载过程:1)首先加载要创建对象的类及其直接或间接父类;2)在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行;3)需要的类加载完后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行;4)最后执行构造器,构造器执行完毕,对象生成。在父类中执行完上述步骤,再在子类中执行上述步骤。

16. 异常包括捕获异常(必须处理)和非捕获异常(Error和RuntimeException(空指针),可以不处理)

17. equals方法重写步骤:1)首先测试两个引用是否指向同一个对象,如果是则直接返回True;2)接下来测试传递进来的引用是否是null,如果是则直接返回False;3)然后测试传递进来的对象引用是否通过自己类型的instanceof测试,如果不通过返回False;4)将传递进来的Object引用强制类型转换为自己的类型,测试相关的成员是否登记,成立返回True,否则返回False。

18. 集合框架包括三部分:List(3)、Set(3)和Map(4)。TreeSet和TreeMap必须实现Comparable接口的CompareTo方法,它们是用红黑树实现。

19. 非静态内部类扮演的是外部类非静态成员的角色,而非静态成员只有在所属对象存在的情况下才存在,因此非静态内部类在创建了外部对象后才可以使用。

20.  外部类访问内部类的非静态成员,需要首先创建内部类的对象。内部类不可以有静态成员。

21. 局部内部类可以访问外部类的成员,但却不可以访问同在一个局部的普通局部变量,需要将普通变量声明为final类型。这是因为:1)普通的局部变量随着所在语句块的执行结束而消亡,而创建的局部内部类对象并不会随着语句块的结束而消亡;2)final的局部变量的存储方式与普通局部变量不同,不会因为语句块的结束而消失。如果局部内部类位于静态方法中,则只能访问外部类的静态成员。

22. 静态内部类实质上只是一个放置在别的类中的普通类。static关键字只是说明其在创建对象时不依赖于外部类对象的存在,并不是说这个类本身是静态的。

23. 实现Runnable接口的类对象只是指出了线程需要完成的任务,其本身并不是线程对象,该对象可以被同时传递给多个线程对象,然后利用start启动线程。线程在其生命周期中只能被启动一次。

24. 线程让步:使当前线程让出CPU,使其他线程得以执行。线程让步有两种方式:1)只是让出当前的CPU资源,具体将CPU让给谁不确定,利用的方法是yield方法,yield方法使当前运行的线程让出CPU,回到准备状态,但是该操作没有保障,线程回到准备状态立刻被调度进入运行状态;2)线程将给指定的线程让步,指定的线程没完,其绝不恢复执行,利用的方法是join方法,其结果是调用此方法的线程一直等到此方法所在的线程执行完毕才恢复执行(谁调用谁执行)。

25. 同步方法是指用synchronized关键字修饰的方法,其与普通方法的不同是进入同步方法执行的线程将获得同步方法所属对象的锁,一旦对象被锁,其他线程就不能执行被锁对象的任何同步方法。synchronized只能用来标识方法,不能标识成员变量。若一个对象有多个同步方法,当某个线程在访问其中之一时,其他线程不能访问该对象中的任何同步方法,但可以访问非同步方法。

26. 在同步方法中可以使用特定的方法对线程进行调度。wait方法将使得某一线程进入该资源(同步方法所在对象)的等待池,使其进入等待状态,直至别的线程调用该资源的notify或者notifyAll方法将其唤醒为止。notify方法将唤醒该资源等待池中的某一个线程,具体哪个没有保障。只有wait方法释放锁,notifyAll不释放锁,只是起到通知作用。

27. volatile只能修饰成员变量,不能修饰局部变量,因为局部变量不可能同一时刻被两个线程访问。volatile关键字的含义是,用其修饰的成员变量,不允许一个线程对其操作的过程中,其他线程插入操作。

28. 数据库事务(DatabaseTransaction),是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

29. 输入流从文件读取数据到程序,输出流从程序读出数据到文件。节点流用于直接从指定的位置进行读写操作,更接近底层的数据;处理流用于对其他输入输出流进行封装,对内容进行过滤处理,一般提供了一些功能比较强大的读写方法,更接近实际操作的用户。字节流以字节为基本单位来处理数据的输入输出,一般都用于对二进制数据的读写,例如声音图像等;字符流以字符为基本单位来处理数据的输入和输出,一般都用于对文本类型数据的读写,例如文本文件,虽然文本数据也可看成二进制数据,但采用字符流处理效率更高。字节流祖先:InputStream和OutputStream,字符流祖先:Reader和Writer。

30.  instanceof不能精确判断对象类型,继承时返回true,要判断精确类型可以利用反射(mc.getClass()==Class.forName(“package.Name”))。反射的setAccessible方法能去除成员变量、方法、构造器的访问限制。

31. 泛型参数的继承:若A是B的子类,则G<A>可以当作G<B>并不成立,如果希望达到同样的效果则需要使用泛型通配符。泛型通配符只能用于引用的声明中,不可以在创建对象时使用。不可以使用采用了泛型通配符的引用调用使用了泛型参数的方法。一句话泛型通配符只能出现在声明中,不能出现在定义中。

java基础知识汇总的更多相关文章

  1. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  2. java基础知识汇总4

    三.集合(collection.set.list.map) 一.定义: 集合是Java里面最经常使用的,也是最重要的一部分.可以用好集合和理解好集合对于做Java程序的开发拥有无比的优点. 容器:用来 ...

  3. java基础知识汇总(持续更新中....)

    1.java四大特性:抽象.继承.封装,多态 构造函数: http://blog.csdn.net/qq_33642117/article/details/51909346 2.java数据基本类型: ...

  4. java基础知识汇总6(html篇)

    五.html // 定义文档类型. < html> 定义 HTML 文档. < body> 定义文档的主体. < h1> to < h6> 定义 HTM ...

  5. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  6. Java基础知识常见面试题汇总第一篇

    [Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...

  7. java基础知识文章汇总

    将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...

  8. 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇

    文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...

  9. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

随机推荐

  1. 对于超大型SQL SERVER数据库执行DBCC操作

    原文:对于超大型SQL SERVER数据库执行DBCC操作 对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1.2008(200 ...

  2. 分布式中使用Redis实现Session共享(转)

    上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...

  3. linux安装QQ

    下载链接:WineQQ2013SP6-20140102-Longene 下面步骤一定要依照顺序来,我用的系统是 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...

  4. 变化Android系统属性SystemProperties.set(&quot;sys.powerctl&quot;, &quot;shutdown&quot;)关机分析

    基本介绍: 从以前的博客中提到,我们,最后,通过关机过程变化Android关机属性(SystemProperties.java由JNI呼叫接入系统属性),当然,我们也能adb命令变化Android系统 ...

  5. SQLite外键

    数据库工具:SQLite Manager(V0.7.7) SQLite版本号:V3.6.19+ SQLite Manager 默认是不开启外键的. 那么怎样,使用它创建一个带有外键的表呢? 一.开启外 ...

  6. JavaEE(24) - JAAS开发安全的应用

    1. 安全域.角色和用户组 容器提供的两种安全性控制:声明式安全控制和编程式安全控制 安全域是指用户.用户组和ACL的逻辑集合.服务器支持的两种常用安全域:RDBMS安全域和文件系统安全域. 2. J ...

  7. JS添加节点方法与JQuery添加节点方法的比较及总结

    原生JS添加节点方法与JQuery添加节点方法的比较及总结   一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div ...

  8. spring framework 4 源代码阅读器(1) --- 事前准备

    在你开始看代码.的第一件事要做的就是下载代码. 这里:https://github.com/spring-projects/spring-framework 下载完整的使用发现gradle建立管理工具 ...

  9. python下载地址到迅雷qq旋风下载

    迅雷和qq旋风下载,有加速和离线功能,非常方面,我是在网上看到的原始地址和迅雷地址,qq旋风地址的转化原理.然后用python+pyqt写了一个client 原理: 迅雷: 迅雷下载地址=" ...

  10. Codeforces Round #266 (Div. 2)-C,D

    C - Number of Ways 直接暴力从前往后寻找.假设找到1/3sum的位置,那么标记++.找到2/3的位置,总数加上标记数. #include<stdio.h> #includ ...