1、Java 学习日记1, 一个文件里可编写多个类,一个文件里不能有两个 public 类。独立运行的类必须有 main()函数。2, Print()不换行,println()打印新东西之前会换行。3, 在 set classpath 前后不能有空格,不能有中文符号。4, 三种注释方法:/、/*/、/*.*/,/*.*/不能嵌套,注释功能有:说明程序的功能,可以取消代码,或者是回复代码。5, 标识符:由字母、数字、下划线、美元符号组成,不能以数字、关键字开头。6, 常量:不变的数值。有整型,长整型,单精度、双精度、布尔常量、字符常量、字符号常量。单精度常量以f结尾。7, 变量就是系统为程序分配的一
2、块内存单元,用来存储数据。变量须先定义后使用,不允许嵌套定义。8, 低字节的类型可以转换成高字节的类型,高字节的类型不可以转换成低字节。9, 流程控制:if 若有多条语句最好用大括号括起来。问号表达式:y=x0?x:-x;若表达式为真,结果为 x,反之为-x.10, Switch() 语句只接受 int、byte、char、short 类型数据,switch 语句用break,多个条件执行相同命令: case 1:case 2: break;11,while 语句后若有“;”,不是不执行该语句,而是一直在执行空语句。12,do.while.语句不管三七二十一都执行该语句,直到 while 语句
3、为假,且while()后有“;”。13,system.in.read():从键盘上读取数据;14,定义数组:int x 或 int x;arraycopy 数组拷贝。15,面向对象三大特征:封装、继承、多态。一个类中方法可以访问同类成员。若局部变量和成员变量名字一样,则成员变量隐藏。16,一个类中方法可以访问同类的成员变量和局部变量。17,“=”与“equals()”的区别:“=”是比较两个对象的值是否相同,而equals()是比较两个对象的内容是否相同。例如:String str1=new String(“abc”);String str2=new String(“abc”);String
4、str3=str1;If(str1=str2)System.out.println(“true”);ElseSystem.out.println(“false”);则结果返回为 false。因为 sr1 和 str2 在堆中首地址不一样,而 str1 和 str3 首地址是一样的。若If(str1.equals(str2)System.out.println(“true”);ElseSystem.out.prinltn(“false”);则结果返回的是 true,因为比较的是内容。18,用 private 修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。程序代码要求强内聚弱耦合19,
5、构造方法:和类名一样,无返回值,不能用 return 语句。实例对象一产生就立马调用构造方法,有几个实例对象就调用几次,一次完成对实例对象的初始化,若没有定义构造函数,系统会自动生成一个空构造函数,也可以进行重载。若定义了构造函数,则不再产生构造函数。了解构造函数执行过程。20,finalize()方法类似于 C+中析构函数,在被清除之前会调用这个函数。21,static 静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成员。静态方法在使用之前不用创建任何对象,而非静态对象在使用之前必须先创建实例对象。静态方法不以任何方式调用 this 和 super 方法22,内部类:在类中直接定
6、义内部类,内部类可以访问外部类成员变量。在程序块中均可定义内部类。23,类的继承:在 java 中只支持单继承,但类可以有多层继承,子类继承了父类所有的成员变量和成员方法,但不继承父类的构造方法,可使用 super 方法调用父类的构造方法。24,final() 可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。25,含有抽象方法的类称为抽象类。抽象方法:abstract int aa(int x,int y);一般方法:int aa(int x,int y)程序代码 两者的区别:前者必须由 abstract 修饰,只能声
7、明,不能实例化,没有大括号;后者有大括号,说明实现了代码,不是抽象方法。26,特殊的抽象类称为接口,接口中所有的方法都是抽象的。一个类用implements 去实现一个接口的所有方法。27,一个类继承了另一个类,不能使用比继承类的访问权限更低的权限去访问该类。28,del person.class 删除 person 字节码;javac *.java:编译所有源文件。29,a instanceof B:判断 a 是否是 B 的一个实例对象。对象的类型转换:子类可以转换成父类。Object 是所有类的父类。30,异常是非致命的错误,不是语法错误。对异常处理用 try.catch.。用throws
8、 关键字抛出异常,也可以自定义异常。try 后面可以跟多个 catch 捕获多个异常。finally 语句无论如何都要执行,没有异常也会执行。31,包,package 语句,为 java 源文件的第一条语句,若无包则为缺省无包。同一个包中的类可以相互调用,不必写上包名。若为类加上包,则应将源文件中所有类都存到该包中。同一包中辆各类不一定在一个目录上。32,访问控制:类本身有两种访问控制:public 和默认。父类不能是 private 和protected,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。33,进程:正在进行的程序。线程:一个程序内部的一条执行线索,每个线程上所要运行的
9、程序代码段是多线程,用 Thread 类创建线程。34,后台线程:如果对某线程对象在启动(调用 start 方法)前调用了setDaemon(true)方法,这个线程就变成了后台线程。只要还有一个前台线程在运行,这个进程就不会结束。如果一个进程中只有后台线程在进行,这个进程就会结束。Pp.join()的作用是把 pp 所对应的线程合并到调用 pp.join();语句的线程中。35,单线程和多线程的区别:必须等到 run()调用后才实现36,要实现多线程必须要编写一个继承了 Thread 类的子类,子类要覆盖 Thread类的 run 方法,在子类 run 方法中调用正在新程序中运行的程序代码,
10、启动一个新线程是调用 Thread 类的 start 方法,Thread 类对象的 start 方法产生一个新线程,并在该线程上运行 Thread 类对象中的 run 方法,控制线程是否结束。37,产生一个 TestThread 对象,四个 tt.start()线程,共同去卖同 100 张车票:TestThread tt =new TestThread();tt.start();tt.start();tt.start();tt.start();38,多个线程共享同一数据就会发生线程安全问题。39,线程间的通信:wait():当前线程放弃监视器并进入睡眠状态直到其他线程进入同一监视器并调用 no
11、tify()为止。40,API:应用程序编程接口。Windous API:WIndous 操作系统提供的各种函数。Java API:JDK 提供的各种 java 类41,java 开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生应用程序的基本框架,支持调试,提供各种辅助工具。42,JCreator Pro:一个工作区可以管理多个工程,只能有一个活动工程。使用该软件时不用完全记住函数或者参数,因为有提示,43,String 类对象中的内容一旦被初始化就不能在改变。而 stringBuffer 类用于封装,内容可以改变。44,indexOf(int ch)方法用于返回一个字符在字符串
12、中第一次出现的位置,若没有该字符,返回-1.45,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:Vetor、Enumeration、ArrayList 等。46,从键盘上读取数字:int b=System.in.read();Vector.addElement():向 Vector 中添加元素。47,Collection,Set 与 List 三者区别:Collection 是父类,通用集合类,各元素对象无指定顺序,允许有重复元素和 null 元素对象。Set 为子类,无指定顺序,不允许有重复元素,最多允许一个 null 元素对象。List 也为子类,有指定顺序,允许有重复元素和
13、多个 null 元素对象。48,Hashtable 类:Hashtable 像 Vector 一样动态存储一系列对象,而且对存储的每个对象都要安排另一个对象与之相关联。用 put()存储数据:Hashtable ht=new Hashtable();Ht.put(“one”,new Integer(1);检索数据用 get 方法:Integer n=(Integer)ht.get(“two”);If(n!=null)System.out.println(“two=”+n);要成功检索某个字,用作关键字的类必须覆盖 Object.hashtableCode()和Object.equals().4
14、9.Properties 类:Hashtable 类的子类,增加了讲 Hashtable 对象中的关键字和值保存到文件和从文件中读取关键字和值到 Hashtable 对象中的方法。如果要用Properties.store 方法存储 Properties 对象中的内容,每个属性的关键字和值都必须是 String 类型。50,System 类中的 exit 方法用于结束 java 虚拟机运行的程序。currentTimeMills():可以检测程序运行的时间。 Java 虚拟机系统变量或者系统环境变量都是变量和值成对出现。getProperties 方法获取 java 虚拟机系统属性,setPro
15、perties 方法用于设置系统属性。51,Date 类:日期时间的类; Calendar:日期字段相互间的操作类;Calendar.add():增加时间;Calendar.Set(): 设置时间;Calendar.get():获取时间。Calendar 类位于 java.util 包中52.TimerTash 类实现了 Runable 接口,要运行的任务,由它里面实现的 run 方法来完成。53,Math 类包含了所用于几何和三角运算的方法, Random 类一个伪随机数产生类。54,File 类:IO 包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。File f=new File(“
16、hello.txt”);If(f.exist()f.delete();Else f.createNewFile();System.out.println(“File name:”+f.getName();获取文件的名称System.out.println(“File path:”+f.getPath();获取文件的路径System.out.println(f.exist()?”exist”:”not exist”);判断文件是否存在55,RandomAccessFile 类提供了众多的文件访问方法;RandomAccessFile 类支持随机访问,但是不能访问其他的 Io 设备,如网络、内存映
17、像等。两种构造方法:new RandomAccessFile(f,”rw”);可以读写new RandomAccessFile(f,”r”);只读56,流是字节序列的抽象概念。文件是数据的静态存储形式流是数据传输时的形态。流分为两种:节点流类和过滤流类。57,InputStream 类方法:int read(); 读取方法void close();读取后要关闭文件58,FileInputStream inone=new FileInputStream(“hello.test”);等同于File f=new File(“hello.test”);FileInputStream intwo=new
18、 FileInputStream(f);59,System.in 连接到键盘,而 System.out 连接到显示器,用-1 作为键盘输入的结束。60,PipedInputStream 与 PipedOntputStream 类:创建管道通信,使用管道流类,可以实现各个程序模块之间的耦合通信。61,DateOutputStream 类提供了三个写入字符串方法:-public final void writeByte(String s)-public final void writeChars(String s)-public final void writeUTF(String s)62,Ob
19、jectInputStream、ObjectInputStream 用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。63,避免频繁地在字符与字节间进行转换,最好不要直接使用InputStreamReader 和 OutputStreamWriter 类读写数据,应尽量使用BufferedWriter 类包装 OutputStreamWriter 类,用 BufferredReader 类包装InputStreamReader。InputStreamrReader 和 OutputStreamWriter 用于将字节转换成字符流来读写的两个类。63,读取一行文本用 Buf
20、ferredReader。64,printStackTrace()用于将异常信息打印在标准输出设备上。65,AWT:应用窗口工具集; GUI:图形用户界面。66,将窗口从内存中显示出来用 Frame.setViseble(true);Frame.setSize(int x,int y);设置窗口大小Frame.add(new Button(“OK”);增加一个新按钮67,GUI:包括基本组件和容器。Frame.dispose() 将窗口对象释放,但线程消失,而 Frame.setVisible(false);窗口不显示但程序没有结束。68,事件适配器:事件监听器接口的最简单的实现类,称为 Ad
21、apter。69,调用 enableevents(long eventsToEnable)方法,可以在即使没有注册事件监听器情况下,组件也能够对某些类型的时间进行响应和产生相应的事件对象。70,GraPhics 类与图形绘制有关。GraPhics.draw String()方法的坐标参数是左下面,这和其他的坐标在左上方是不一样的。71,设置图形颜色:GraPhics.setColor(Color.Red);颜色英文须大写72 使用 GraPhics.drawImage(Image img,int s,int y,imageObserver observer)方法显示图像。73,与菜单相关的类:
22、MenuBar 、Menu 、MenuItem。创建菜单的过程:先创建一个菜单条,再把几个菜单挂在菜单条上,最后在每个菜单上添加菜单项。也可以在菜单上创建子菜单。74Container 容器类,所有容器类的父类,Container.add()用于将组件添加到容器中。75,Dialog 类用于产生对话框,分为模态对话框和非模态对话框两种。76,Checkbox 类用来建立单选按钮和多选按钮,单选按钮和多选按钮语义事件为 ItemEvent,对应的监听器接口为 ItemOutstream。77,panel 容器类,产生空白面板,可容纳多个组件,不能独立存在。78,ScrollPane 用于产生滚动
23、窗口。79,布局管理器管理组件在容器中的布局。BroderLagout:NORTH、 WEST 、SOUTH 、EAST 、CENTERFlowLagout:布局分配是从左到右从上到下GridLagout:网格布局,模块大小完全相同,也是从左到右,从上到下cardLagout:多个组件交替显示,只有最上面的那一个可见。Container.setLagout(null)用于取消布局管理器Container.setBounds(x1.y1,x2,y2)用坐标来设置组件位置80,Swing 提供了丰富的 GUi 组件,增强了 AWT 中原有组件的功能。JFC:java 功能类,集合了 Swing 组
24、件和其他能够开发 API 类。81,JFrame 是与 AWT 中的 Frame 相对应的 Swing 组件,只能有一个唯一组件JRootPane;82,Applet:嵌套在网页中的小程序。83,浏览器显示网页的原理和打开记事本方式一样84,Applet 由浏览器来启动执行过程:1)浏览器载入 HTML 文件。2)浏览器载入 HTML 文件中引用的 Applet 字节码。3)浏览器启动 java 虚拟机执行Applet;85Applet 需要覆盖的方法:init()、 start()、 stop()、 destroy()、 paint()。鼠标事件监听器: MouseListener()。86
25、,Thread.sleep(1000);语句需要捕获异常,用 trycatch.语句捕获87,Applet 相关知识:容器与插件的程序架构设计模式、Applet 程序中的控制台输出。88,Applet 程序的限制:不能启动执行其他应用程序,不能进行文件 IO 操作,不能调用本机代码,不能与 Applet 所在的主机之外的其他主机进行网络连接;89,Applet 标记的详细表:archive=archiveList方括号的为可选项Code=appletFile.class 不带方括号的为必选项90,OBJECT 标记:使用 HTMLContainer 将 Applet 标记转换成 OBJECT
26、标记。使用 OBJECT 标记执行 Applet 小程序的 java 解释器被作为一个 ActiveX 插件使用。使用 OBJECT 标记比 Applet 标记多了自动下载和安装 java 解释器的功能。91,网络协议:TCP/IP UDP92,获取本机 IP 地址:在命令行输入:ipcongif;端口号的范围是 0-65535 之间。93,TCP 传输控制协议,是面向连接的通信协议UDP 用户数据报协议,是无连接的通信协议94,Socket 是网络驱动层提供给应用程序编程的接口和一种机制。网络编程类位于 包中。95,DatagramSocket 类用于 UDP 通信,ServerSocke
27、t 类用于 TCP 通信的服务器端。Socket 类用于 TCP 通信的服务器端和客户端。96,了解 DatagramSocket 类三种构造方法,close()关闭方法,send(DatagramPackage p)发送数据包方法;receive(DatagramPackage p)接受数据包方法97,DatagramPackage 提供了两种构造方法。getInetAddresss 用于表示计算机 IP地址的一个类,类中有 getByName 方法,返回一个相应的 inetAddress 实例对象。98,TCP 网络编程工作原理,利用 TCP 协议进行,两个应用程序有主次之分,主的称为服务
28、器端,另一个称为客户端。99,客户端与服务器端交互过程:1)服务器程序创建一个 ServerSocket,然后调用 Accept 方法等待客户来连接。2)客户端程序创建一个 Socket 并请求与服务器建立连接。3)服务器接受客户的连接请求,并创建一个新的 Socket 与该客户建立专线连接。4)建立了连接的两个 Socket 在一个单独的线程上对话。5)服务器开始等待新的连接请求,当新的连接请求达到时,重复步骤 2 到 5.100,TCP 服务器程序必须先启动运行,TCP 客户程序才能连接上 TCP 服务器,使用 Windous 提供的 telent 程序测试服务器程序,使用 Bufferr
29、edReader 包装类,从网络输入流中一次读取一行文本。101,使用 netstart 命令查看当前正在被使用的 TCP 端口号。通过一个配置参数来指定 TCP 服务器程序所使用的端口号。102,ObjectInputStream 和 ObjectOutputStream 可以从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。103,使用 ObjectInputStream 和 ObjectOutputStream 来包装底层网络字节流,TCP 服务器和 TCP 客户端之间可以接受对象类型的数据。104URL:统一资源定位器,由协议、主机名、端口号和资源名组成,了解相对URL 和绝对 URl 的含义。