您的位置:首页 > 编程语言 > Java开发

java基础知识个人总结

2012-07-24 17:25 381 查看
1.java中方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。对于简单数据类型来说,java实现的是只传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,它传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。以下例子可以区别简单数据类型与引用数据类型。

import java.io.*;
public class PassTest{
float ptValue;
public void changeInt(int vallue){
value=55;
}
public void changeObjValue(PassTest ref){
ref.ptValue=99f;
}
public static void main(String args[]){
int val;
PassTest pt=new PassTest();
val=11;
System.out.println("初始的整型值是: "+val);
pt.changeInt(val);
System.out.println("改变后整型值是: "+val);
pt.ptValue=101f;
System.out.println("初始的整型值是: "+pt.ptValue);
pt.changeObjValue(pt);
System.out.println("改变后整型值是: "+pt.ptValue);
}
}

结果如下:



2.类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量都会影响到其他的实例对象。类变量可以通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。

class 梯形{
float 上底,高;
static float 下底;
梯形(float x,float y,float h){
上底=x;
下底=y;
高=h;
}
float 获取下底(){
return 下底;
}
void 修改下底(float b){
下底=b;
}
}
class A{
public static void main(String args[]){                                                                                             梯形 laderOne=new 梯形(3.0f,10.0f,20),laderTwo=new 梯形(2.0f,3.0f,10);
梯形.下底=200;//通过类名操作类变量
System.out.println("laderOne的下底:"+laderOne.获取下底());
System.out.println("laderTwo的下底:"+laderTwo.获取下底());
laderTwo.修改下底(60);//通过对象操作类变量
System.out.println("laderOne的下底:"+laderOne.获取下底());
System.out.println("laderTwo的下底:"+laderTwo.获取下底());
}
}

结果如下:



3.this可以出现在实例方法和构造方法中,但不可以出现在类方法中。用static和final两个关键字修饰变量时,若不给定初始值,则按照默认规则对变量初始化。若只用final修饰而不用static,就必须只能对该变量赋值一次,不能默认。在java中若子类调用父类的构造方法,在子类的构造方法中省略掉super关键字,则系统默认有super(),即调用父类不带参数的构造方法。由于java语言规定如果一个类中含有一个或多个构造方法,系统不提供默认的构造方法(不含参数的构造方法),所以当在父类中定义了多个构造方法时,应考虑包括一个不带参数的构造方法,以防止子类省略super关键字时出现错误。抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。abstract不能与private、static、final、native并列修饰同一个方法。

4.获取类的有关信息常用方法如下:

String getName();//返回类的名字
Constructor[] getDeclaredConstructor();//返回类的全部构造方法
Field[] getDeclaredFields();//返回类的全部成员变量
Method[] getDeclaredMethods();//返回类的全部方法

见下边例子:

import java.lang.reflect.*;
class Rect{
double width,height,area;
public double getArea(){
area=height*width;
return area;
}
}
public class A{
public static void main(String args[]){
Rect rect=new Rect();
Class cs=rect.getClass();
String className=cs.getName();
Constructor[] con=cs.getDeclaredConstructors();
Field[] field=cs.getDeclaredFields();
Method[] method=cs.getDeclaredMethods();
System.out.println("类的名字:"+className);
System.out.println("类中有如下的成员变量");
for(int i=0;i<field.length;i++){
System.out.println(field[i].toString());
}
System.out.println("类中有如下的方法");
for(int i=0;i<method.length;i++){
System.out.println(method[i].toString());
}
System.out.println("类中有如下的构造方法");
for(int i=0;i<con.length;i++){
System.out.println(con[i].toString());
}
}
}

结果如下:



5.java中使用Class对象得到一个类的实例。为了得到类的一个对象,先要得到一个和该类相关的Class对象,只要使用Class的类的方法:

public static Class forName(String className)throw ClassNotFOuntException

就可以返回一个和参数className指定的类相关的Class对象,再让这个Class对象调用:

public ObjectnewInstance() thow InstantiationException,IllegalAccessException

方法就可以得到一个className类的对象。

注意:当使用Class对象调用newInstance方法实例化一个className类的对象时,className类必须有无参数的构造方法。

见如下的例子:

class RectA{
double width,height,area;
public double getArea(){
area=height*width;
return area;
}
}
public class A{
public static void main(String args[]){
try{
Class cs=Class.forName("RectA");
RectA rect=(RectA)cs.newInstance();
rect.width=100;
rect.height=200;
System.out.println("rect的面积"+rect.getArea());
}catch(Exception e){

}
}
}

结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: