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
用于暂停当前正在执行的线程对象,并执行其他线程,就好比说我执行完
了,该你了(就是你执行完听一次当抢夺到执行权后在执行,在等
待...................)
相关文章推荐
- JAVA基础知识点(自己总结的)
- JAVA基础知识点总结
- Java基础之IO流知识点总结三
- 黑马程序员——java基础----集合框架知识点总结(一)
- Java基础之内部类、匿名类和异常处理知识点总结
- Java 面向对象(基础) 知识点总结I
- Java基础之接口和多态知识点总结
- Java基础知识点总结六
- Java基础之网络编程知识点总结
- 黑马程序员:Java基础总结----(小知识点)foreach循环
- Java基础知识点总结五
- Java基础知识点总结四
- Java基础之反射知识点总结
- JAVA基础容易疏忽的知识点总结
- java基础知识点总结
- java多线程基础知识点总结
- Java基础知识点总结三
- Java基础之静态修饰符知识点总结
- Java基础之集合知识点总结二
- Java基础之IO流知识点总结二