您的位置:首页 > 编程语言 > Java开发

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

2015-03-17 09:51 447 查看

一、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、冻结状态:遇到sleep(time)方法和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


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


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


待...................)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: