1、java笔记本jdk1. jre(java运行环境)2. java 工具 java的编译器:javac.exe java解释执行器 java.exe3. java 类库 3600 常用的类为150个4.类变量: 类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量5.如何定义一个类变量: 访问修饰符:static 数据类型 变量名6. 类名.类变量名 对象名.类变量名7.静态区域块只被执行一次8.类方法: public static int getTotal()类变量原则上用类方法去访问静态方法中不能访问非静
2、态变量this的必要性:java虚拟机会给每个对象分配 this 代表当前对象this是属于对象的JAVA提供四种访问控制修饰符号控制方法和变量的访问权限:1.公开级别:用Public 修饰 ,对外公开2.受保护级别:用protected 修饰,对子类和同一个包中的类公开3.默认级别 :没有修饰符号,向同一个包的类公开4.私有级别 : 只有类本身可以方法,不对外公开位运算: 1.二进制最高位是符号位:0是正数 1 是负数 2.正数的原码,反码,补码都一样 3.负数的反码=它的原码符号位不变,其他位取反 4.负数的补码=它的反码+1 5.0的反码,补码都是0 6.java 没有无符号的数, ja
3、va都是有符号数 7.在计算机运算的时候,都是以补码的方式进行运算的按位与&:两位全为1,结果为1 按位或| :两位有一个为1,结果为1按位异或 :两位一个为0,一个为1,结果为1按位取反 : 01 10java 提供3个移位运算符 算术右移:低位溢出,符号位不变,并用符号位补溢出的高位 逻辑右移:运算规则是:低位溢出,高位补0集合: 1.HashMap和HashTableHashTable是基于Dictiontary类的,HashMap是Java引进Map接口的同步性: HashTable是同步的。这个类中的一些方法保证了HashTable中的对象是线程安全的。而HashMap中的对象是线程
4、不安全的,因为同步的要求会影响执行效率,所以你不需要线程安全的时候可以使用HashMap.值:HashMap可以让你将空值作为一个表的条目的key或value,但是HashTable的值不能为nullArrayList 和 Vector的区别ArrayList 与Vector都是Java 的集合类,都可以用来存放java对象,这是他们的相同点区别:一:同步性 vector是同步的,这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合,那么使用Arra
5、yList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销二:数据增长从内部实现机制来讲ArrayList和Vector都是使用数组来控制集合中的对象,当你向这两种类型中增加元素的时候,如果元素的数目超过了内部数组目前的诚笃它们都需要扩展内部数组的长度。Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%经验总结:1.如果要求线程安全,使用Vector,HashTable3.如果要求键值对,则使用HashMap,HashTable4.如果数据量很大,又要线程安全考虑VectorJAVA类加载器原理(双亲委派加载器)方法覆盖: 1.子类的方法的返回类型,
6、参数,方法名称,要和父类的方法返回类型,参数,方法名称一样 2.子类方法不能缩小父类方法的访问权限多态: 指通过指向父类的指针,来调用在不同子类实现的方法抽象类: abstract 修饰的一个类,这个类就叫抽象类 abstract 修饰的一个方法,这个方法叫抽象方法 抽象方法不能被实例化 抽象类不一定要有抽象方法 类中如果包含抽象方法,则该类一定要是抽象类 抽象方法不能有主体图形用户界面(gui)用什么开发GUIsun 开发awt-没有解决跨平台问题swing-继承了awt并解决了跨平台问题IBM认为swing比较消耗内存,创建了一个新的GUI库这是SWT ,同时IBM为了方便开发SWT程序,
7、在SWT基础上又创建了一个更易用,功能强大的图形包”JFace”;Eclipse 由IBM的附属公司oti开发的IDE 集成开发环境,比如jcreator , vs 2005;netBean , Borland Jbuilder ,Jcreator TextMenusWidget (小控件)Top-Level WindowsSub-Windows 布局管理器:组件在容器中的位置和大小是有布局管理器来决定的,所有容器都会使用一个布局管理器,通过它来自动进行组件布局管理种类:五种流式布局管理器,边界布局管理器,网格布局管理器,网格包布局管理器,卡片布局管理器1 边界布局边界布局将容器简单划分为东西
8、南北中五个区域,中间区域最大2 流式布局3 网格布局几个常用组件面板组件(JPanel) JPanel :面板组件,非顶层容器 一个界面只可以有一个JFrame 窗体组件,但可以有多个Jpanel面板组件,而Jpanel上也可以使用FlowLayOut,BorderLayout,GridLayout等各种布局管理器,这样组合使用达到较为复杂的布局结果文本框 JTextField密码框 JpasswordField标签 JLable复选框组件 JCheckBox单选框组件 JRadioButton下拉组件(JComboBox) 列表框组件 JList 滚动窗格组件 JScrollpage同一组单
9、选按钮必须先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中拆分窗格组件:JSplitPane多行文本框JTextArea 菜单组件JMenuBar 菜单条组件 树干JMenu 菜单组件 树枝JMenuItem 菜单项组件 树叶二级菜单 JMenu 里面 可以嵌套JMenuJava 绘图技术 原理 Component 类提供了两个和绘图相关最重要的方法1 pain(Graphics g) 绘制组件的外观2 repaint() 刷新组件的外观当组件第一次在屏幕显示的时候,程序会自动的调用Paint()方法来绘制组件在以下情况下paint()将会调用1 窗口最小化,再最大
10、化2 窗口的大小发生了变化3 repaint函数被调用Graphics 类常用方法1. 画直线 g.drawLine(10,10,40,40);2. 画矩形边框 drawRect3. 画填充矩形 fillRect4. 画图片 drawimageJava事件处理机制1 java事件处理是采用”委派事件模型”,所谓委派事件模型是指当事件发生时,产生事件的对象(即事件源),会把此信息传递给事件的监听者,处理的一种方式,而这里所说的”信息”传递给事件的监听者处理的一种方式,而这里所说的信息实际上就是 java,awt,event事件类库某个类所创建的对象,我们暂时把它称为事件对象事件源:是一个产生(或
11、触发)事件的对象,当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件,如果某个组件希望得到事件源产生的事件,就需要在这个事件源上注册事件:就是承载事件源状态改变时的信息对象。或者说事件就是事件源向事件监听对象传输事件源状态的信息的载体常见事件ActionEventAdjustmentEvent ComponentEventContainEventFocusEventItemEventKeyEventMouserEventTextEventWindowEvent3.事件监听接口 事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现一个事件监听接口,也可
12、以实现多个监听接口事件编程步骤1 编写事件处理类2 根据需求给事件处理类实现监听接口3 在事件处理类中重写其事件处理的函数4 在事件源类中指定该事件的监听器是谁,即注册监听实现事件处理机制1 实现相应的接口【keyListener,MouseListener,ActionListener,WindowListener】2 把接口的处理方法根据需要重新编写(Override)3 把事件源注册监听4 事件传到是靠事件对象 ActionEvent 线程 进程:运行中的应用程序,每个进程都有自己独立的地址空间(内存空间);线程:是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资
13、源,只拥有一点在运行中必不可少的资源,但它可以与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行,线程有就绪,阻塞,和运行三种基本状态线程的状态:1 新建状态2 就绪状态(可运行状态)3 运行状态4 阻塞状态5 死亡状态只要应用程序涉及到并发,就离不开多线程编程线程使用: 在java 中一个类要当做线程来使用有两种方法1 继承Thread类 ,并重写run函数2 实现Runnable接口,并重写run函数 线程对象只能启动一个线程,即只能启动一次文件流如何判断是输入流,还是输出流以内存为参照物,如果数据向内存流动,就是输入流
14、,如果内存向文件流动,就是输出流java 文件流 两种流1 字节流:可以用于读写二进制文件及任何类型的文件 byte2 字符流:可以用于读写文本文件 字节流 字符流输入流 InputStream Reader输出流 OutputStream WriterOSI模型 七层应用层,表示层,会话层,传输层,网络层,数据链路层,物理层TCP/IP模型 四层应用层,传输层,网络层,链路层ip地址概述:每个Internet上的主机和路由器都有一个IP地址,它包括网络号和主机号,所有ip地址都是32位,ip地址按照国际标准划分为a,b,c,d,e五种类型a 类地址 1127b类地址 128191c 类地址
15、192223d 类地址 224239e 类地址 240247111111111111111111 局域网广播地址网络号 1111111111111111 子网的广播127 任意值 (去除全零和全1) 回路地址端口:有655360是保留端口1-1024是固定端口,又叫有名端口,即被某些程序固定使用,一般程序员不使用22:SSH远程登录协议 23:telnet使用 21:ftp 25:smtp 80:iis 使用 7: echo服务1025-65535是动态端口这些端口,程序员可以使用端口注意事项1 在计算机要尽可能的少开端口2 一个端口只能被一个程序监听3 如果使用netstat an可以查看本
16、机有哪些端口在监听4 可以使用netstat anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口Url 统一资源定位符即网络地址 可以是本地磁盘,一台计算机,一个网站:8080/index.html1. 协议2. ip地址3. 端口号4. 资源名称单工:如果甲可以向乙发送数据,但是乙不能向甲发送数据,这样的通信就是单工通信半双工:全双工:对象流常用方法:得到当前工程根目录 String path=System.getProperty(user.dir);在Java1.6中可以使用自带编译器JavaCompiler compiler=ToolProvider.getSystemJav
17、aCompiler();java 中包的类型 1. jar 2. war 3. earjar,war,ear 都是标准的zip格式,完全可以采用winzip,winrar来打包分布式通信的基本原理:客户端-STUB(存根)-协议(soap/rmi-iiop/iiop)-Skeleton(骨架)-远程对象SOAP(简单对象访问协议http+xml)CORBA-快webservies-慢WSDL(Web Servcies 描述语言 中立语言)UDDI(发现和整合服务)web服务主要是解决异构系统的通信其实web Service 主要是解决异构系统通信其实 Web Service 就是基于XML的数
18、据交换Web Service 特征1.通过标准的soap通信,一般走http协议2.能跨平台调用3.通信格式是xml,而不是二进制(EJB,CORBA);27.目前主流的分布式技术CORBA,EJB,DCOM,WEB SERVICES ,REST 等28.EJB(企业应用集成), SOA(面向服务架构),IDL(接口定义语言29. SOAP协议 request POST/ axis/MyMath.jws?JVM 内存配置loadRunner(压力测试) ,jmeter(压力测试) , Jmap(内存分析),Jprobe(内存分析,多线程分析,代码覆盖率)内存溢出:out of memory,a
19、) 如果不存在内存泄露,java.lang.OutOfMemory解决方案是加大JVM内存,默认JVM最大内存为64Mb)独立的JAVA应用程序,可以采用java Server Xms512m-Xmx1024m,加大JVM内存c)Tomcat中如何设置 在catalina.bat 中键入:Set CATALINA_OPTS=-Xms512m Xmx1024m在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中 Class类:代表一个类 Field类:代表类的成员变量(成员变量也称为类的属性) Method类:代表类的方法 Constructor类:代表类的构造方法 Array类:提供了动态创建数组,以及访问数组的元素的静态方法ReflectTester类有一个copy(Object object)方法,这个方法能够创建一个和参数object同样类型的对象,然后把object对象中的所有属性拷贝到新建的对象中,并将它返回这个例子只能复制简单的 JavaBean ,假定JavaBean的每个属性都有public 类型的get,set方法
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1