JSE第一部分
分享者:张振羽
2017.6.30
1.什么是 JDK API
(1) Application Programming Interface ,应用程序编程接口
(2) 是一些预先定义的函数,开发人员可提供直接调用的功能。
2.JDK包结构
便于维护,按照功能划分,不同功能的累划分在不同功能的包中,常用的包如下表:
3.字符串的基本操作
3.1 String 及其API
3.1.1 String
(1) String是不可变对象
(2) https://www.doczj.com/doc/8d17966324.html,ng.String使用了final修饰,不能被继承。
(3)字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中
(4) 任何一个字符对应2个字节的长度,1个字节 = 8位二进制。
3.1.2 String s=new String (“abc”)
(1) 众所周知,答案是:创建两个对象
(2) why?举例子:
分析步骤:
a) 栈中开辟一块空间存放引用str1(地址信息);
b) String池中有一块空间,存放String常量"abc";
c) 引用str1指向池中String常量"abc";
d) str1所指代的地址即常量"abc"所在地址,输出为true;
结论:创建了一个引用对象str1
分析步骤:
1) 栈中开辟一块空间存放引用str3;
2) 堆中开辟一块空间存放一个新建的String对象"abc";
3) 引用str3指向堆中的新建的String对象"abc";
4) str3所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出false;
3.2 StringBuilder常见API
3.2.1 StringBuiler特点
(a)JDK1.5出现StringBuiler
(b)StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用
(c)线程不安全
3.2.2String 、StringBuiler、StrngBuffer三者区别
(a) String长度不可变,StringBuiler和StringBuiler长度可变
(b) 每一次对String操作改变,都会创建新的对象,而后两个不生成新的对象
(c) StringBuiler和StringBuiler创建必须通过关键字new来创建,String可以不用new,可以直接赋值
(d) StringBuffer线程安全,多线程操作时,使用StringBuffer 安全。
StringBuilder线程不安全,单线程操作时,使用StringBuilder 效率高。。
注意:基本数据类型对象包装类都有 XXX parseXXX 方法,只有一个类型没有parse方法:Character 。
4.正则
4.1正则
(1) 正则本身也是字符串
(2) 用于匹配字符串中字符次序的"规则字符串"
(3) 很多编程语言,包括Java都支持了正则表达式
4.2字符集
4.3常用 API
4.4经典的正则案例
5.1 toString
(a)该方法java希望我们重写时返回一个字符串,这个字符串的原则为:用一个字符串来描述当前对象.
(c)因为Object实现的toString()方法不具备什么实际开发意义,所以若我们需要在子类中使用该方法时通常我们会重写它
举例子:
(3)重写toString
(a)没有重写结果 (a)重写后结果
5.2 equals
Object 提供了比较两个对象是否相等方法equals:
1. 默认的equals不能比较对象中数据是否相等建议子类重写这个方法!
2.重写时候, 按照关键数据比较两个对象是否相等
举例:
不重写equals方法:
3.重写equals方法应遵循几个规则:
(a) 任何对象与null比较都应返回false
(b) 两个对象不属于同一个类时应返回false
(c) 同一个对象equals比较应当恒等为true
5.3 equals与 == 的区别
(1) "=="是变量值比较,
(2) 对于引用类型变量而言,该变量保存的是对象的地址
(3 两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同一
个对象
(2) equals是内容比较
(4)对于两个引用变量而言,是比较两个变量所引用的对象内容是否相同
举例:没有toString的情况下输出p和p1
6.日期及常用API
6.1Date及常用API
6.2 SimpleDateFormat
6.3 Calenda
(1) Calendar本身是抽象类,规定了操作时间的方法定义.
(2) 常用实现类GregorianCalendar,即:阳历立法
(3) Calendar提供了一个静态方法getInstance来根据
(4) 获取和设置时间分量
注意:老外的周日是中国的周一
7 .集合
7.1什么是集合
(1) java提供了一种可以存数一组数据的数据结构.
(2)集合,用来存储一组元素,提供了相关操作元素的方法.
(3) Collection(接口)有两个常见的子接口:
List:可重复集,且有序.
常用的有:ArrayList和LinkedList实现类
Set:不可重复集,大部分实现类是无序的.
7.2 集合和数组的区别
(1) 数组是固定长度的;集合可变长度的。
(2) 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引
用数据类型。
(3) 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据
类型。
7.3 ArrayList和LinkedList的区别
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数结
构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因LinkedLis
要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因ArrayList 要移动数据。
问题:为什么ArrayList随机访问快,而LinkedList增删快?
7.4什么是数据结构
(1)Java中常用的结构:数组、链表、栈、队列
(2)是指相互之间存在一种或多种特定关系的数据元素的集合
(3)特定语法组成的程序+针对不同的事物制定的不同算法。
7.5 ArrayList数据结构(数组)
举例子:
它在内部的数据结构即为数组,类似下面:
int [] arrays = {2,4,6,8},假设,使数组变成{2,4,5,6,8}。
ArrayList内部实现:
(1) 动态扩大数组。
(2) 将原来数组索引为“2”及其后面所有的元素向后移动。
(3) 新元素5到索引为2的位置。
7.6 LinkedList链表结构
7.6.1 链表:
(a) 是在非连续的内存单元中保存数据,并且通过指针将各个内存单元
链接在一起。
(b) 链表不需要提前分配固定大小存储空间,当需要存储数据的时候分
配一块内存并将这块内存插入链表中。
7.6.2 链表分类
(a)单向链表
(b)双向链表
(c)循环链表
LinkedList内部其实做了下面这些事情:
(a) 对半查找出原来索引为2的节点将其前驱改为新增节点5;
(b) 将新增节点5的前驱改为4,后继改为6;节点4的后继改为5。
栈结构:
(1)栈用来存储一组元素,但是存取元素必须遵循先进后出原则
(2)栈结构常被用来实现"后退"功能
(3)Deque是双端队列,但是若只从一段进出队就实现了栈结构.
Deque队列只允许在队尾添加数据,在队头删除数据。但是可以查看队头和队尾的数据。还有一种是双端队列,在两端都可以插入和删除:
7.9集合常用的API
三种方式:
(1) 迭代器
如果要增加删除元素,需要用迭代器的API,若用集合的API,会抛出异常
Exception in thread "main"
java.util.ConcurrentModificationException
举例子:
(1) 集合的get方法
(3) 增强for循环
7.11集合转为数组
7.11集合转为数组
注意:
原因:
1. 集合与数组共享存储空间
2. 不是完整功能的List, 不能改变长度7.12集合排序
案例1:Collections.sort(list) 自然排序
案例2:自定义排序如何比较两个对象的大小?
7.13 Map
7.13.1面试谈谈你对map的认识
(1) Map是个接口,没有继承于Collection接口。
(2) Map提供了一种映射关系,其中的元素是以键值对(key-value)
的形式存储的,能够根据key快速查找对应的value。
(3) Map中的键值对以Entry类型的对象实例形式存在;
(4) key值不可重复,value值可以重复,一个value值可以和很多
key值形成对应关系,每个建最多只能映射到一个值。
(5) Map支持泛型,形式如:Map
(6) 连个实现类HashTable, HashMap
7.13.2 谈谈HashTable和 HashMap
7.13.3常用的API
7.13.3遍历Map
有三种方式:
1:遍历所有的key
2:遍历所有键值对
3:遍历所有的value(相对前两种不太常用)
总结一: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课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而
《Java Web程序设计》课程标准 1.课程定位 1.1课程定位 《Java Web程序设计》是计算机及相关专业学生的程序设计主修课程。修习本课程的目的是让学生在经过基本程序设计能力训练之后,掌握具有较高应用价值的JavaWeb应用程序设计的能力,掌握Java Web网站应用程序设计的方法。本课程的先修课程是《计算机操作基础》和《Java程序设计》,学生必须掌握基本的计算机操作技能、程序设计基础和Java面向对象程序设计的基本的方法,Java语言程序的编写设计方法,并具备一定SQL数据库语言基础及Java数据库应用能力。本课程是一门专业课程,适用于具备程序设计基础知识及网页设计技能的学生。 2.课程目标 Java Web程序设计是大学期间主要的程序设计类课程,以学生构思、创建一个简单网站的过程为主线,建立和掌握JavaWEB应用程序设计的基本概念和方法。本课程学习的效果如何,对学生在计算机应用设计技能的培养和学习有着重要影响,也对学生毕业后的工作能力有相当的作用。在课程讲授过程中,以不同的WEB数据库应用设计作为应用设计最主要的元素,进行教学驱动,通过递进的方式,把完成JavaWEB网站设计的学习进程及内容进行连贯和衔接,总体目标是:让学生建立WEB网站设计的基本基本概念和方法,掌握WEB数据库应用程序设计的规范和基本方法、同时根据不同的应用,掌握WEB网站设计的基本技巧,能够对现实的的问题进行分析和抽象,设计出一个简单的WEB网站,并通过代码实现网站的基本功能,完成应用程序的编写、调试和运行。
2.1知识目标 (1)掌握Web网站设计基本概念、学会Tomcat服务器安装配置 (2)掌握JSP语法基础、脚本编写及程序的运行方法 (3)掌握JSP程序控制方法 (4)掌握JSP指令元素、动作的基本概念及应用方法 (5)掌握主要的JSP内置对象及这些对象的用途 (6)学会根据实际要求设计表单,实现表单的提交及表单数据的提取 (7)掌握WEB数据库应用设计,能够完成WEB数据库的基本访问操作的设计 (8)掌握JavaBean程序的设计和应用方法,学会使用JavaBean进行程序封 装 (9)了解Java Servlet应用及程序的设计方法 2.2能力目标 2.2.1、专业能力目标 (1)熟练掌握WEB应用开发工具,掌握WEB网站设计的基本方法和过程 (2)能够根据实际网站设计要求,完成一个简单网站的程序结构设计 (3)能够合理设计网站数据库结构 (4)能够设计基本的WEB页面,实现数据库的查询及显示操作 (5)能够准确提取WEB数据,完成数据库的添加、修改和删除操作 (6)理解JavaBean程序概念,设计并通过Java类完成WEB应用 (7)能够使用Bean程序对网站数据库操作进行封装 (8)了解Servlet程序的结构和编写方法,完成简单的Servlet应用2.2.2、方法能力目标 (1)建立WEB应用程序设计的思想和基本方法; (2)具备一定的程序逻辑能力,程序模仿能力,程序设计的思维方法和能力; (3)能够自行查找资料,对于给定WEB应用需求进行基本的分析,构思 WEB网站的程序模块结构 (4)能够根据网站需求设计出合理的数据库结构 (5)掌握JSP基本的应用程序的设计和调试方法。 (6)完成页面表单的设计,并实现表单数据提取 (7)掌握WEB数据库的操作方法,实现数据库的查询、添加、更新、删除 操作
Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它
两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运
一、填空题(每题1分,共50分) 1.Java程序可以分为两种基本的类型,分别是_________________和_________________。 2.如果一个类不显示地写上其继承的父类,则它的默认的直接父类是系统类_______________。 3.Java对内存的释放是采用____________________机制。 4.接口的所有成员方法都具有________________和________________属性。 5.设有一个Java应用程序,其源程序文件名为Test.java,则编译该源程序的命令是_________________________,运行该应用程序的命令为_________________________。 6.如果线程类A需要继承类B,而类B不是线程类,则需要通过接口类Runnable构造线程类A,类A的具体定义为 ___________________________________________________。 7.Java系统提供了方法____________________来强制立即回收垃圾。 8.运行以下语句后b的值是__________________。 String s1=“1234”; String s2=new String(“1234”); Boolean b=(s1 = = s2); 9.通过Connection实例对象的_____________________方法可以创建出Statement的实例对象。 10.JAVA小应用程序一般是_____________的子类。 11.JAVA语言通过____________机制简化了程序的内存管理。 12.JAVA字符(char)采用的是___________字符集。 13.面向对象的计算机语言一般应具有3个基本特性:____________、____________和______________。 14.JAVA语言中,捕获异常是通过________________语句结构来实现的。 15.编写线程程序主要是构造线程类,而构造线程类的方式主要有以下两种:(1)____________________________________________ (2)____________________________________________ 16.假设用JAVA语言为清华大学(网址为https://www.doczj.com/doc/8d17966324.html,)编写了图像处理包image,那么按照SUN公司的建议,这个包的名称最好为_________________。 17.JAVA数据类型中,具体包括哪三种引用数据类型:___________、____________、______________。 18.JAVA程序以________为单位进行组织的。 19.如果没有显式的定义类的构造方法,则系统会为该类定义一个默认的构造方法,这个默认的构造方法的作用是_____________________________________。
史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资
深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。
第一章Web开发基础知识(简单描述)表单(续) 表单元素