JAVA学习笔记——杂

来源:互联网 发布:ngrok 免费域名 编辑:程序博客网 时间:2024/06/05 18:54

a)当类的每个对象维护自己一个属性副本时,代表该属性的域又称为一个实例变量,即该尖的每个对象(实例)在内在中有该变量的一个单独实例。

对于有些域,类的每个对象并不需要有该域的一个单独实例,static域就属于这样的情况,称之为类变量,该类的所有对象都共享该类的static域的一个副本;如果一个类的所有对象都需要某个变量的相同副本,则使用static变量;

       所以main得声明为static,当执行JVM时,JVM会调用所指定类的main方法,在这时还没有创建该类的任何对象,因此声明其为static,JVM就可以不必创建该类的一对象而调用main了。publicstatic void main(String args[]),执行:javaClassName  agrument1 argument2…

JVM加载由ClassName指定的类,并使用这个类名调用main方法;

静态的方法只能调用同一个类中的其他静态方法,且只能直接操纵同一个类里的static域;原因:对象都没有创建,怎么可能调用其他的非静态方法呢!!!

 

b)字符串连接:”hello”+”there”将创建String “hellotherer”;字符串中所用的基本值会被转化成String,如果一个布尔值与一个String联接,则布尔值将转化成String “true”or “false”,如:

double result = 12.900;“hello ”+ “result”其结果是”hello12.9”后面的0会省略;

所有对象都有一个名为toString()的方法,会返回该对象的String表示形式;

 

c)重载方法:JAVA允许在一个类中声明几个同名的方法,只要该方法有不同的形参序列(由的数目、排序和类型决定),重载方法是通过签名来区分的,签名是方法名与形参的数目、类型和排序的组合,通过返回类型无法区分方法;

 

d)构造函数:函数体中使用了this引用,它只能在构造函数体的第一个语句中,如果不是,则会产生语法错误,使用this引用重用了另一个构造函数的初始化代码,而不是在重写类似的代码,这样就使得程序易于维护和修改;

如:

public Time2()

{

       this(0,0, 0);

}

public Time2(int h)

{

       this(h,0, 0);

}

 

public Time2(int h, int m, int s)

{

       setTime(h,m, s);

}

如果我们要修改类Time2对象的初始化方法,只需要修改大家都调用的那个构造函数即可。

 

e)枚举类型都是引用类型,可以通过引用指向enum类型对象,其有如下限制:

enum类型隐含为final,因为它们声明的是常量,不能修改;

enum隐含为static;

如果试图用new创建一个enum类型的对象,将引发编译错误;

 

f)声明为static的方法不能访问非static类成员,因为static方法可能在没有类对象存在的情况下被调用。因此,不能在static方法中使用this引用;this引用必须指向类的某个对象,而当调用static方法时内在中可能还没有该类的对象存在;

g)最小特权原则是良好软件工程的基础:privatefinal static int INCREMENT;

声明一个int类型的final(常量)实例变量INCREMENT,常量可以在声明时初始化,也可以在类的构造函数中初始化;如果是在构造函数中对其初始化,每个构造函数都应该对其进行初始化,如果不是全部对其进行初始化,则会编译出错;

如果final域在声明时初始化,应该将它同时声明为static,这样,一旦它在声明中初始化之后,其值就再也不变了,也就没有必要为每个对象都保留一个副本,static修饰符类的所有对象共享final域;

 

h)用户只关心有什么功能,而不关心如何实现这些功能;

要想使一个类能被多个应用程序导入,必须将它放在一个包中。

创建可重用类的步骤如下:

1) 声明一个public类,非public的类只能被同一个包中的其他类使用;

2) 为可重用类声明选择包名,并在源代码中添加包声明,每个JAVA源代码文件中只能有一个包声明,而且它必须在所有其他声明和语句之前(注释不是语句,因此可以在包声明之前);

3) 编译类,使得它被放置在相应包的包目录结构中;

4) 将可重用类导入程序,并使用它;

规定:每个包都应以编程者在互联网域名的逆序开头;

我在源文件做如下声明packagecn.gaei.Test;

然后编译:javac–d .Test.java,则在当前目录中就有一个名为cn的目录,后者又有一个名为gaei的目录,gaei目录下有一个名为Test的目录,在Test目录下就可以找到相应的文件Test.class。

如果我们要在其他源文件中引入到此类,则可以通过importcn.gaei.test.Test;把其导入;

 

i)多态

1、 编译时类型与运行时类型不一致,即会出现多态的情况;

2、 允许把一个子类对象直接赋给一个父类引用变量,无须任何类型转换(向上转型),由系统自动完成;因为一个子类是一个特殊的父类,父类的范围比子类宽;

3、 对于属性而言,系统总是访问它编译时类所定义的属性,而对于方法却是呈现出多态性;

4、 引用类型之间的强制转换,只能把一个父类变量转换成子类变量,常用instanceof来判断;

5、 继承要表达的是一种“是(is -a)”的关系;组合要表达的是“有(has-a)”的关系;

原创粉丝点击