Java基础(前面知识点总结)

来源:互联网 发布:javascript视频 编辑:程序博客网 时间:2024/06/05 02:47

一、Java基础入门

Java概述和Java基础语法

Java概述

        1、Java语言概述

        2、Java语言的技术架构:JavaEE(企业版)、JavaSE(标准版)、JavaME(微型版)     都有什么作用?

        3、Java语言的特点:跨平台性        什么是跨平台性?     为什么可以跨平台??     跨平台工作原理???

        4、Java语言环境搭建:JRE(运行环境)、JDK(Java开发工具包)    JRE是Java运行环境,是Java的核心类库(Java所有的类文件都在JRE中)  

                什么是JDK?    JDK的安装?    配置环境变量的两种方式?    为什么要配置path?     为什么要配置classpath?  classpath配置技巧??

        5、编写Hello World :      编写Hello World 需要哪些步骤?  编写——编译——运行   各个步骤中关键字的作用?

Java基础语法

        1、关键字:什么是关键字??     关键字分类?

        2、标识符:什么是标识符?    标识符命名规则?     标识符的命名规范(类名、包名、函数名和变量名、常量名)???

        3、注释:注释的作用?   用于对程序进行注释,提高程序的阅读性              注释分类?   用法?   文档注释需要注意的地方?

        4、常量:    什么是常量?  常量的分类?   整数有几种表现形式??(二进制、十进制、八进制、十六进制)   进制与进制之间的转换原理??  

                用代码如何实现进制转换?   负数的二进制表现形式?

        5、变量:    什么是变量?   为什么要定义变量?  变量的作用域?  变量的数据类型?(4类8种)  类型的默认值?

        6、类型转换:  类型转换分类?    什么是自动类型转换?  什么是强制类型转换?  数据类型排序??   byte、short、int转换应注意的地方??

        7、运算符:   运算符的优先级??

        8、算术运算符:%、++、--、+号的用法??

        9、赋值运算符:   +=和=的区别?

        10、比较运算符:比较运算符运算结果?

        11、逻辑运算符:双&和单&的区别?    双|和双||的区别??    ^的原理?(相同为false,不同为true)   !

        12、位运算符:<<(左移)、>>(右移)、>>>(无符号右移)原理?    位运算^的特点?

        13、三元运算符:三元运算符和if  else的区别?       好处:可以简化 if else 代码; 弊端:因为是一个运算符,所以运算完必须有

                 一个结果。而 if else 运算完不需要一个结果。比如三元运算符内不能单独列出输出表达式。

        14、流程控制语句   流程控制语句的作用? 流程控制语句是用来控制程序中各语句顺序的语句

        15、switch选择结构      使用switch语句需要注意的地方?

        16、while和do while:   while和do while 的区别?

        17、for循环:   for循环中一个不是规律的规律?

函数

        1、什么是函数?

        2、函数的格式?

        3、函数的特点?

        4、定义函数的两个基本点???

        5、函数的重载:什么是函数重载??    重载的作用?  重载的特点?

数组

        1、什么是数组?

        2、使用数组有什么好处?

        3、数组的几种创建方式?

        4、数组的内存分配及特点    什么是内存结构?   栈内存、堆内存

        5、数组常见操作    获取最值    数组查找     数组排序

        6、二维数组:二维数组创建?    二维数组赋值?

二、面向对象

面向对象理解

1、什么是面向对象?

2、面向对象思想的特点?

3、面向对象的特点?

4、类与对象的关系?

5、成员变量和成员函数的区别?

6、创建对象的方法?  匿名对象的使用方式?

7、构造函数:构造函数的作用?  构造函数的特点?

8、this关键字:this代表的是什么?

9、static关键字:static关键字的作用? static修饰成员后成员的特点? static的弊端? 

        静态代码块的特点和作用?

10、主函数的定义?

11、创建一个对象,计算机的执行流程

封装

1、什么是封装?

2、封装的表现形式?

3、封装的好处?

4、单例设计模式:什么是设计模式?单例设计模式的作用?单例设计模式步骤? 单例设计模式的两种实现方法?懒汉式和饿汉式的区别?  懒汉式同步?

继承

1、什么是继承?  怎么完成继承?(extends)

2、继承的好处?

3、继承的特点?  Java为什么不支持多继承?

4、如何使用继承体系?

5、子父类出现后类中成员的特性:当出现同名变量时?当出现同名函数时?

       重载和重写的 区别?子父类中的构造函数?子类为什么一定要调用父类的构造函数?

       为什么this()和super()必须放在构造函数第一行?

6、final关键字:

        1、final关键字的作用?(类和成员)

        2、 final关键字的特点?(类、函数、变量)

7、抽象类:

        1、什么是抽象类?

        2、抽象方法的由来?

        3、抽象类中抽象方法的作用?

        4、抽象类的特点?

        5、被abstract修饰的方法不能同时被哪些修饰符所修饰?原因?

                (final、static、private)

8、模板方法设计:什么是模板方法设计?

9、接口:

        1、什么是接口?

        2、接口中的成员格式?注:接口中的成员都是public的  

        3、接口的特点?

        4、接口为什么可以多实现?

        5、抽象类和接口的区别?

多态

1、什么是多态?

2、多态的表现形式?(向上转型和向下转型)

3、多态的前提?

4、多态的好处?弊端?

5、多态的出现代码中成员函数(非静态)的特点?(一句话,简单到不行)

6、多态的出现代码中成员函数(静态)的特点?(一句话,简单到不行)

7、多态的出现代码中成员变量的特点?(一句话,简单到不行)

8、内部类:

        1、什么是内部类?

        2、内部类访问规则?(内部类访问外部类和外部类访问内部类)

        3、在其他外部类中访问非静态内部类?

                (外部类.内部类 变量名 = new 外部类().new 内部类())

        4、在其他外部类中访问内部类静态方法?

                (外部类.内部类.内部类方法名())

        5、在其他外部类中访问内部类非静态方法?

                (new 外部类.内部类().内部类方法名())  注意静态方法和非静态方法的区别!!!

        6、内部类在类中成员位置上时可以被哪些修饰符所修饰?修饰后有什么特点?

                private 和 static

        7、当内部类定义在类中局部位置上时应注意的问题?

                1、不可以被成员的修饰符所修饰

                2、可以直接访问外部类中的成员,因为还持有外部类的引用,但是不可以访 

                        问它所在的局部中的变量,只能访问被final修饰的局部变量

9、匿名内部类

        1、匿名内部类怎么创建?

                使用父类或接口创建子类对象,复写父类或接口中的方法,调用方法

                格式:1、new 父类名(或接口名){

                                    要复写的方法();

                                 }.要调用的方法();        //只可以调用一次

                 当想调用多个方法时:   父类名(或接口名)  变量名 = new  父类名(或接口名){

                                                               要复写的方法();

                                                        }

                                                       变量名.方法名();   //可以调用多次

三、异常

1、什么是异常?

2、异常的由来?

3、Java对于异常的划分(严重和不严重)?

4、异常体系?

5、异常体系的由来?

6、异常体系的特点?

7、异常处理方式?

8、throw和throws的区别?

9、什么是自定义异常?

10、自定义异常如何添加异常信息?

11、异常处理原则?

12、RuntimeException异常的特点?原因?

13、Java中异常分类?

14、异常在子父类中的体现?

15、try处理的几种格式

四、多线程       

1、什么是多线程?

2、多线程存在的意义?举例

3、多线程的特性?

        而cpu执行哪个程序,是毫无规律性的。这也是多线程的一个特性:随机性。哪个线程被cpu执行,或者说抢到了cpu的执行权,哪个线程就执行。而cpu不会只执行一个,当执行一个一会后,又会去执行另一个,或者说另一个抢走了cpu的执行权。至于究竟是怎么样执行的,只能由cpu决定

4、线程的两种创建方式?继承Thread    实现Runnable

5、为什么一定要复写润方法?

6、start方法的作用?

7、使用实现方式创建线程时,为什么要将子类作为实际参数传递?

       原因:因为自定义的run方法所属的对象时Runnable接口的子类对象,而该对象中是没有开启线程的方法的,所以要让线程执行指定对象的run方法就必须明确run方法所属的对象,然后调用start方法开启线程

8、为什么实现方式比继承方式好?好在哪里?

       因为继承存在局限性,如果子类在继承Thread前已经继承了其他类,那么是不能再继承Thread类的,因为Java不支持多继承,而这时候想要开启线程就只能通过实现Runnable接口来实现,因为接口可以子在继承类的同时还可以实现接口

9、实现方式和继承方式的区别?

       继承Thread:线程代码存放在Thread子类run方法中。

       实现Runnable:线程代码存放在接口子类run方法中。

      继承操作的不是同一个Thread类的子类对象,而实现操作的是同一个Runnable接口的子类对象

10、线程中的几种状态?(要求要回画状态图)

        1、 被创建:等待启动,调用start启动。

       2、运行状态:具有执行资格和执行权。

       3、临时状态(阻塞):有执行资格,但是没有执行权。

       4、冻结状态:遇到sleeptime)方法和wait()方法时,失去执行资格和执行权,sleep方法时间

                到或者调用notify()方法时,获得执行资格,变为临时状态。

       5、消忙状态:stop()方法,或者run方法结束。

        注:当已经从创建状态到了运行状态,再次调用start()方法时,就失去意义了,java运行时会

               提示线程状态异常。

11、wait方法和sleep方法的区别?

       wait()会释放cpu执行权,释放锁。

     sleep会释放执行权,但是却不会释放锁

12、线程安全

        1、为什么会出现线程安全问题?

                当多条语句在操作同一个线程共享数据时,一个线程对多条语句还没有执行完,另一个线程

                得到了执行权,参与运行了,导致共享数据错误

        2、解决线程安全的方法?

               对多条操作共享数据的语句,在某个时间段,让一个线程把有共享数据参与的语句一次性执

                行完,在该线程执行过程中,其他进程不可以参与执行

        3、解决线程安全的两种方式(同步代码块和同步函数)要会写!!!

        4、使用同步函数时,使用的是哪一个锁?

        5、同步的前提

                1、必须要有两个或两个以上的线程

                2、必须是多个线程使用同一个锁

       6、如何寻找线程中的问题?

             1、明确哪些代码是多线程要运行的代码

                2、明确共享数据、

                3、明确多线程运行代码中那些语句是操作共享数据的

        7、线程的利弊?

        8、静态同步函数使用的是哪把锁?

                原理:通过验证发现不在是this,因为静态方法中不可以定义this,静态进内存是,内存中没

             有本类对象,但是一定有该类对应的字节码对象,类名.class该对象的类型是class,所以静态

             同步函数使用的锁匙该方法所在类的字节码 文件对象,也就是类名.class,并且该对象在内存

             中是唯一的,因为字节码文件是唯一的

13、死锁     为什么会出现死锁?要求会写死锁程序!!!

14、线程通信

        1、什么是线程通信?要求要会画图!!!

        2、wait()、notify()、notifyAll()的作用?

                都是使用在同步中,因为要对持有监视器(锁)的线程操作

        3、为什么wait()、notify()和notifyAll()都必须定义在Object类中呢?

                 原因:因为这些方法在操作同步中的线程时,都必须标识他们所操作线程持有的锁,只有

             同一个锁上的被等待的线程可以被同一个锁上的notify唤醒,不可以对不同锁中的线程进行唤

             醒,因为不是同一把锁,也就是说:等待和唤醒必须是同一把锁,而锁可以是任意对象,所

             以可以被任意对象调用的方法要定义在Object类中

        4、JDK1.5版本后提供的同步的解决方案是什么?      

                 1、将同步synchronized替换成了显式Lock操作

                 2、将Object类中的wait、notify、notifyAll替换成了Condition对象,该对象可以对lock锁进

                              行获取

                 3、可以实现只唤醒对方的操作

                 结论:1.5版本之后提供了显式的锁机制,以及显式的锁对象上的等待唤醒操作机制,同

                        时,它把等待唤醒机制进行了封装,封装完一个锁可以对应多个等待和唤醒

15、如何停止线程?

1、开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让run方法结束,也就是线程结束。

2、当遇到特殊情况时,比如线程处于了冻结状态,则第一种方式是没有办法结束线程的,当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。实现方式:Thread类提供的interrupt();方法 

16、线程中提供的其他方法

         1、setDaemon(boolean boo)           返回值类型为 void

                  主要将该线程标记为守护线程或用户线程。

                   理解:守护线程可以理解为后台线程,而我们看到的线程其实都是前台线程,当你把某

                   些、线程标记为后台线程后,他就具备了一个特殊的含义,后台线程的特点:开启后会和

                   前台线程共同抢夺cpu的执行权运行,开启运行都没有区别,就结束有区别,当所有的前

                   台线程都结束后,后台线程会自动结束,后台线程依赖于前台线程

        2、join()          返回值类型void

                  主要用于等待线程终止 

                  理解:当主线程执行到join方法时,凡是在该方法后面的线程都会被处于冻结状态,只用当join

                  线程结束后,后面的线程才会被执行

      3、setPriority(int newPriority)   返回值类型为void

              主要用于修改线程的优先级

                    线程优先级等级:     1级——10级   默认为5级

                各个等级在Java中已经定义好了最终静态常量保存了1级、5级和10级   如图:                           

                 注:在给线程设置优先级时,只需要使用Thread类调用即可

                    如: setPriority(Thread.MAX_PKIORITY)    //设置最高优先级

   4、yieId()    static  void

      用于暂停当前正在执行的线程对象,并执行其他线程,就好比说我执行完

      了,该你了(就是你执行完听一次当抢夺到执行权后在执行,在等

       待...................)





           

















                            

0 0