类的总结——Java学习心得1

类:

1.定义类

[修饰符] class 类名

{

    *构造代码块

    零到多个 构造器

    零到多个 Field(成员变量)

    零到多个 方法

}

修饰符:public 、final、abstract

类名:必须是由一个或者多个有意义的单词连缀而成,每个单词首字母大写,其他字母全部小写,单词语单词见没有分隔符。

构造代码块:不同对象共性的初始化内容,不常见。

                   作用:给对象进行初始化。对象一建立,就运行,而且优先于构造函数执行

                   构造代码块和构造函数的区别:

构造代码块

是对所有对象统一进行初始化

构造函数

是给对应的对象进行初始化

                  

                   构造代码块中定义的是不同对象共性的初始化内容。

 

构造器:用于对象的初始化。通过new关键词来调用,没有返回值,但返回该类的实例。构造函数只能执行一次,一般方法可以执行多次。定义构造函数的情况:当分析事物时,该事物存在具备一些特性或行为,那么这些内容定义在构造函数中。

 

一个类中,默认会有一个空参数的构造函数,这个默认的构造函数和权限和所属类一直如果类被public所修饰,那么默认构造函数则被public修饰

 

定义构造器格式:

[修饰符] 构造器名(形参列表)

{

    //由零到多条可执行性语句组成的构造器执行体

}

 

         一个类可以对应多个构造函数,以针对不同的对象。通过不同的参数列表来区分不同的构造函数。

 

 

Field(成员变量):定义该类或该类实例所包含的状态数据。

定义格式:

[修饰符] Field类型 Feild名 [=默认值],

例如:private int age = 1;

方法:

定义方法格式:

[修饰符] 方法返回值类型  方法名(形参列表)

{

       //零到多条个执行性语句组成的方法体

}

 

static

         static修饰的成员表明他属于这个类本身,而不属于该类的实例。在内存中,储存在方法区中。

         static修饰的方法和Field,既可以通过类来调用,也可以通过实例来调用;

         没有static修饰的方法和Field,只能通过实例来调用。

        

Person p = new Person();的实质

         在栈内存(stack)中,引用变量p本身储存了一个地址值,指向实际的是堆内存(heap)中Person对象。

         不管是数组还是对象,都只能通过引用来访问内存中的对象。

         当p=null;时,Java的垃圾回收机制将回收Person()对象。

 

静态(static)的应用

功能:每个应用程序中都用共性的功能。可以将这些功能进行抽取,独立封装,以便复用。

 

用加建立的对象     Tool使用这些方法,

发现问题:

1.对象是用于封装数据的,但是ArrayTool中并未封装特有数据

2.操作数组的每一个方法都没有用到ArrayTool中的特有数据

 

可以将ArrayTool中的方法都定义成Static的,并通过类名调用。

 

 

方法静态后,方便使用,但是该类还是可以被其他程序建立对象的。

 

为了严谨,强制让该类不建立对象,可以通过构造函数私有化完成 

private ArrayTool(){}

 

Javadoc

实例代码:1-2.java

将ArrayTools.class 文件发给其他人,其他人就可以将文件复制到classpath路径下,就可以使用该工具类

开始制作说明书,java 说明书通过文档注释来完成,但必须是public修饰的。

 

/**

这是一个数组的工具类,取最大值,最小值,排序,打印数组

@author  Barry

@version 0.1

*/

主函数的定义:

public static void main (String[] args)     实例代码:MainDemo.java

主函数:一个特殊的函数,作为一个特殊的入口,可以被JVM调用

主函数的定义:

public :代表着函数访问的权限是最大的

static:代表主函数随着类的加载就已经存在了

void:主函数没有具体的返回值

main:不是关键字,但是是一个特殊的单词,可以被jvm识别

函数的参数:(String[] args) 是一个字符串类型的数组,

 

主函数是固定格式的,jvm jvm 在调用主函数时,传入了new String[0]

*/

 

class MainDemo

{

         publicstatic void main(String[] args)        //args = arguments

         {

                   System.out.println(args);   // args[0] 主函数传参

                   System.out.println(args.length);

         }

         publicstatic void main(int i)                                 //主函数的重载

         {

                  

         }

}

设计模式: (定义)解决某一类问题最行之有效的方法。java中有23中设计模式。实例代码:SingleDemo.java

 

单例设计模式:解决一个类在内存中只存在一个对象。

 

想要保证对象惟一性,

1.禁止其他程序建立该类的对象

2.为了让其他程序可以访问到该类对象,只好,在本类中自定义一个对象

3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式

 

这三类如何用代码体现呢?

1.将构造函数私有化

2.在类中创建一个本类对象。

3.提供一个方法可以获取到该对象。这个方法必须是静态方法,需要用类名来调用该方法,所以定义对象时,也需要用static来定义。

如何应用:

对于事物该怎么描述,就怎么描述。

例如:配置文件的配置信息,无论怎么定义对象,都只是改变一个单实例。

 

 

/*

这个事先初始化对象

称为“饿汉式”

Single类一进内存,就已经建立对象了。 

*/

//记录原则:定义单例,建议饿汉式

class Single

{

         privateSingle (){}

         privatestatic Single s = new Single();

         publicstatic Single getInstance()

         {

                   returns;

         }

}

/*

当对象被调用是,才初始化,也叫做对象的延时加载,

称为“懒汉式”

Single 类进内存,对象还没有存在,只有调用了getInstance方法时候,才建立对象。

*/

class Single

{

         privateSingle(){}

         privatestatic Single s = null;

         publicstatic getInstance()

         {

                   if(s==null)

                   {

                            s= new Single();

                   }

                   returns;

         }

        

}

 

 

静态(static)

用法:是一个修饰符,用于修饰Field(成员变量)和成员函数

当成员变量被静态修饰后,除了被对象调用外,

还可以被类名调用,类名:静态成员。

实例代码:StaticDemo.java

static特点:

1.随着类的加载而加载

         static 会随着类的消失而消失,

2.优先于对象存在

         静态实现存在,对象时后存在

3.被所有的对象共享

4.可以直接被类名调用

5.主函数是静态的

 

  实例变量和类变量的区别:

  1.存放位置:

  类变量:随着类的加载而存在于方法区中

  实例变量:随着对象的建立而存在与堆内存中

 

  2.生命周期

  类变量生命周期最长,随着类的消失而消失

  实例变量生命周期随着对象的消失而消失

      

  静态的使用注意事项:

  1.静态方法只能访问静态成员

       非静态方法可以访问非静态成员

  2.静态方法中不可以定义this,super关键字

 

  静态的优点:节省内存空间,没有必要对每一个对象都开辟共享数据存储空间。可以直接被类名直接调用

  静态的缺点:生命周期过长,访问出现局限性(只能访问静态)

 

什么时候使用静态?实例代码:StaticDemo2.java

要从两方面考虑

什么时候定义静态变量呢?

什么时候定义静态函数呢?

 

当对象中出现共享数据时,该数据被static所修饰

对象中的特有数据要定义成非静态,存在于堆内存中。

 

什么时候定义静态函数呢?实例代码:StaticDemo3.java

当功能内部没有访问到非静态数据,

那么该功能可以被静态修饰

 

静态的应用

每个应用程序中都用共性的功能

可以将这些功能进行抽取,独立封装

以便复用

你可能感兴趣的:(类的总结——Java学习心得1)