java基础知识-.pdf
关键字Java 中一些赋以特定的含义,并用做专门用途的单词称为关键字(keyword)。所有 Java 关键字都是小写的,TRUE、FALSE、NULL 等都不是 Java 关键字;goto 和const 虽然从未被使用,但也作为Java 关键字保留。Java 的关键字如下:访问控制:private 私有的protected 受保护的public 公共的类、方法和变量修饰符:abstract 声明抽象class 类extends 扩允,继承final 终极,不可改变的implements 实现interface 接口native 本地new 新,创建static 静态strictfp 严格,精准synchronized 线程,同步transient 短暂volatile 易失程序控制语句:break 跳出循环continue 继续return 返回do 运行while 循环if 如果else 反之for 循环instanceof 实例switch 开关case 返回开关里的结果default 默认错误处理:catch 处理异常finally 有没有异常都执行throw 抛出一个异常对象throws 声明一个异常可能被抛出try 捕获异常包相关:import 引入package 包基本类型:boolean 布尔型byte 字节型char 字符型double 双精度float 浮点int 整型long 长整型short 短整型null 空true 真false 假变量引用:super 父类,超类this 本类void 无返回值字符串处理AddSlashes:字符串加入斜线。bin2hex:二进位转成十六进位。Chop:去除连续空白。Chr:返回序数值的字符。chunk_split:将字符串分成小段。convert_cyr_string:转换古斯拉夫字符串成其它字符串。crypt:将字符串用DES 编码加密。echo:输出字符串。explode:切开字符串。flush:清出输出缓冲区。get_meta_tags:抽出文件所有meta 标记的资料。htmlspecialchars:将特殊字符转成HTML 格式。htmlentities:将所有的字符都转成HTML 字符串。implode:将数组变成字符串。join:将数组变成字符串。ltrim:去除连续空白。md5:计算字符串的MD5 哈稀。nl2br:将换行字符转成。Ord:返回字符的序数值。parse_str:解析query 字符串成变量。print:输出字符串。printf:输出格式化字符串。quoted_printable_decode:将 qp 编码字符串转成8 位字符串。QuoteMeta:加入引用符号。rawurldecode:从 URL 专用格式字符串还原成普通字符串。rawurlencode:将字符串编码成URL 专用格式。setlocale:配置地域化信息。similar_text:计算字符串相似度。soundex:计算字符串的读音值sprintf:将字符串格式化。strchr:寻找第一个出现的字符。strcmp:字符串比较。strcspn:不同字符串的长度。strip_tags:去掉HTML 及 PHP 的标记。StripSlashes:去掉反斜线字符。strlen:取得字符串长度。strrpos:寻找字符串中某字符最后出现处。strpos:寻找字符串中某字符最先出现处。strrchr:取得某字符最后出现处起的字符串。strrev:颠倒字符串。strspn:找出某字符串落在另一字符串遮罩的数目。strstr:返回字符串中某字符串开始处至结束的字符串。strtok:切开字符串。strtolower:字符串全转为小写。strtoupper:字符串全转为大写。str_replace:字符串取代。strtr:转换某些字符。substr:取部份字符串。trim:截去字符串首尾的空格。ucfirst:将字符串第一个字符改大写。ucwords:将字符串每个字第一个字母改大写。接口Java 中接口可看做“纯粹的抽象类”。接口与类一样,有方法名、参数列表和返回类型。Java 接口的方法只能是抽象的,所以没有方法体。Java 接口不能有构造方法,接口的方法都隐含public 和 final。创建接口时用interface 来代替 class,前面可以有 public,如果不加访问权限,那么它就是默认的包访问权限。接口中的方法默认为public。类实现接口要用implements 关键字。创建一个接口的方法:interface abcd 定义参数;例:static final double PI=3.14;定义方法;例:double area();/没有方法体!实现一个接口的方法:public class abc implements abcd 一定要具体实现接口中的方法!(覆盖方法)抽象类Java 的抽象类是包含一种或多种抽象方法的类,不需要构造实例。定义抽象类后,其他类可以对它进行扩充并且通过实现其中的抽象方法,使抽象类具体化。Java 抽象类有以下一些特点:(1)普通的 Java 类也可以在 class 前加 abstract 声明为抽象,只不过此时的该类不可以再实例化。(2)如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法也必须声明为抽象。(3)抽象类虽然不能被实例化,但抽象类可以有构造方法,以备继承类扩充。例:/*文件名:AbstractDemo.java*Copyright(C):2009*功能:通过继承抽象类实现圆面积的计算*/abstract class Shape int x,y;Shape(int a)x=a;Shape(int a,int b)x=a;y=b;abstract double area();class Circle extends Shape Circle(int a)super(a);double area()return 3.14*(x*x);public class AbstractDemo public static void main(String args)Circle c=new Circle(5);System.out.println(c.area();多线程在 java 语言中创建一个线程共有两种方式。一种是实现Runnable 接口,代码如下:public class example(类名)implements(实现)Runnable public void run()Runnable 接口中只定义了一个run()方法。另一种是扩展Thread 类,代码如下:public class example extends Thread public void run()Thread 类中定义的方法要用到构造器。构造器列表如下:public Thread()/括号内为参数public Thread(Runnable target)public Thread(Runnable target,String name)public Thread(,String name)public Thread(ThreadGroup group,Runnable target)public Thread(ThreadGroup group,Runnable target,Runnable target)public Thread(ThreadGroup group,String name)参数说明:Runnable target,当前线程启动时,其激发target 中的 run()方法。String name 线程名。ThreadGroup group 创建线程加入到的线程组。方法列表如下:public static int activeCount()/获取线程组中的当前活动线程数public final void checkAaccess()/确定当前线程是否允许改变public static Thread currentThread()/获取当前活动线程对象public void destory()/撤销当前线程,但不进行任何善后清理工作public final String getName()/获取线程名public final int geiPriority()/获取线程的优先级public final ThreadGroup getThreadGroup(0/获取所属的线程组public void interrupt()/中断线程public static bollean interrupted()/判断当前线程是否被中断public final bollean isAlive()/判断线程是否仍在运行public final bollean isDaemon()/判断线程是否后台线程public bollean isInterrupted()/判断线程是否被中断public final void join()/等待线程终止public final void join(long millis,int nanos)/等待线程终止,可指定等待时间public void run()/线程的入口点public final void setDaemon(boolean on)/将线程设置为后台线程,该方法必须在线程调用start()方法之前调用public final void setName(String name)/设置线程的名称public final void setPriority(int newPriority)/设置线程的优先级public static void sleep(long mills)/挂起线程指定时间段,以毫秒为单位public static void sleep(long mills,int nanos)/挂起线程指定时间段,以纳秒为单位public void start()/启动线程public static void yield()/暂停当前线程网络编程端口:11023 之间已经被系统占用!在定义自己的端口时,应该使用102465535之间的任意端口号,以免发生端口冲突。TCP 程序设基础Java中的 TCP 网络程序设计是指利用Socket 类编写通信程序。TCP 程序设计的一个过程是:服务器的套接字等待客户机连接请求,并创建新的套接字,使其与客户机的套接字连接,而本身继续等待其他客户机的连接请求。1.与 IP相关的 InetAddress类应用:InetAddress类是与 IP地址相关的类。利用此类可以获取IP地址、主机地址等信息。InetAddress类的常用方法如下:public static InetAddress getByName(String host):获取与 host 相对应的 InetAddress对象。public String getHostAddress():返回主机地址的字符串表示。public String getHostName():返回主机名的字符串表示。public synchronized static InetAddress getLocalHost():返回本地主机的InetAddress对象。例如:import .*;/*创建一个 InetAddress类对象 IP*通过 getHostName方法获得主机名*通过 getHostAddress方法获得主机的IP 地址*通过 getLocalHost().getHostAddress()方法获取本机的IP 地址*/publicclass tcptest publicstaticvoid main(String args)/TODO Auto-generated method stubInetAddress ip=null;/创建对象try /一定要获取异常!ip=InetAddress.getByName(WIN-H3VDJ9FM01T);/根据主机名实例化对象;System.out.println(主机名:+ip.getHostName();/获取主机的名称;System.out.println(主机 IP 地址:+ip.getHostAddress();/获取主机(服务器)的IP 地址System.out.println(本机 IP 地址:+InetAddress.getLocalHost().getHostAddress();/获取本地的 IP 地址;catch(Exception e)System.out.println(e);2.服务器套接字应用 ServerSocket类表示服务器套接字。服务器的套接字是通过指定的端口等待连接的套接字。服务器的套接字一次只可以与一个客户机的套接字连接,如果有多台客户机同时要求同服务器连接,那么服务器套接字会将请求的客户机的套接字存入队列中,然后,从中取一个连接一个。队列的默认大小为50.ServerSocket 类的常用构造函数有:pblic ServerSocket(int port)使用指定的端口创建服务器套接字。public ServerSocket(int port,int backlog)使用指定的端口创建服务器,backlog 用来指定队列大小。public ServerSocket(int port,int backlog,InetAddress bindAddr)使用指定的 IP地址、端口号及队列大小,创建服务器套接字。ServerSocket 类的主要常用方法有:public Socket accept():等待客户机连接,若连接,则创建一个套接字,并且将其返回。public void close():关闭服务器套接字。public boolean isClosed();若服务器套接字成功关闭,则返回true。否则返回 false。public InetAddress getInetAddress():返回与服务器套接字结合的IP 地址。public int getLocalPort():获取服务器套接字等待的端口号。public void bind(SocketAddress endpoint):绑定于 endpoint 相对应的套接字地址(IP地址+端口号)。public boolean isBound():若服务器套接字已经与某个套接字地址连接绑定起来,则返回true;否则返回 false。3.套接字实现 Socket类表示套接字。使用 Socket 时,需要指定待连接服务器的IP地址及端口号。客户机创建了 Socket 对象后,将立即向指定的IP地址及端口号发起请求且尝试连接。于是,服务器套接字就会创建新的套接字对象,使其与客户端套接字连接起来。Socket 类的构造器有两个:public Socket(String host,int port)创建连接指定的服务器(主机名和端口号)的套接字public Socket(InetAddress address,int port)创建连接指定服务器的套接字。address 表示 IP地址对象,port 是端口号。Socket 类的常用方法有:public InetAddress getInetAddress():获取被连接的服务器的地址public int getPort():获取端口号。public InetAddress getLocalAddress():获取本地地址。public int getLocalPort():获取本地端口号。public Inputstream getInputStream():获取套接字的输入流。public OutputStream getOutputStream():获取套接字的输出流。public void bind(SocketAddress bindpoing):绑定指定的 IP地址和端口号。public boolean isBound():获取绑定状态。public synchorized void close():关闭套接字。public boolean isClosed():获取套接字是否关闭。public boolean isConnected():获取套接字是否被连接public void shutdownInput():关闭输入流。public boolean isInputShutdown();返回输入流是否被关闭。(1)服务器程序编写:1)调用 ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口。2)调用 accept(),监听连接请求,如客户端连接,则接受并返回通信套接字。3)调用 Socket 类的 getOutputStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收。4)最后关闭通信流套接字。(2)客户端程序编写:1)调用 Socket()创建一个流套接字,并连接到服务器端。2)调用 Socket 类的 getOutputStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收。3)最后关闭通信流套接字。例如:服务器端:import java.io.BufferedReader;import java.io.InputStreamReader;import .*;/1 服务器端publicclass tcptest1 privatestatic BufferedReader reader1;/创建一个缓冲输入流publicstaticvoid main(String args)/TODO Auto-generated method stubtry ServerSocket server1=new ServerSocket(5012);Socket soc;soc=server1.accept();/System.out.println(soc.getInputStream();reader1=new BufferedReader(newInputStreamReader(soc.getInputStream();/获取套接字的数据输入流;/System.out.println(reader1);while(true)System.out.println(客户机:+reader1.readLine();/接收客户端的数据流;catch(Exception e)/System.out.println(e);客户端:import java.io.IOException;import java.io.PrintWriter;import .Socket;import .*;/1 客户端public class test private static PrintWriter writer1;/*param args */public static void main(String args)/TODO Auto-generated method stub try Socket s=new Socket(127.0.0.1,5012);writer1=new PrintWriter(s.getOutputStream(),true);/获取输出流for(int i=0;i10;i+)writer1.println(jiang+i);/向服务器发送字符串数据/System.out.println(s.getOutputStream()+jiang);catch(UnknownHostException e)e.printStackTrace();catch(IOException e)e.printStackTrace();输出结果为:UDP 程序设计基础编写UDP 程序的步骤:(1)接收端程序代码编写:1)调用DatagramSocket(int port)创建一个数据报套接字,并且绑定到指定的端口上。2)调用 DatagramPacket(byte buf,int length),创建一个字节数组以接收UDP 包。3)调用 DatagramSocket类的receive(),接收UDP 包。(2)关闭数据报套接字。(3)发送端程序编写:1)调用 DatagramSocket创建一个数据包套接字。2)调用DatagramPacket(byte buf,int offset,int length,InetAddress address,int port),建立要发送的 UDP 包。3)调用 DatagramSocket类的send(),发送UDP 包。(4)关闭数据包套接字。UDP 不提供可靠的数据传输,TCP 的目的是提供可靠的数据传输。