2008-07-18

使用一些标准类

首先需要一些关于对象的基本知识:
  我们在声明一个基本类型值或者对象的时候,建立了两个变量,如:
long test1;
String test3;

  第一条语句建立了一个保存long型基本类型值的内存空间,第二条建立的是一个保存着指向String类型对象的引用,它并未保存对象的内容,而知识一个地址。这一点类似于C中声明一个字符指针。
  在Java中,要初始化对象,需要使用new运算符。比如要初始化上面那个test3。
test3 = new String ("It's only a String");
  如上,new运算符建立对象后将调用类的构造方法初始化新对象。构造方法是一种特殊的方法,方法名和类名是一样的。
  对象在初始化之后才可以使用,这个时候可以通过直接用变量名来引用类的方法。

test1=test3.length();
  一般,我们可以将声明对象引用变量和创建对象一起做:
String test3 = new String ("It's only a String");
此外,由于字符串超级常用,所以Java中简化了它的对象初始化写法。我们可以像C一样写:
String test3="It's only a String";

  此外,还有一个和C类似的地方,在Java中,直接用"="的赋值也基本可以理解为用后者的值覆盖前者的值,因此也就有了所谓的变量别名了...可见Java中巧妙的隐藏起了指针。又让我们能使用到同样便捷的方法。
  这里值得一提的是,加入某个对象的所有引用都丢失了。Java环境会把它标识为垃圾,会自动释放,这一免去了我们释放内存的烦恼。

  在Java中我们常常要用到类库,有时候也称Java API,Java标准类库被划分成许多包,每个类都属于其中一个包。我们需要了解一下:

包名
包含的功能
java.lang 主要含有与语言相关的类。java.lang包由解释程序自动加载,不需要显示说明

java.io

主要含有与输入/输出相关的类,这些类提供了对不同的输入和输出设备读写数据的支持,这些输入和输出设备包括键盘、显示器、打印机、磁盘文件等

java.util

包括许多具有特定功能的类,有日期、向量、哈希表、堆栈等,其中Date类支持与时间有关的操作
java.awt
提供绘图和建立图形用户界面的类
AWT表示 Abstract Windowing Too

java.swing

扩展的AWT包

java.net

含有与网络操作相关的类,如TCP ScoketsURL等工具。

java.applet

含有控制HTML文档格式、应用程序中的声音等资源的类,其中Applet类是用来创建包含于HTMLApplet必不可少的类。
java.beans 定义了应用程序编程接口(API),Java BeansJava应用程序环境的中性平台组件结构。
java.math
提供了大量的计算用的类
java.rmi
提供用于建立可以跨多个计算机的分布式程序,
RMI表示Remote Method Invocation
java.security
执行安全限制
java.sql
提供与数据库交互的类
java.text
提供格式化的文本输出
java.xml.parers
用于处理XML文档
  当我们要使用某个类的时候就需要import 相应的包,Java支持直接使用*引用指定包中的所有类。类的归属关系请查阅java文档

  在很多情况下,当我们要同时处理基本数据类型和对象的时候很容易出问题,这个时候 封装类(wrapper)就相当有用,其实所谓的封装类就是基本数据类型的类版本。每种类型对于相应的封装类。
如表:

基本数据类型
对应的封装类
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean
void
Void
需要说明的是这里的Void类不能实例化,仅仅代表空引用。
当涉及到基本数据类型与相应的封装类之间的赋值的时候java会自动包装和自动拆包。
-------------------------------------------
接下来是应该要掌握的一些基本类的用法:

String类:

方法原型
说明
String(String str)
构造方法,用于建立一个新String对象,并用参数str的字符串来初始化它
char chartAt(int index)
返回指定索引位置的字符
int compartTo(String str)
返回一个整型值,正、0、负来表示本对象的字符串按字典顺序位置先于、等于或后于str对象的字符串
String concat (String str)
返回一个由本对象字符串和str拼接后的字符串
boolean equals(String str)
和str的字符串比较是否相同
boolean equalsIgnoreCase(String str)
上一个方法的不区分大小写版
int length()
返回本字符串包含的字符个数
String replace(char oldChar,char newChar)
将本对象字符串中所以和oldChar一样的子串用newChar替换
String substring(int offset,int endIndex)
将开始位置偏移offset个取子串返回
  在Java中,一旦建立了一个String对象其内容是不可变的,但是String类的方法可以返回新的String对象来产生新的字符串。所谓字符串所以同C中字符数组。

Math类(java.lang):

方法原型
说明
static int abs(int num)
返回num的绝对值
static double ceil(double num)返回不小于num的最小整数(返回值为double型)
static double floor(double num)
返回不大于num的最大整数(返回值为double型)
static int max(int num1,int num2)
求两个整数中最大数(另有针对long、float、double的方法)
static int min(int num1,int num2)
求两个整数中最小数(另有针对long、float、double的方法)
static double random()取[0.0 , 1,0)之间的随机数
static double sqrt(double a)

求平方根
static double sin(double angle)

求d的sin值(另有求其他三角函数的方法如cos,tan,asin, acos, atan)angle为弧度。
static double log(double x)
求自然对数
static double exp(double x)求e的x次幂
static double pow(double a, double b)
求a的b次幂

  值得注意的是,Math类的所有方法都是静态方法,(static方法,又称类方法),也就是说可以通过类名直接调用方法而无须先初始化对象。比如:

double test1,test3,test5;
test1=Math.sqrt(2);
test3=Math.sin(0);
test5=Math.random();


Random类(java.util):


方法原型
说明
Random()
构造方法,创建一个新的伪随机数生成器。
float nextFloat()
返回一个分布在[0.0 , 1.0)之间的浮点随机数
int nextInt()
返回一个整形随机数,取值分布在int区间,包括正负
int nextInt(int num)
返回一个整形随机数取值分布在[0 , num-1]之间
基本上,这个类在编写一些包含随机结果的程序中相当的有用。
例如:

Random test= new Random();
int te1;
float te2;
te1=test.nextInt(100);
te2=test.nextFloat();

没有评论: