java基础知识个人总结

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){
     
     }
  }
}

结果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值