NetBeans学习笔记
- 格式:pdf
- 大小:5.46 MB
- 文档页数:47
javaweb学习笔记(⼀)基本概念web开发web,⽹页的意思。
静态web:html,css,提供给所有⼈看的数不会发⽣变化动态web:所有⼈看到的数据始终会发⽣变化,不同事件不同地点看到的信息不同。
技术栈:Servlet/JSP,ASP,PHP在java中,动态web资源开发的技术统称为JavaWebWeb应⽤程序Web应⽤程序:可以提供浏览器访问的程序;所有能访问到的页⾯或者资源,都在世界上的某⼀个⾓落的计算机上。
URL这个统⼀的web资源会放在同⼀个⽂件夹下,web应⽤程序--->Tomcat:服务器⼀个web应⽤由多个部份组成(静态,动态)html、css、jsjsp、servletJava程序jar包配置⽂件web应⽤程序编写完毕后,若想提供给外界访问:需要⼀个服务器来统⼀管理静态Web*html、htm,这些都是⽹页的后缀,如果服务器上⼀直存在这些东西,我们就可以直接进⾏读取。
静态web的缺点web页⾯⽆法动态更新,所有的⽤户看到的都是⼀个页⾯轮播图,点击特效:伪状态JavaScript[实际开发中,它⽤的最多]VBScrippt它⽆法和数据库交互(数据⽆法持久化,⽤户⽆法交互)动态Web页⾯会动态展⽰:展⽰效果因⼈⽽异。
缺点假如服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布。
停机维护优点Web页⾯可以动态更新,所有⽤户看到的都不是⼀个页⾯。
它可以和数据库交互Web服务器讲解技术讲解ASP微软:国内最早流⾏的就是ASP;在HTML中嵌⼊了VB脚本,ASP+COM在ASP开发中,基本⼀个页⾯都有⼏千⾏的业务代码,页⾯极其混乱维护成本⾼!IIS<h1><h1><%System.out.println("hello")%></h1><h1></h1></h1>phpphp开发速度很快,功能很强⼤,跨平台,代码很简单()⽆法承载⼤访问量的情况JSP/servletB/S:浏览器客户端C/S:客户端和服务器sun公司主推的B/S框架基于Java语⾔的(所有的⼤公司和⼀些开源的组件,都是Java写的)可以承载三⾼问题带来的影响。
【狂神说Java】JavaWeb⼊门到实战1---笔记转⾃:⽂章⽬录1、基本概念1.1、前⾔1.2、web应⽤程序web应⽤程序:1.3、静态web1.4、动态web2、web服务器2.1、技术讲解2.2、web服务器3、Tomcat3.1安装tomcat tomcat3.2、Tomcat启动和配置3.3、配置3.4、发布⼀个web⽹站4、Http4.1、什么是HTTPHTTP4.2、两个时代4.3、Http请求1、请求⾏2、消息头4.4、Http响应1、响应体2、响应状态码5、Maven5.1 Maven项⽬架构管理⼯具5.2下载安装Maven5.3配置环境变量5.4阿⾥云镜像5.5本地仓库5.6 ~ 5.13笔记-下载地址6、Servlet6.1、Servlet简介6.2、HelloServlet6.2、HelloServlet6.3、Servlet原理6.4、Mapping问题6.5、ServletContext1、共享数据2、获取初始化参数3、请求转发6.6、HttpServletResponse1、简单分类2、下载⽂件3、验证码功能6.7、HttpServletRequest获取参数,请求转发7、Cookie、Session7.1、会话7.2、保存会话的两种技术7.3、Cookie7.4、Session(重点)8、JSP8.1、什么是JSP8.2、JSP原理8.3、JSP基础语法JSP表达式jsp脚本⽚段JSP声明8.4、JSP指令8.5、9⼤内置对象8.6、JSP标签、JSTL标签、EL表达式9、JavaBean10、MVC三层架构10.1、以前的架构10.2、MVC三层架构11、Filter (重点)12、监听器13、过滤器、监听器常见应⽤14、JDBC15、SMBMS(超市管理项⽬)1、基本概念1.1、前⾔web开发:web,⽹页的意思,·静态webhtml,sss提供给所有⼈看的数据始终不会发⽣变化!动态web淘宝,⼏乎是所有的⽹站;提供给所有⼈看的数据始终会发⽣变化,每个⼈在不同的时间,不同的地点看到的信息各不相同!技术栈:Servlet/ISP,ASP,PHP1.2、web应⽤程序web应⽤程序:可以提供浏览器访问的程序;a.html、b.html.….多个web资源,这些web资源可以被外界访问,对外界提供服务;你们能访问到的任何⼀个页⾯或者资源,都存在于这个世界的某⼀个⾓落的计算机上。
图书馆管理系统开发步骤图书馆管理系统开发步骤((三)这一部分,我们学习如何创建并实现登录窗口。
最后完成的登录窗口如下图所示:1、创建创建登录窗体类登录窗体类首先启动NetBeans IDE ,右键单击项目,在弹出的上下文菜单中,依次选择【新建】|【JFrame 窗体…】菜单项,打开新建窗体向导对话框。
如下图所示:在弹出的“新建JFrame 窗体”对话框中,设置新建登录窗体的名称为“LoginIFrame ”,取包名为“com.xuejava.iframe ”。
然后单击【完成】按钮。
如下图所示:此时会出现新建窗体的设计窗口,及相关属性和导航窗口。
如下图所示:2、设计登录窗体布局接下来,在放置组件之前,要先设计好登录窗体的布局。
在这里,我们将登录窗体的布局,设置为BorderLayout布局模式(边框式布局)。
具体操作如下图所示:在设计窗口,在上、中、下三个区域分别放入一个JLabel组件和两个JPanel面板组件。
如下图所示:因为最下方的面板中,我们只用来放置两个按钮:登录和重置按钮。
很明显,下方的面板有点快。
所以我们需要进一步调整面板的大小。
先选中最下方的面板,然后在右侧的属性面板中,打开一个名为“preferredSize”的属性,将其高度改为60。
如下图所示:单击【确定】按钮,再转到窗体“设计”界面,会发现最下方的面板高度明显减少。
如下图所示:3、添加组件3.1 选中最上方的jLabel组件,设置其背景为login.jpg图片。
如下图所示:单击【确定】按钮,此时界面如下图所示(可能图片宽度小于默认的窗体宽度,适当调整窗体宽度到与图片宽度相同):3.2 在中间的面板中,放置接收用户输入信息的组件。
如下图所示:3.3 在最下方的面板中,放置两个按钮组件:一个用户提交用户登录信息,一个用来重置用户输入。
如下图所示:4、添加按钮的事件响应代码为了让我们的程序具备更好的可读性,我们需要为控件设置符合Java规范的变量名,而不是使用IDE自动生成的默认变量名。
说明:在编程中我们会在某个类、方法或变量前面加上@x,来表明这个类、方法或变量具有x属性。
1.Servlet1).Servlet 是什么?Java Servlet 是运行在Web 服务器或应用服务器上的程序,它是作为来自Web 浏览器或其他HTTP 客户端的请求和HTTP 服务器上的数据库或应用程序之间的中间层。
2).Servlet 有以下几点优势(1).性能明显更好。
(2).Servlet 在Web 服务器的地址空间内执行。
这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
(3).Servlet 是独立于平台的,因为它们是用Java 编写的。
(4).服务器上的Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。
因此,Servlet 是可信的。
(5).Java 类库的全部功能对Servlet 来说都是可用的。
它可以通过sockets 和RMI 机制与applets、数据库或其他软件进行交互。
3).Servlet 架构过程为:(1) 客户端发送请求至服务器端;(2) 服务器将请求信息发送至Servlet;(3) Servlet 生成响应内容并将其传给服务器。
响应内容动态生成,通常取决于客户端的请求;(4) 服务器将响应返回给客户端。
4).servlet生命周期(1).客户端请求该Servlet;(2).加载Servlet 类到内存;(3).实例化并调用init()方法初始化该Servlet;(4).service()(根据请求方法不同调用doGet() 或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());(5).destroy()。
5).看一下老师ppt和教程(这个很不错/holandstone/article/details/16844957)想学的更好就看servlet-api.chm2.web socket(1).web socket:是HTML5一种新的协议。
j a v a学习心得笔记 LEKIBM standardization office【IBM5AB- LEKIBMK08- LEKIBM2C】java学习心得笔记j2ee学习笔记注:框架可以用word菜单中的“视图/文档结构图” 看到j2ee模式value object(值对象) 用于把数据从某个对象/层传递到其他对象/层的任意java对象。
通常不包含任何业务方法。
也许设计有公共属性,或者提供可以获取属性值的get方法。
jsp1.jsp的基础知识_______ | directive (指令)| |-- scripting (脚本)jsp -------| |__ action (动作)||_____template data :除jsp语法外,jsp引擎不能解读的东西1)在jsp中使用的directive(指令)主要有三个:a) page指令b) include指令c) taglib指令在jsp的任何地方,以任何顺序,一个页面可以包含任意数量的page指令2)scripting(脚本)包括三种类型a) <%!declaraction %>;b) <% scriptlet %>;c) <%= expression %>;3)action(动作)标准的动作类型有:a) <jsp:usebean>;b) <jsp:setproperty>;d) <jsp:getproperty>;e) <jsp:param>;f) <jsp:include>;g) <jsp:forward>;h) <jsp:plugin>;1. 注释: <% -----jsp comment-------%>;<! -----html comment-------%>;2. <%@ page session = “true” import =”.*” %>;session可以不赋值,默认为true,如果session=”false”,则在jsp页面中,隐含的变量session就不能使用。
信息技术教师业务学习笔记信息技术教师业务学习笔记1.as基元数据类型boolean,int,number,string,uint其中int、number、uint是处理数字的。
int用来处理整数,number用来处理很长又有小数点的数字,uint处理很大的正整数。
2.复杂数据类型,往往由基元类型构成。
有:array、date、error、function、regexp、xml、xmllist。
3.everythingisanobject;4.变量声明的方法和其它语言不同。
使用var变量名:数据类型;不指定类型就是untyped。
5.as每行结尾不加;也不会报错。
6.基元数据类型采用的也是引用。
称为不变对象。
这样做的原因是比直接保存值节省内存。
效率更高。
继承object.在我看来已经是个对象了。
7.常量const变量:变量类型。
8.boolean默认是false。
9.int和uint是整形数值.number是处理浮点数。
int是有符号的32位整形数,范围-2147483648-2147483647(-2的31次方到2的32次方-1)第一位保存符号。
uint是32位无符号整型。
number是64位浮点值。
number和java的double相同10.object以键-值保存数组,forin,foreachin是为遍历object这种类型还创建的。
因为无法使用索引访问。
11.as不支持重载。
它使用…args来实现12:==和===区别是。
第一个会进去类型转换。
13.顶类有28个,10个异常类。
C#.NET转Java学习笔记⼤学研究了三年的.Net,由于偶然的机会,拿到IBM的Java web实习offer,所以决定转⾏搞Java(综合了校招情况、发展前景和其他各种因素)。
下⾯是我在学习Java web的⼀些学习笔记(可能会⽐较乱,希望能做个备忘,如果能对您有帮助那就更好了)Servlet相关--------------------------1.Servlet的⽣命周期:Servlet⽣命周期分为三个阶段: 1,初始化阶段:调⽤init()⽅法 2,响应客户请求阶段:调⽤service()⽅法 Service()⽅法内部对请求的类型(get/post)进⾏了判断,⾃动调⽤doPost/doGet 3,终⽌阶段:调⽤destroy()⽅法2.Servlet的单例多线程:单例:Servlet只在⽤户第⼀次请求时被实例化,并且是单例的,在服务器重启或关闭时才会被销毁。
多线程:当请求到达时,Servlet容器(Tomcat...)通过线程池中可⽤的线程给请求者并执⾏Service⽅法。
Java基础相关-----------------------1.多线程线程创建的两种⽅法:第⼀种,实现Runnable接⼝package test.Thread;import org.junit.Test;//This example shows the two method to create new thread.The java file "MyThread" shows the other method.public class NewThread{@Testpublic void Fun(){RunnableThread rt = new RunnableThread();Thread t1 = new Thread(rt,"First");Thread t2 = new Thread(rt,"Second");t1.start();t2.start();}}class RunnableThread implements Runnable{@Overridepublic void run() {// TODO Auto-generated method stubfor(int i=0;i<100;i++){System.out.println(Thread.currentThread().getName());}}}第⼆种,继承Thread类package test.Thread;public class MyThread extends Thread{//The constructor without parameterpublic MyThread(){}//The constructor with name parameterpublic MyThread(String name){super(name);}public void run(){for(int i=0;i<100;i++){System.out.println(this.getName());}}}线程的同步使⽤同步锁synchronized,参见卖票程序。
Java⽹络编程(Socket基础,多线程socket,socket中⽂乱码问题)学习笔记1.概念2.简单TCP通信代码,⽤两个java程序模拟客户端和服务器端。
客户端代码:TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据表⽰客户端的类:.Socket:此类实现客户端套接字(也可以就叫“套接字”)。
套接字是两台机器间通信的端点。
套接字:包含了IP地址和端⼝号的⽹络单位构造⽅法:Socket(String host, int port) 创建⼀个流套接字并将其连接到指定主机上的指定端⼝号。
参数:String host:服务器主机的名称/服务器的IP地址int port:服务器的端⼝号成员⽅法:OutputStream getOutputStream() 返回此套接字的输出流。
InputStream getInputStream() 返回此套接字的输⼊流。
void close() 关闭此套接字。
实现步骤:1.创建⼀个客户端对象Socket,构造⽅法绑定服务器的IP地址和端⼝号2.使⽤Socket对象中的⽅法getOutputStream()获取⽹络字节输出流OutputStream对象3.使⽤⽹络字节输出流OutputStream对象中的⽅法write,给服务器发送数据4.使⽤Socket对象中的⽅法getInputStream()获取⽹络字节输⼊流InputStream对象5.使⽤⽹络字节输⼊流InputStream对象中的⽅法read,读取服务器回写的数据6.释放资源(Socket)注意:1.客户端和服务器端进⾏交互,必须使⽤Socket中提供的⽹络流,不能使⽤⾃⼰创建的流对象2.当我们创建客户端对象Socket的时候,就会去请求服务器和服务器经过3次握⼿建⽴连接通路这时如果服务器没有启动,那么就会抛出异常ConnectException: Connection refused: connect如果服务器已经启动,那么就可以进⾏交互了import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .Socket;import java.util.Scanner;public class TCPClient {public static void main(String[] args) throws IOException {Scanner cin = new Scanner(System.in);Socket socket = new Socket("127.0.0.1",8888);InputStream is = socket.getInputStream();while(true){//给服务器端发数据System.out.println("请输⼊你要向服务器发送的数据:");String sendMessage = cin.nextLine();OutputStream os = socket.getOutputStream();os.write(sendMessage.getBytes());//接收服务器端发过来的数据byte[] getMessage = new byte[1024];int len = is.read(getMessage);String message = new String(getMessage,0,len);System.out.println("收到服务器端发来的数据为: "+message);}}}服务器端代码:TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据,给客户端回写数据表⽰服务器的类:.ServerSocket:此类实现服务器套接字。
黑马程序员:前端阶段笔记Canvas第二天text-overflow属性作用:设定内容溢出状态下的文本处理方式。
取值:clip:默认值当对象内文本溢出时不显示省略标记(...),而是将溢出的部分裁切掉。
ellipsis:当对象内文本溢出时显示省略标记(...)。
注意:该属性需要和over-flow:hidden属性(超出处理)还有white-space:nowrap(禁止换行)配合使用,否则无法看到效果text-align属性作用:设定文本对齐方式取值:left :默认值内容左对齐。
center:内容居中对齐。
right:内容右对齐。
justify:内容两端对齐。
写本文档时仅Firefox能看到正确效果start:内容对齐开始边界。
(CSS3)end:内容对齐结束边界。
(CSS3)text-transform属性作用:设定文本的大小写等形式的转换取值:none:默认值无转换capitalize:将每个单词的第一个字母转换成大写uppercase:转换成大写lowercase:转换成小写full-width:将左右字符设为全角形式(CSS3)不支持full-size-kana:将所有小假名字符转换为普通假名(CSS3)不支持例如:土耳其语。
text-decoration属性作用:设定文本修饰线。
取值:[ text-decoration-line ]:不支持指定文本装饰的种类。
相当于CSS1时的text-decoration属性[ text-decoration-style ]:不支持指定文本装饰的样式。
[ text-decoration-color]:不支持指定文本装饰的颜色。
blink:指定文字的装饰是闪烁。
仅opera和firefox例如:text-decoration : overline CSS1实例text-decoration : #F00 double overline CSS3实例备注:目前主要浏览器都没有实现上述属性,但是依然可以使用CSS1的实例方式text-decoration-line属性, 备注:目前大部分浏览器未实现该属性。
最全⾯的Spring学习笔记致⼒于提供⼀种⽅法管理你的业务对象。
在⼤量Java EE的应⽤中,随处可见Spring。
今天我将简单的介绍⼀下Spring这个框架。
本⽂适合读者:想学Spring的Java开发者刚⽤Spring不久的⼈Why为什么要使⽤Spring?Spring主要两个有功能为我们的业务对象管理提供了⾮常便捷的⽅法:DI(Dependency Injection,依赖注⼊)AOP(Aspect Oriented Programming,⾯向切⾯编程)Java Bean每⼀个类实现了Bean的规范才可以由Spring来接管,那么Bean的规范是什么呢?必须是个公有(public)类有⽆参构造函数⽤公共⽅法暴露内部成员属性(getter,setter)实现这样规范的类,被称为Java Bean。
即是⼀种可重⽤的组件。
DI-依赖注⼊简单来说,⼀个系统中可能会有成千上万个对象。
如果要⼿⼯维护它们之间的关系,这是不可想象的。
我们可以在Spring的XML⽂件描述它们之间的关系,由Spring⾃动来注⼊它们——⽐如A类的实例需要B类的实例作为参数set进去。
AOP-⾯向切⾯编程就以⽇志系统为例。
在执⾏某个操作前后都需要输出⽇志,如果⼿⼯加代码,那简直太可怕了。
⽽且等代码庞⼤起来,也是⾮常难维护的⼀种情况。
这⾥就需要⾯向切⾯来编程How关于BeanBean的⽣命周期如你所见,在bean准备就绪之前,bean⼯⼚执⾏了若⼲启动步骤。
我们对图进⾏详细描述:1. Spring对bean进⾏实例化;2. Spring将值和bean的引⽤注⼊到bean对应的属性中;3. 如果bean实现了BeanNameAware接⼝,Spring将bean的ID传递给setBean-Name()⽅法;4. 如果bean实现了BeanFactoryAware接⼝,Spring将调⽤setBeanFactory()⽅法,将BeanFactory容器实例传⼊;5. 如果bean实现了ApplicationContextAware接⼝,Spring将调⽤setApplicationContext()⽅法,将bean所在的应⽤上下⽂的引⽤传⼊进来;6. 如果bean实现了BeanPostProcessor接⼝,Spring将调⽤它们的post-ProcessBeforeInitialization()⽅法;7. 如果bean实现了InitializingBean接⼝,Spring将调⽤它们的after-PropertiesSet()⽅法。
java从入门到精通读书笔记(一)Java从入门到精通笔记入门篇•熟悉Java发展历史•安装JDK、Eclipse•编写Hello World程序•了解Java基本语法•掌握变量、数据类型、运算符、控制语句面向对象编程•了解面向对象的特点•掌握类和对象的概念•学习继承、封装、多态等基本概念•实现类的定义和对象的创建•学习重载和重写集合和IO•学习Java中的容器类•掌握ArrayList、HashSet、HashMap等集合的使用•熟悉Java中的IO操作•了解文件操作、序列化等内容网络编程•掌握socket通信•理解TCP/IP协议•学习HTTP协议•实现客户端和服务器高级Java特性•学习反射、注解等高级特性•掌握多线程编程•熟悉JVM架构•学习异常处理JavaWeb编程•掌握Servlet、JSP等技术•学习MVC框架•熟悉Web应用服务器•学习数据库编程总结•学习Java需要不断积累•遇到问题可以通过搜索引擎解决•不断实践,多写代码•持续学习新技术,保持竞争力入门篇Java语言是面向对象的编程语言,是一种广泛使用的计算机编程语言。
Java语言从1996年开始被发布,现在已被广泛应用于客户端和服务器端程序的开发。
在学习Java之前,需要先了解Java的发展历史。
安装JDK、EclipseJava的开发需要安装JDK和Eclipse。
JDK是Java开发工具包,其中包含了Java编译器等工具。
Eclipse是一款常用的Java IDE(集成开发环境),可以用于编写,调试和运行Java代码。
编写Hello World程序在学习Java语言之前,需要先学会编写Hello World程序,这是一个非常简单的程序,可以帮助初学者快速上手Java编程。
public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");}}了解Java基本语法Java是一种强类型的语言,需要对数据类型进行明确的定义。
学习笔记-java核⼼技术卷⼀整理下core of java第三章、java的基本程序设计结构⼀个简单的java应⽤程序⼀个简单的java应⽤程序,概览下java的语法public class FirstSample{public static void main(String[] args){System.out.println("We will not use 'Hello, World!'");}}1. java对⼤⼩写敏感2. 关键字public :访问修饰符,⽤于控制程序的其他部分对于这部分代码的访问级别3. 关键字class:java程序中的全部内容都包含在类中,java程序的所有内容都应该放置在类中4. class后紧跟类名,类名的命名格式:以⼤写字母开头的名次,使⽤骆驼命名法,是数字和字母的组合5. 源⽂件的⽂件名必须与公共类的⽂件名相同,并以.java做扩展名6. 运⾏编译程序时,java虚拟机从指定类的main⽅法开始执⾏,每⼀个java程序都必须要有⼀个main⽅法7. java⽤{}花括号划分程序的各个块,任何⽅法的代码都以{开始,⽤}结束,我们⼀般会把匹配的花括号上下对齐,java执⾏忽略空格符号8. 每个句⼦必须⽤分号;结束,回车不是结束标志,因此需要时可以将⼀条语句写在多⾏上9. java的通⽤语法是:object.method(parameter)等价于于函数调⽤,点号⽤于调⽤⽅法10. java⽅法可以没有参数,也可以有⼀个两个N个参数,但是没有参数也要有空括号()(⼀般⽅法⾸字母是⼩写,基本类型也是⼩写,其他对象类名接⼝名⾸字母⼤写,后续单词都⽤驼峰命名法)数据类型java是⼀种强类型的语⾔,必须为每⼀个变量声明⼀种类型,在java中⼀共⼋种基本类型四种整型 int(4字节) short(2字节) long(8字节) byte(1字节 -2^7 ~2^7 ) [bait]两种浮点型 float(4字节) double(8字节)char类型表⽰单个字符,如’A‘,常⽤于表⽰字符常量,表⽰Unicode编码布尔类型只有两个值,true 和 false,⽤来判断逻辑条件,整型和布尔值之间不可以相互转换声明变量举例 int num;类型名在变量名之前,并且这条语句以分号结束变量名是⼀个以字母开头的由字母或数据构成的序列,java中的字母指Unicode字符,包括下划线等变量初始化声明⼀个变量以后,⼀定要使⽤赋值语句对变量进⾏显式的初始化,不可使⽤未被初始化的变量对于已声明的变量进⾏复制的格式是,变量名放在等于号左侧,响应的java表达式处于等于号右侧int num;int num = 10;也可以把变量的初始化和声明放在⼀⾏,⽐如int num = 10;常量java中,使⽤final关键字指⽰常量,表⽰这个变量只能被赋值⼀次,⼀旦被赋值后,就不能再更改了,⼀般常量名全部⼤写在java中,经常会希望某个变量可以在⼀个类中的多个⽅法使⽤,通常将这些变量称为类变量,可以⽤关键字static final设置⼀个类常量类常量定于于main⽅法外⾯,那么这个类的其他⽅法也能使⽤这个常量,如果类常量被声明为public,那么其他类也能使⽤这个常量如果想要该常量在其他类的⽅法也可以使⽤,那么就加上public关键字,只在此类的⽅法使⽤,那么加上private关键字运算符+ - * / % 加减乘除取余,当参与/运算的都是整型时,表⽰整数除法,如果有⼀个是浮点数,那么是浮点除法可以在赋值语句中,使⽤⼀种简化的格式书写⼆元算数运算符例如 x + = 4;等价于x = x+ 4⾃增和⾃减运算符,n++相当于将变量n的当前值+1,n--将n的值减⼀,⾃增和⾃减运算符需要注意两个点⾃增和⾃减运算符更改了变量的值,所以操作数不可以是数值,⽐如4++是不合法的⾃增和⾃减运算符可以前缀形式,++n和n++结果⼀样,但是在数学表达式中,++n使⽤+1之后的值,n++使⽤当前值,最好不要在表达式⾥中⽤关系运算符关系运算符 == 检验相等!=校验不等于 < > <= >=逻辑运算符 && 逻辑与 || 逻辑或!逻辑⾮,逻辑运算时,如果第⼀个操作数已经能确定表达式的值,那么不会计算第⼆个操作数三元运算符问号 condition?exp1:exp2 条件为真时计算第⼀个表达式,条件为假时计算第⼆个表达式,并返回对应表达式的值位运算符在处理整型数值时,可以直接对组成整型的各个位进⾏操作,这意味着可以使⽤屏蔽技术获得整数中的各个位&与|或^异或~⾮关于异或,如果符号左右两值不相等,异或结果为1,相等结果为0;强制类型转换=(类型名)变量枚举类型 enum Size {q,w,d };字符串,java基本类型⾥没有字符串类型,有⼀个预定义类String,每个⽤双引号括起来的字符都是String类的⼀个实例substring⽅法可以从较⼤字符⾥获得⼀个⼦串s.substring(n,m)从位置为s字符串的位置n的字符到位置m-1的字符,总长度为m-n,⽐如(0,3)是0 1 2 三个字符允许⽤+号拼接两个字符串,且如果+号连接的有⾮字符串,后⼀个被⾃动转换成字符串并拼接JAVA字符串不可更改,因为String类没有提供⽤于直接修改字符串的⽅法,如果想更改,可以⽤substring截取后再⽤+号拼接的⽅式String类的equals⽅法可以⽐较字符串是否相等,不可以⽤==,⽤==⽐较的是字符串所在的位置String类的⼀些⽅法,假设⼀个String str =“abcdef”;int i =str.length() ; 返回⼀个int值,为字符串的长度,6char c=str.charAt(2);返回⼀个char值,为位置2的字符,也就是cchar c[] =str.toCharArray();返回⼀个char数组类型for(int i = 0; i < c.length; i++) {};可以c数据遍历int a1 = str.indexOf("bc",0);返回bc字符串第⼀次出现的开始位置,如⽆返回-1int q2 = stIndexOf("bc");返回bc字符串最后⼀次出现的开始位置,如⽆返回-1equals(String other) ;⽐较字符串是否相等,相等返回trueequalsIngnoreCase(String other);⽐较字符串是否相等,忽略⼤⼩写,相等返回trueString s = str.toUpperCase(); 返回全部⼤写的字符串String s = str.toLowerCase();返回全部⼩写的字符串trim();删除字符串前后的空格contains(String other) ;是否包含对应的字符串,包含返回truestartsWith(String other);是否以某字符串开始,是返回trueendsWith(String other);是否以某字符串结束,是返回trueString s =str.replace(char oldchar,char newchar)⽤newchar替换str⾥的所有oldchar string 和int之间的转换string转换成int :Integer.valueOf("12")int转换成string : Integer.valueOf(12)由于java String的拼接⽐较⿇烦,所以可以使⽤Stringbuilder 类,也可以成为String的构建器Stringbuilder b = new StringBuilder();int length()StringBuilder append(String str)拼接⼀个字符串并返回thisStringBuilder append(char c)拼接⼀个字符并返回thisvoid setCharAt(int i ,char c) 将位置i的代码单元设置为cStringBuilder insert(int i,String s)在i位置插⼊⼀个代码单元并返回thisStringBuilder insert(int i,char c)在i位置插⼊⼀个代码单元并返回thisStringBuilder delete(int n,int m)删除从n开始到m-1的代码单元并返回thisString toString()返回⼀个和构建器内容相同的字符串(java中计算位置都是从0开始的)打印输⼊输出到控制台输⼊:略输出 System.out.println(x);控制流程java使⽤条件语句和循环结构确定控制流程⼀对花括号括起来的若⼲条java语句叫做块,块确定了变量的作⽤域块可以嵌套,不能在嵌套的两个块中声明同名的变量条件语句条件为真时,执⾏⼀条语句if(condation)statement//注意观察这个条件语句,if直接跟括号,括号⾥放条件,如果是⼀条,可以直接在⼩括号⾥放如果希望条件为真时,执⾏多条语句,那么就要使⽤块,也就是⽤中括号把代码扩起来if(condation){statement1;statement2;}带else的情况就是 if(condation) statement1 else statement2注意块的逻辑是若⼲条java语句,所以如果条件语句嵌套,也是利⽤中括号来实现的循环语句while(condation)statement如果条件为ture时,循环执⾏之后的语句或者语句块//注意,这⾥可以看出条件语句都在⼩括号⾥如果条件为false 就什么也不执⾏如果想要其后的语句⾄少执⾏⼀次,那么使⽤do statement while(condation)do while是先执⾏语句或者语句块,再检验循环条件,如果为true继续执⾏语句,为false继续向下执⾏确定循环for循环是⽀持迭代的⼀种通⽤结构,利⽤每次迭代之后更新的计数器或者类似变量来控制迭代次数⽐如把1到10的数输出发到屏幕上for(int i=1;i<=10;i++)System.out.println(i);for (计数器初始化;每次新⼀轮循环前需要检测的循环条件;如何更新计数器)for语句的三个部分应该对同⼀个计数器变量进⾏初始化、检测、更新for语句的第⼀部分声明的变量,这个变量的作⽤域就只是for循环的整个循环体,不可在循环体之外使⽤那么因此产⽣两个现象,⼀是可以在各⾃独⽴的不同的for循环定义同名的变量第⼆个是,如果我们想要在循环体之外使⽤计数器的终值,要确保这个变量在循环语句的前⾯⽽且在外部声明!如下int i;for (i=1;i<=10;i++){...}for循环是while循环的⼀种简化形式,可以使⽤while循环写出同样的逻辑还有⼀种for each循环,可以依次处理数组中的每个元素,⽽不必考虑指定下标for (某变量:集合)语句块⽐如for(int element:a)定义⼀个某变量⽤来暂存集合中的每⼀个元素,针对该变量执⾏语句,达到遍历执⾏的效果也就是for each element in a但是在不希望遍历集合的每个元素,或者循环内部需要下标时,还是需要传统for循环多重选择:switch为了避免if else结构在处理多个选项时的笨重,可以使⽤switch语句switch语句将执⾏与选项值相匹配的case开始执⾏直到遇到break语句,如果⽆任何匹配case,⾛default⼦句switch(choice){case1:...break;case2:...break;default://bad input...break;}case可以是char byte short int或者其包装类,枚举常量,如果是枚举常量时,不⽤在每个标签中指明枚举值,可以由switch的表达式值确定⼤数值:略数组数组是⼀种数据结构,⽤来存储同⼀类型值的集合,通过⼀个整型下标可以访问数组中的每⼀个值,如a[i]数组变量的声明,数组类型[] 数组变量的名字,⽐如 int[] a //可以将int[] 理解为整型数组,那么显然a被声明了⼀个整型数组给数组a赋值,数组是⽤new运算符创建的,int[] a= int(100); 该语句创建了⼀个可以储存100个整数的数组数组长度也可以是个变量 a=new int(n);创建⼀个长度为n的数组创建数组后,如果是数字数组,所有元素初始化为0,布尔类型初始化为false,对象数据初始化为null数组的初始化也有⼀种简写形式,可以进⾏初始化元素值,同时定义数组长度int[] test ={2,35,6,7};test =new int[] {2,35,6,7};要获得数组的元素的个数,可以使⽤a.length⼀旦创建了数组就不能改变它的⼤⼩,如果经常需要改变数组⼤⼩的,就应该使⽤另⼀种数据接⼝,数组列表(arraylist)//通过此理解下【数据结构】的概念数组拷贝:略命令⾏参数每个java应⽤程序都有⼀个带String args[] 参数的main⽅法,这个参数表明main⽅法将接收⼀个字符串数组,也就是命令⾏参数数组排序可以⽤Arrays类的sort⽅法快速排序,Arrays.sort(a);多维数组,声明⼀个多维数组 double[][] =balances;多维数组其实是数组的数组,数组的每个元素是包含元素的数组//需要了解Array类和ArrayList类,使⽤范围和区别,并因此去看⼀些算法题,你要举重若轻对象与类类是构造对象的模版,由类构造对象的过程称为创建类的实例java编写的所有代码都位于某个类的内部封装是将对象的数据和⾏为组合在⼀个包⾥,并对对象的使⽤者隐藏了的具体实现⽅式每个特定的对象都有⼀组特定的属性值,这些值的集合就是这个对象的当前状态实现封装的关键是,不能让类中的⽅法直接访问其他类的实例域,程序仅仅通过对象的⽅法与对象数据进⾏交互对象的三个主要特性:⾏为,状态,标识对象的状态只能通过调⽤⽅法来实现OOP的编写思路:⾸先从设计类开始,然后往每个类⾥加⽅法(算法题是直接写⽅法,所以确定了⽅法参数和返回即可),经验之谈是名词对应属性,动词对应⽅法要想使⽤对象,⾸先要构造对象,并指定其初始状态,然后,对对象使⽤放哪啊⾼发⽅法的构造:java中使⽤构造器构造新实例,构造器是⼀种特殊的⽅法,⽤来构造并初始化对象构造器的特点构造器名字与类相同 //构造器⾸字母⼤写,不同于其他⽅法每个类可以有⼀个以上的构造器构造器可以有0个、1个或者多个参数构造器没有返回值构造器总伴随这new操作符⼀起被调⽤new date()通过new操作符和构造器⽅法构造⼀个对象后,该对象可以传给其他⽅法,也可以对该对象使⽤⽅法如果希望构造的对象多次使⽤,可以将对象存放在⼀个变量中 Date d = new Date();Date是类型声明,d是变量,new操作符号,Date()构造器d就是⼀个对象变量,即引⽤了⼀个Date对象修改实例域⽅法称为修改器⽅法,习惯上会加上前缀set仅访问实例域⽽不修改的⽅法称为访问器⽅法,习惯上会加上前缀get⼀个完整的程序,应该将若⼲类组合在⼀起,其中只有⼀个类有main⽅法最简单的类定义形式:class 类名{属性构造器⽅法}源⽂件名(xxxx.java)必须与public的类名⼀致,在⼀个源⽂件中只能有⼀个公有类,但是可以有任意数⽬的⾮公有类程序员习惯于将每⼀个类存到⼀个单独的源⽂件⾥对于某些⽅法来说,出现在括号⾥的参数是显式参数,⽽如果会⽤到对象本⾝,这个对象就是隐式参数,关键词this可以表⽰隐式参数final 实例域,在每⼀个构造器执⾏之后,这个域的值被设置,并且在后⾯的操作不会再对它进⾏修改static 静态域,被static 修饰的属性,属于类,⽽不属于对象,没有static修饰的属性则每个对象有不同的属性静态常量,也是⼀个意思,属于类,⽽不属于对象,如果不被static修饰,则每个对象都要拷贝⼀份,⽐如private final static double PI 静态⽅法,是没有this参数的⽅法,即不能对对象本⾝实施操作的⽅法,如果⼀个⽅法不需要访问对象状态,所需要参数都是显式参数;或者只需要访问类的静态域,可以使⽤静态类每个类对象的⽅法都可以对公有域进⾏修改,所以⼀般不要把实例域设计成publicmain⽅法就是个静态⽅法值调⽤:表⽰⽅法接收的是调⽤者提供的值,不可修改引⽤调⽤:⽅法接收的是调⽤者提供的变量地址,可修改JAVA总是按值调⽤,⽅法所得到的是所有参数值的⼀个拷贝⼀个⽅法不可能修改⼀个基本数据类型的参数重载:如果⼀个类中,多个⽅法有相同的名字,不同的参数,便产⽣了重载要完整的描述⼀个⽅法,需要指出⽅法名和参数类型,即⼀个⽅法的唯⼀标识是⽅法名和参数类型的组合⼀个类,最好要有⼀个⽆参数的构造器,如果⼀个构造器都没有,系统会提供⼀个⽆参数构造器如果⼀个类的实例域有每个构造器都会需要赋值的,可以将其直接在类中赋值Random()构造⼀个新的随机数⽣成器int nextInt(int n )返回⼀个1~ n-1之间的随机数java允许使⽤包将类组织起来,使⽤包的主要原因是确保类名的唯⼀性标记public 的类,可以被任意的类使⽤标记private的类,只能被定义他们的类使⽤如果没有标记,这⼀部分可以被同⼀个包的所有⽅法访问继承:基于已有的类构造⼀个类,⼦类可以继承⽗类的实例域和⽅法,在此基础还可以添加新的⽅法和域,以满⾜新需求继承关系的判定,即is -a关系,每个⼦类对象也是⽗类的对象多态抽象类抽象⽅法ArrayList是⼀个采⽤类型参数的泛型类,尖括号中的类型就是数组列表中保存的元素对象类型ArrayList<Integer> data = new ArrayList<>;add⽅法在数组列表的尾部添加元素增void add(int index,T obj)在index位置插⼊obj,其他元素向后移动int size()返回实际包含的元素数⽬T set(int index,T obj)⽤obj覆盖对应index的值T get(int index)获取指定位置的元素值T remove(int index)删除⼀个元素,将后⾯的元素向前移动,被删除的元素由返回值返回Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
NetBeans学习笔记
第一章NetBeans集成开发环境创建第一个NetBeans项目打开NetBeans,新建项目——〉应用程序——〉项目名称:firstexample,设定存储位置——〉在main函数下输入代码:System.out.println(“欢迎使用NetBeans5.0,这是第一个例子。”);——〉保存——〉运行。源代码编辑器尽管可视化开发大大缩短了开发人员的时间,但是代码的编写还是不可被取代的,代码的编写仍然是整个程序的核心部分。一个程序的好坏,很大程度上取决于代码的编写。NetBeans提供的代码编辑器十分好用,对于代码的整体性,自动查找错误和修复上面,有了很好的帮助。
第二章Swing概述Swing是SUNMicroSystem建立的新一代GUI工具包,允许用户进行企业级的开发。Swing的开发需要许多的包,这里不再一一介绍,当开发的时候,NetBeans会提醒你添加需要的包,通过修复添加就可以。下面,我们来进行一个简单得Swing程序。再使用了JDK以后,我们对java语言已经有了一定的认识和了解。虽然NetBeans可以使用控件来进行开发,但是必要的代码开发,还是不可少的。在没有习惯以及熟练掌握控件的托拽开发以前,让我们先利用代码来编写一个小的程序。步骤如下:建立一个项目,创建一个扩展Jframe的类FirstSwing用来存放各个组件。在main()方法中新建一个FirstSwing的实例mySwing。在FirstSwing类中声明各个组件:privateJLabeljLabelUserName;privateJLabeljLabelPassword;privateJTextFieldjTextFieldUserName;privateJPasswordFieldjpfPassword;privateJButtonjButtonEnter;privateJButtonjButtonCancel;将FirstSwing的布局管理器设置为null:this.setLayout(null);//在FirstSwing方法中定义。为声明的每个组件创建实例对象:jLabelUserName=newJLabel("用户名:");jLabelPassword=newJLabel("密码:");jTextFieldUserName=newJTextField();jpfPassword=newJPasswordField();jButtonEnter=newJButton("确定");jButtonCancel=newJButton("取消");设置控件的位置,并且添加到容器中:jLabelUserName.setBounds(10,20,80,20);jLabelPassword.setBounds(10,50,80,20);jTextFieldUserName.setBounds(100,20,150,20);jpfPassword.setBounds(100,50,150,20);jButtonEnter.setBounds(80,90,60,20);jButtonCancel.setBounds(160,90,60,20);this.add(jLabelUserName);this.add(jLabelPassword);this.add(jTextFieldUserName);this.add(jpfPassword);this.add(jButtonEnter);this.add(jButtonCancel);设置FirstSwing的大小、标题和可见性:this.setBounds(330,250,300,150);this.setTitle("这是第一个Swing程序!");this.setVisible(true);这样,整个程序就完成了,下面给出完整的代码:importjava.awt.*;importjavax.swing.*;classFirstSwingextendsJFrame{privateJLabeljLabelUserName;privateJLabeljLabelPassword;privateJTextFieldjTextFieldUserName;privateJPasswordFieldjpfPassword;privateJButtonjButtonEnter;privateJButtonjButtonCancel;publicFirstSwing(){this.setLayout(null);jLabelUserName=newJLabel("用户名:");jLabelPassword=newJLabel("密码:");jTextFieldUserName=newJTextField();jpfPassword=newJPasswordField();jButtonEnter=newJButton("确定");jButtonCancel=newJButton("取消");jLabelUserName.setBounds(10,20,80,20);jLabelPassword.setBounds(10,50,80,20);jTextFieldUserName.setBounds(100,20,150,20);jpfPassword.setBounds(100,50,150,20);jButtonEnter.setBounds(80,90,60,20);jButtonCancel.setBounds(160,90,60,20);this.add(jLabelUserName);this.add(jLabelPassword);this.add(jTextFieldUserName);this.add(jpfPassword);this.add(jButtonEnter);this.add(jButtonCancel);this.setBounds(330,250,300,150);this.setTitle("这是第一个Swing程序!");this.setVisible(true);}}publicclassMain{publicstaticvoidmain(String[]args){FirstSwingmySwing=newFirstSwing();}}开发后的图像如下:
通过上面的例子,我们已经能够利用NetBeans编写一个简单的,具有GUI界面的程序了,但是,纯粹的利用代码来编写,十分费力,所以,我们接下来讲的就是如何利用NetBeans来开发一个Swing应用程序。步骤如下:创建项目——〉将工程的名字修改为addstudentinfo,并且设置包的位置,一般设置位org.netbeans,选中左方窗口的源代码包下的netbeans节点,鼠标右击,新建JFrame,并且修改名字为AddStudentFrame,然后确定。打开GUI设计器。向窗体上添加一个Jlabel,鼠标右击——〉改变变量名称:jLabelStudentName,属性:text:姓名。然后依次再添加4个Jlabel,名称分别为jLabelStudentID(学号:),jLabelGender(性别:),jLabelGrade(班级:),jLabelPhoneNum(联系电话:)。添加四个JtextField,分别为jTextFieldStudentID,jTextFieldGrade,jTextFieldPhoneNum,还有jTextFieldName。全部设置为空。两个JradioButton,JradioButtonMale(男),JRadioButtonFemale(女);两个JButton,JbuttonEnter(确定),JbuttonCancel(取消);运行后的图像如下:第三章Swing/JFC的事件模型基础任何支持GUI的操作环境都会不断地监听事件。当按下键盘或者单击鼠标的时候,便会触发一个相应的事件,操作环境把这些事件报告给正在运行的程序,接着程序决定如何响应这些事件。在java中,开发人员能够控制各种事件,可以把迅速响应事件的对象指派成一个事件监听器。下面介绍一下常用事件对象及其作用。AWTEvent:所有AWT事件的根事件类。ConnectionEvent:封装与连接有关信息的事件。ChangeEvent:封装状态改变信息的事件。ListSelectionEvent:表示当前选择中更改的特征事件。CaretEvent:封装文本区中的光标改变信息的事件。ListDataEvent:定义一个封装列表更改的事件。HyperlinkEvent:封装与超文本连接有关的事件。TableColumnModelEvent:某一个表的列模型已发生改变。TableModelEvent:通知侦听器某一个表模型已发生改变。TreeExpansionEvent:用于表示树中的单个路径的事件。TreeModelEvent:封装描述树模型更改的信息。TreeSelectionEvent:描述当前选择的更改事件。上面所述的,只是一些常用的事件对象和作用,当遇到那些不常用的时,应该第一时间查阅JDK。在了解了事件处理的工作机制以后,现在深入讨论java中的事件处理。Java中的事件处理是面向对象的,所有事件都是从java.util包中的EventObject类扩展来的。EventObject有一个子类AWTEvent,它是所有AWT事件的父类。对于java开发人员来说,有些AWT事件在实际中应用不多。我们所讲述的,只是在实际中会被传到舰艇气得AWT事件类型。常用的事件类型和接口