java基础整理
java有几种类型
基本类型引用类型空类型
java有几种基本类型
byte short int long float double boolean char
什么是面向对象
一切皆对象
面向对象有哪些特征
封装继承多态
封装使属性(特征)私有化,
外部不能直接访问,
需要访问属性,
为外部提供公开的方法(行为)进行访问
继承是一种是的关系,子类对父类进行扩展
对父类的复用,java只允许单继承
多态一种事物多种形态
对象的多态,把一个对象复制给不同的引用
方法的多态,重写重载
分别说明重写和重载,有哪些要求
重写是父子类之间,如果创建的是子类对象,
调用重写的方法,执行的是子类的
方法名相同,返回类型相同,参数列表相同
抛出的异常不能更大,访问权限不能更小
重载是在一个类中,为了调用者方便
方法名相同,参数列表不同(参数类型不同,参数个数不同)
类加载搜索的顺序
当前目录rt.jar CLASSPA TH 抛出异常
什么时候会导致类加载
调用java命令时
创建对象时
访问静态成员时
调用Class.forName("类全名")时
this,super分别表示什么
this 当前对象
super 创建当前对象时创建的父类对象
this() 调用本类构造方法,只能出现在构造方法第一行
super() 调用父类构造方法,只能出现在构造方法第一行,至少有一个构造方法第一行是super()
this. 是一个引用,表示当前对象,任意成员方法内
super. 是一个引用,表示创建当前对象时创建的父类对象,任意成员方法内
静态代码块和代码块分别什么时候执行
静态代码块相当于静态方法,类加载时执行,只执行一次
代码块相当于成员方法,创建对象时执行,对于一个对象,只执行一次
比较两个对象有哪些方法
判断两个引用指向的是否是同一个对象==
比较两个引用指向的对象的值equals()
比较对象大小
自然顺序(这样事务本身是有序的)
实现可比较接口Comparable接口,实现compareTo(E obj)方法
零时根据业务逻辑做比较比较器
实现Comparator接口,实现compare(E obj1,E obj2)方法
是否可以继承String类
不能被final修饰
final表示什么,能修饰哪些地方
不可改变
类这个类不能被继承
属性创建完对象以后不能被修改
变量初始化以后不能被修改
方法方法不能被重写
static表示什么
静态的
所有对象共享
属于类的
能修饰属性,方法,内部类,静态代码块
创建对象的步骤
在堆里分配空间
初始化属性(0,0.0,\u0000,false,null,默认值)
调用自己的构造方法
接口和类和抽象类的区别
类和抽象都表示的是现实的事物
接口表示的是规范
抽象类表示的是一个实际存在但是是抽象的事物
接口里的所有属性是public static final
所有方法是public abstarct
抽象类跟普通类差不多,比普通类多了一些抽象方法
接口没有构造方法
抽象类有构造方法
接口和抽象类都不能创建对象
抽象类的构造方法给子类构造方法调用
普通类可以创建对象
抽象类abstarct class
类class
接口interface
String对象能不能修改
不能String采用不变模式
如果需要对一个字符串反复修改
使用StringBuffer和StringBuilder
String和StringBuffer和StringBuilder的区别String 不可以改变
StringBuffer 线程安全
StringBuilder 线程不安全
String s1=new String("abc"); 2
String s2="abc"; 0
String s3="ab"+"c"; 0
String s4="ab"; 1
String s5="c"; 1
String s6=s4+s5; 2 1
总共创建了几个对象,总共创建了几个String对象6 5
基本类型包装类String之间的转换
day11包下
String 和日期之间的转换
day11包下
3种表示日期
day11包下
Object类里所有方法
11个方法
String类的常用方法
GC是什么
垃圾回收器
java程序员不需要关心
内存对象释放问题
由jvm来负责释放内存
如果一个对象没有任何引用指向他
这个对象被视为垃圾,jvm会在空闲时
释放这些空间
而程序员不能控制,只能建议
System.gc() Runtime.getRuntime().gc()
List Set Map的区别
List 有放入顺序,可以重复
Set 没有放入顺序,元素不可以重复
Map 键值对
ArrayList LinkedList Vector的区别
ArrayList,Vector底层都是数组
LinkedList底层是双向链表
ArrayList线程不安全
Vector线程安全
HashMap和Hashtable的区别
HashMap线程不安全,允许有一个key为null,value可以为空Hashtable线程安全,key和value都不允许为null
哈希散列表怎么判断元素不重复
调用hashCode()方法,获得hash码
通过哈希散列运算,获得哈希表里的位置
如果当前位置上没有元素,直接放入return
如果当前位置上有元素,调用equals()方法
如果返回为true,舍弃(HashSet)或覆盖(HashMap)
如果返回为false,以链表形式在当前位置追加
局部内部类能否访问局部变量
可以访问局部变量必须是final修饰的
匿名内部类的功能以及语法
实现或继承父类或父接口,创建对象
new 父类/父接口(){}
异常和错误的区别
Exception 程序执行过程中程序员无法控制出现的问题
Error 人可以解决,程序员不关心
Exception和RuntimeException的区别
Exception强制要求写程序时处理检测异常/非运行时异常
RuntimeException只有在运行时才会产生异常,不要求强制处理运行时异常/非检测异常
处理异常有几种方式
抛出异常
捕获异常
ISO8859-1的字符串转成UTF-8的字符串
new String(s.getBytes("ISO8859-1"),"UTF-8")
public private protected 以及不写的区别
修饰符当前类同包子类其他
public 1 1 1 1
protected 1 1 1 0
不写 1 1 0 0
private 1 0 0 0
IO流的分类
方向
输入流输出流
类型
字节流字符流
功能
节点流包装流
实现对象浅拷贝和深拷贝
clone() 对象序列化
有几种方式实现多线程
实现Runnable接口,实现run()方法
继承Thread类,重写run()方法
怎么解决同步问题
加锁,synchronized,锁方法,锁代码块
线程的生命周期
new时为新建状态
调用start()方法进入就绪状态
当cpu分配了时间片进入运行状态
时间片用完回到就绪状态
直到运行结束进入销毁状态
其中在运行状态遇到sleep()方法或等待io操作进入阻塞状态
阻塞状态结束进入就绪状态,再有cpu分配时间片执行
线程运行时如果代码被加了锁,当前线程没有获得锁,
当前对象进入锁池,当锁被释放,线程获得了到锁回到就绪状态
当有锁的线程调用wait()方法,当前线程进入等待池,释放锁
直到有其他线程调用notify()或notifyAll()方法时等待的线程被唤醒,进入锁池
java调用方法是值传递还是引用传递
Class对象时什么,怎么创建,谁创建
用来管理类的对象,Class类的对象我们无权自己创建,而是在类加载时有jvm创建(单例的)
类与类之间的关系
is a
继承
实现
has a
组合
聚合
关联
use a
依赖
不变模式
一个对象创建完以后,
值不允许改变,
对象状态单一
单例模式
程序运行期间,
这个类有且只有一个实例
简单工厂模式
创建对象,降低调用者和实现者的耦合度
最新javaweb学习课程总结
总结一:javaweb课程总结刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业以来,一直都是学的理论性、框架性的东西,就没有接触到编程的实质性的部分,终于开始学编程了,感觉蛮兴奋的,也是精神饱满,信心十足,怀着一腔热血来听课。 由于JAVAWEB和JSP两门课是同时上的,而且每次都是一整上午,上课时间很长,老师一直有条不紊的讲着,虽然时间很长,但是每当大家上完课,心中都是有一种充实的感觉,大家都觉得有所收获,所以也就不曾觉得累了。 JAVAWEB这门课让我认识了以前见所未见闻所未闻的专业术语,Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。 接下来是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。 接着是Servlet。Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面。然后讲的是标签,包括自定义标签和JSP标准标签库。用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。 我们需要配置的坏境有JDK,Tomcat,还要用到Myeclips这一基础的编程工具。在学习JSP之前,由于没有网页编程的基础,便学习了HTML这种文本标记语言,自己试着去做简单的静态网站。后来学做JSP动态网站时,就涉及到了多方面的知识,JSP内部对象及内部对象所涉及的方法,JSP与数据库连接,如何去引用数据库。这门课更是巩固了JAVA 这一基础编程语言,要求对JAVA掌握的要透彻,每门语言要学扎实,深入理解,都要花费很大的功夫,不是容易的事情。 Jsp与servlet有一定的区别,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。 对JAVAWEB和JSP课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而
JavaWeb期末总结
第一章Web开发基础知识(简单描述)表单(续) 表单元素