(转贴)java基础

http://www.eviloctal.com/forum/read.php?tid=17938

一,概述。
1995年,美国Sun Microsystems公司正式推出。(java好像就是爪哇,这个地方咖啡好,
程序员喜欢咖啡,金州注释)具有安全、跨平台、面向对象、简单、适用于网络等显著
特点(尤其是跨平台,可以说是伟大啊,想想windows编写的程序能够不做修改就直接拿
到UNIX系统上运行吗?估计不行,哈哈,但是java可以。金州注释。)
工作原理:java源程序需要通过编译器编译成为.class文件(字节码文件),然后解释器
就ok了。
java程序分为java application(java 应用程序)和java applet(java小应用程序)两种
举例:
java application例子内存状况输出。
import java.util.*; (用到额外的类,需要这句,金州注释)

 public class jinzhoutest {   (这个类取名.金州注释)
  public static void main(String args[]){     (固定格式,金州注释)
  System.out.println(new Date( ));   (输出日期,金州注释)
  Properties p=System.getProperties( );   (获得对象,定义为p,金州注释)
  p.list(System.out);       (输出p,金州注释)
  System.out.println("jinzhou Memory Usage:");   (输出那个字符串,金州注释
  Runtime rt=Runtime.getRuntime( );   ( 获得系统的Runtime对象,金州注释)
  System.out.println("Total Memory= "
          + rt.totalMemory( )
          +" Free Memory = "
          +rt.freeMemory( ));   (输出内存情况,金州注释)
    }
  }  

java applet例子:显现一句话。
import java.awt.Graphics;     (说明需要用到类Graphics的对象;下面一句类似。金州注释)
 import java.applet.Applet;  

 public class Hellojinzhou extends Applet {
   public String s;
   public void init() {        (格式,金州注释)
     s=new String("Welcome to E.S.T");
              (生成一个新的字符串,金州注释)
 }
 public void paint(Graphics g){
     g.drawString(s,25,25);         (在坐标为25.25输出,金州注释)
   }
 }  
(看出来区别了吧,后者不用main函数,这说明需要嵌入执行,一般嵌入浏览器,金州注释。)
上例,嵌入方式
<html>
<applet code=Hellojinzhou.class width=250 height=250>
</applet>
</html>

一个完整的java源程序应该包括下列部分:
  package语句; //该部分至多只有一句,必须放在源程序的第一句
  import语句; /*该部分可以有若干import语句或者没有,必须放在所有的
          类定义之前*/
  public classDefinition; //公共类定义部分,至多只有一个公共类的定义
       //java语言规定该java源程序的文件名必须与该公共类名完全一致
  classDefinition; //类定义部分,可以有0个或者多个类定义
  interfaceDefinition; //接口定义部分,可以有0个或者多个接口定义
关于java开发环境的建立,金州略过。

二。Java语言基础知识
金州简略如下,
数据类型划分
  java语言的数据类型有简单类型和复合类型:
  简单数据类型包括:
     整数类型(Integer):byte, short, int, long
     浮点类型(Floating):float,double
     字符类型(Textual):char
     布尔类型(Logical):boolean

  复合数据类型包括:
     class
     interface
     数组
常量:用保留字final来实现
     final typeSpecifier varName=value[,varName[=value]…];
                     如:final int NUM=100;

  变量:是java 程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。
其定义格式如下:
     typeSpecifier varName[=value[,varName[=value]…];
                 如:int count; char c='a';
算术运算符: +,―,*,/,%,++,――
关系运算符: >,<,>=,<=,==,!=
布尔逻辑运算符: !,&&,||
运算符的优先次序
优先次序 运算符
1     . [] ()
2     ++ -- ! ~ instanceof
3     new (type)
4     * / %
5     + -
6     >> >>> <<
7     > < >= <=
8     = = !=
9     &
10     ^
11     |
12     &&
13     ||
14     ?:
15     = += -= *= /= %= ^=
16     &= |= <<= >>= >>>=
条件语句 if-else
多分支语句 switch     (这些和其他语言中的使用格式大多雷同,不多说,金州注释)
循环语句while语句 do-while语句 for语句
跳转语句break语句 continue语句 返回语句return
例外处理语句:try-catch-finally, throw
数组,字符串处理金。州略过。因为要超简单介绍。

三。Java语言中的面向对象特性
基本特征1.封装性 2.继承性3.多态性
类:包括两个部分:类声明和类体。
这个说起来比较麻烦,只要记住这个语言面对的是对象就好了,不是面对过程的。所以这个语言
才简单好用,就是说比如你只考虑如何如何操作一台电脑,而不用多想这种操作为什么会实现。
比如我写这个东西,点文件保存就会保存,而不用想调用了哪些函数使得文件保存的。

四。Java的例外处理和I/O流
例外,比如金州要去郑州,路上出车祸了,去不成了。就是说程序有问题,不能执行下去
I/O输入输出。
举例:
class ExceptionDemo2{
      public static void main( String args[ ] ){   (格式,金州注释)
       int a = 0;                       (让a = 0,金州注释)
       System.out.println( 5/a );       (输入5/a ,金州注释)
      }
     }
因为除数不能为0,就例外了,出问题了就是。java中的例外类可分为两大类 Error。 Exception

两种处理例外的机制:1.捕获例外:当Java运行时系统得到一个例外对象时,它将会沿着方法的
调用栈逐层回溯,寻找处理这一例外的代码。找到能够处理这种类型的例外的方法后,运行时
系统把当前例外对象交给这个方法进行处理,这一过程称为捕获(catch)例外。这是积极的例外
处理机制。如果Java运行时系统找不到可以捕获例外的方法,则运行时系统将终止,相应的Java程序也将退出。
捕获例外通过try-catch-finally语句实现。

2.声明抛弃例外:如果一个方法并不知道如何处理所出现的例外,则可在方法声明时,声明抛弃(throws)例外。
这是一种消极的例外处理机制。声明抛弃例外是在一个方法声明中的throws子句中指明。

I/O流的层次1.字节流2.字符流3.对象流4.其它
I/O处理中,最常见的是对文件的操作,
文件描述举例:列出目录D://ex/所有的.java文件
import java.io.*;               (io处理,金州注释)
  public class FileFilterTest{
    public static void main(String args[]){   (以上格式,起个名字。金州注释)
     File dir=new File("d://ex");     (用File 对象里面那个目录,金州注释)
     Filter filter=new Filter("java");   (生成一个名为java的过滤器,金州注释)
     System.out.println("list java files in directory "+dir);
     String files[]=dir.list(filter);   (输入列举目录,金州注释)
     for(int i=0;i<files.length;i++){   (循环查找,金州注释)
      File f=new File(dir,files);   (为目录dir 赋予对象,金州注释)
       if(f.isFile())             (如果找到就输出,金州注释)
        System.out.println("file "+f);
       else
        System.out.println("sub directory "+f ); (如果是目录则打印目录名)
     }
    }
   }
   class Filter implements FilenameFilter{
    String extent;
    Filter(String extent){
     this.extent=extent;
    }
    public boolean accept(File dir,String name){
     return name.endsWith("."+extent);   (返回文件的后缀名,金州注释)
    }
   }

文件或目录的生成
  public File(String path);/*如果path是实际存在的路径,则该File对象
    /*表示的是目录;如果path是文件名,则该File对象表示的是文件。*/
  public File(String path,String name);//path是路径名,name是文件名
  public File(File dir,String name);//dir是路径名,name是文件名
文件名的处理
  String getName( ); //得到一个文件的名称(不包括路径)
  String getPath( ); //得到一个文件的路径名
  String getAbsolutePath( );//得到一个文件的绝对路径名
  String getParent( ); //得到一个文件的上一级目录名
  String renameTo(File newName); //将当前文件名更名为给定文件的
                   完整路径
文件属性测试
  boolean exists( ); //测试当前File对象所指示的文件是否存在
  boolean canWrite( );//测试当前文件是否可写
  boolean canRead( );//测试当前文件是否可读
  boolean isFile( ); //测试当前文件是否是文件(不是目录)
  boolean isDirectory( ); //测试当前文件是否是目录
普通文件信息和工具
  long lastModified( );//得到文件最近一次修改的时间
  long length( ); //得到文件的长度,以字节为单位
  boolean delete( ); //删除当前文件
目录操作
  boolean mkdir( ); //根据当前对象生成一个由该对象指定的路径
  String list( ); //列出当前目录下的文件

随机访问文件
构造方法:
  RandomAccessFile(String name,String mode); //name是文件名,mode
          //是打开方式,例如"r"表示只读,"rw"表示可读写,"
  RandomAccessFile(File file,String mode); //file是文件对象
文件指针的操作
  long getFilePointer( ); //用于得到当前的文件指针
  void seek( long pos ); //用于移动文件指针到指定的位置
  int skipBytes( int n ); //使文件指针向前移动指定的n个字节

几种常见的过滤流
过滤流在读/写数据的同时可以对数据进行处理,它提供了同步机制,使得某一时刻只有
一个线程可以访问一个I/O流,以防止多个线程同时对一个I/O流进行操作所带来的意想不
到的结果
BufferedInputStream和BufferedOutputStream
    缓冲流,用于提高输入/输出处理的效率。
DataInputStream 和 DataOutputStream
    不仅能读/写数据流,而且能读/写各种的java语言的基本类型,如:boolean,int,float等。
LineNumberInputStream
    除了提供对输入处理的支持外,LineNumberInputStream可以记录当前的行号。
PushbackInputStream
    提供了一个方法可以把刚读过的字节退回到输入流中,以便重新再读一遍。
PrintStream
    打印流的作用是把Java语言的内构类型以其字符表示形式送到相应的输出流。
字符流
1.Reader类是处理所有字符流输入类的父类。
读取字符
  public int read() throws IOException; //读取一个字符,返回值为读取的字符
  public int read(char cbuf[]) throws IOException; /*读取一系列字符到数组cbuf[]中,返回值为实际读取的字符的数量*/
  public abstract int read(char cbuf[],int off,int len) throws IOException;
  /*读取len个字符,从数组cbuf[]的下标off处开始存放,返回值为实际读取的字符数量,该方法必须由子类实现*/
标记流
  public boolean markSupported(); //判断当前流是否支持做标记
  public void mark(int readAheadLimit) throws IOException;
   //给当前流作标记,最多支持readAheadLimit个字符的回溯。
  public void reset() throws IOException; //将当前流重置到做标记处
关闭流
  public abstract void close() throws IOException;
2. Writer类是处理所有字符流输出类的父类。
向输出流写入字符
  public void write(int c) throws IOException;
  //将整型值c的低16位写入输出流
  public void write(char cbuf[]) throws IOException;
  //将字符数组cbuf[]写入输出流
  public abstract void write(char cbuf[],int off,int len) throws IOException;
  //将字符数组cbuf[]中的从索引为off的位置处开始的len个字符写入输出流
  public void write(String str) throws IOException;
  //将字符串str中的字符写入输出流
  public void write(String str,int off,int len) throws IOException;
  //将字符串str 中从索引off开始处的len个字符写入输出流
flush( )
  刷空输出流,并输出所有被缓存的字节。
关闭流
  public abstract void close() throws IOException
生成流对象
  public InputStreamReader(InputStream in);
  /*in是字节流,而InputStreamReader是字符流,但是其来源是字节流in,
  因此InputStreamReader就可以把字节流in转换成字符流处理。/*
  public InputStreamReader(InputStream in,String enc) throws UnsupportedEncodingException;
  /*enc是编码方式,就是从字节流到字符流进行转换时所采用的编码方式,
   例如 ISO8859-1,UTF-8,UTF-16等等*/
  public OutputStreamWriter(OutputStream out);
  /*out是字节流,而OutputStreamReader是字符流 */
  public OutputStreamWriter(OutputStream out,String enc) throws UnsupportedEncodingException;
  //enc是编码方式
  InputStreamReader和OutputStreamWriter的方法:
读入和写出字符
  基本同Reader和Writer。
获取当前编码方式
  public String getEncoding();
关闭流
  public void close() throws IOException;

生成流对象
  public BufferedReader(Reader in); //使用缺省的缓冲区大小
  public BufferedReader(Reader in, int sz); //sz为缓冲区的大小
  public BufferedWriter(Writer out);
  public BufferedWriter(Writer out, int sz);
读入/写出字符
  除了Reader和Writer中提供的基本的读写方法外,增加对整行字符的处理。
  public String readLine() throws IOException; //读一行字符
  public void newLine() throws IOException; //写一行字符
内存的读/写
1.ByteArrayInputStream和ByteArrayOutputStream
  ByteArrayInputStream //从字节数组中读取以字节为单位的数据
  ByteArrayOutputStream //向字节数组中写入以字节为单位的数据
2。StringBufferInputStream和StringBufferOutputStream
  StringBufferInputStream
  //从字符串缓冲区StringBuffer中读取以字符为单位的数据
  StringBufferOutputStream
  //向字符串缓冲区StringBuffer中写入以字符为单位的数据

五AWT图形用户界面设计
AWT事件及其相应的监听器接口
事件类别     描述信息   接口名           方法
 ActionEvent 激活组件   ActionListener  actionPerformed(ActionEvent)
 ItemEvent 选择了某些项目   ItemListener  itemStateChanged(ItemEvent)
 MouseEvent 鼠标移动   MouseMotionListener  mouseDragged(MouseEvent)
 mouseMoved(MouseEvent)
鼠标点击等   MouseListener  mousePressed(MouseEvent)
 mouseReleased(MouseEvent)
 mouseEntered(MouseEvent)
 mouseExited(MouseEvent)
 mouseClicked(MouseEvent)
 KeyEvent 键盘输入   KeyListener  keyPressed(KeyEvent)
 keyReleased(KeyEvent)
 keyTyped(KeyEvent)
 FocusEvent 组件收到或失去焦点   FocusListener  focusGained(FocusEvent)
 focusLost(FocusEvent)
 AdjustmentEvent 移动了滚动条等组件   AdjustmentListener  adjustmentValueChanged(AdjustmentEvent)
 ComponentEvent 对象移动缩放显示隐藏等   ComponentListener  componentMoved(ComponentEvent)
 componentHidden(ComponentEvent)
 componentResized(ComponentEvent)
 componentShown(ComponentEvent)
 WindowEvent 窗口收到窗口级事件   WindowListener  windowClosing(WindowEvent)
 windowOpened(WindowEvent)
 windowIconified(WindowEvent)
 windowDeiconified(WindowEvent)
 windowClosed(WindowEvent)
 windowActivated(WindowEvent)
 windowDeactivated(WindowEvent)
 ContainerEvent 容器中增加删除了组件   ContainerListener  componentAdded(ContainerEvent)
 componentRemoved(ContainerEvent)
 TextEvent 文本字段或文本区发生改变   TextListener  textValueChanged(TextEvent)
其余略过

六Java的线程和Java Applet
Applet和浏览器间的通信
getDocumentBase( ) //返回当前网页所在的URL
  getCodeBase( ) //返回当前applet所在的URL
  getImage(URL base,String target) //返回网址URL中名为target的图像
  getAudioClip(URL base,String target)
                 //返回网址URL中名为target的声音对象
  getParameter(String target ) //提取HTML文件中名为target的参数的值
同页Applet间的通信
  在java.applet.Applet类中提供了如下方法得到当前运行页的环境上下文AppletContext对象。
  public AppletContext getAppletContext();
通过AppletContext对象,可以得到当前小应用程序运行环境的信息。AppletContext是一个接口,
其中定义了一些方法可以得到当前页的其它小应用程序,进而实现同页小应用程序之间的通信。
1.得到当前运行页的环境上下文AppletContext对象
     public AppletContext getAppletContext();
2.取得名为name的Applet对象
     public abstract Applet getApplet(String name);
3.得到当前页中所有Applet对象
     public abstract Enumeration getApplets();

七Swing用户界面设计
Swing包
包                描述
Com.sum.swing.plaf.motif 用户界面代表类,它们实现Motif界面样式  
Com.sum.java.swing.plaf.windows 用户界面代表类,它们实现Windows界面样式
Javax.swing   Swing组件和使用工具
Javax.swing.border    Swing轻量组件的边框
Javax.swing.colorchooser   JcolorChooser的支持类/接口
Javax.swing.event   事件和侦听器类
Javax.swing.filechooser   JFileChooser的支持类/接口
Javax.swing.pending   未完全实现的Swing组件
Javax.swing.plaf   抽象类,定义UI代表的行为
Javax.swing.plaf.basic   实现所有标准界面样式公共功能的基类
Javax.swing.plaf.metal 用户界面代表类,它们实现Metal界面样式
Javax.swing.table   Jtable组件
Javax.swing.text   支持文档的显示和编辑
Javax.swing.text.html   支持显示和编辑HTML文档
Javax.swing.text.html.parser   Html文档的分析器
Javax.swing.text.rtf   支持显示和编辑RTF文件
Javax.swing.tree   Jtree组件的支持类
Javax.swing.undo   支持取消操作
金州略过

八Java网络编程
为了表示URL, java.net中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:
public URL (String spec);
     通过一个表示URL地址的字符串可以构造一个URL对象。
     URL urlBase=new URL("http://www. 263.net/")
public URL(URL context, String spec);
     通过基URL和相对URL构造一个URL对象。
     URL net263=new URL ("http://www.263.net/");
     URL index263=new URL(net263, "index.html")
public URL(String protocol, String host, String file);
     new URL("http", "www.gamelan.com", "/pages/Gamelan.net. html");
public URL(String protocol, String host, int port, String file);
     URL gamelan=new URL("http", "www.gamelan.com", 80, "Pages/Gamelan.network.html");
注意:类URL的构造方法都声明抛弃非运行时例外(MalformedURLException),因此生成URL对象时,
我们必须要对这一例外进行处理,通常是用try-catch语句进行捕获。格式如下:

try{
URL myURL= new URL(…)
}catch (MalformedURLException e){
  …
                       (放置例外的编码的,金州注释)
  …
}
这个应该很熟悉的,哈哈,前天还有朋友在邪恶八进制的回帖里面问这一句什么意思。
一个URL对象生成后,其属性是不能被改变的,但是我们可以通过类URL所提供的方法来获取这些属性:
public String getProtocol() 获取该URL的协议名。
public String getHost() 获取该URL的主机名。
public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1。
public String getFile() 获取该URL的文件名。
public String getRef() 获取该URL在文件中的相对位置。
public String getQuery() 获取该URL的查询信息。
public String getPath() 获取该URL的路径
public String getAuthority() 获取该URL的权限信息
public String getUserInfo() 获得使用者的信息
public String getRef() 获得该URL的锚
当我们得到一个URL对象后,就可以通过它读取指定的WWW资源。这时我们将使用URL的方法openStream(),其定义为:
         InputStream openStream();
方法openSteam()与指定的URL建立连接并返回InputStream类的对象以从这一连接中读取数据。
public class URLReader {
public static void main(String[] args) throws Exception{   (声明抛出所有例外,金州注释)
URL tirc = new URL("http://www.eviloctal.com/forum/"); (构建一URL对象,金州注释)                    
BufferedReader in = new BufferedReader(new InputStreamReader(tirc.openStream()));
 (使用openStream得到一输入流并由此构造一个BufferedReader对象,金州注释)
String inputLine;
while ((inputLine = in.readLine()) != null) (一直读,读完为止,金州注释)
  System.out.println(inputLine);       (输出,金州注释)
in.close();               ( 关闭输入流,金州注释)
 }
}

例子
下面是一个典型的创建客户端Socket的过程。
try{
 Socket socket=new Socket("127.0.0.1",4700);      
}catch(IOException e){
 System.out.println("Error:"+e);
}
这是最简单的在客户端创建一个Socket的一个小程序段,也是使用Socket进行网络通讯的
第一步,程序相当简单,在这里不作过多解释了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值