Java语言中的static类和类与类之间的总结

一、static类

  1、static类的定义

    static被称为静态,可以用来修饰类的属性或方法。

    如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性称为静态属性。

    static属性可以使用对象调用,也可以直接用类名调用。

    静态属性的类的所以对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。

    public class Employee{

      private String name;--------------------------非静态类

      private double salary;------------------------非静态类

      private static int count;-----------------------静态类

}

  2、static方法定义

     如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态类方法。

    访问权限   static修饰符   返回值类型  方法名

    public    static    void   sellticket(){

      System.out.println("所有火车票都是12306卖的!")

}

  3、static方法可以使用对象调用,也可以直接用类名调用建议用类名直接调用

  4、何时使用static方法

     如果某个方法与实例无关,也就是说不管那个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。不需要创建对象后在使用该方法。

     如:API中的Math,都是静态方法,因为进行数学运算,与Math对象本身无关,使用类直接调用即可。

     任何方法都可以直接调用静态方法;

     静态方法不能直接调用静态方法,需要创建对象,用对象名调用非静态方法

  5、static块

     static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块。

     区别在于语法不同。

     static块语法:直接在代码块前加上关键字static即成为静态块。

     static用途

    1)、静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。

    2)、如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。

    3)、一个类中可以有多个静态块,按照顺序执行。

二、final  

  1、final用于定义声明属性,方法和类

     属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。

     方法:定义必须有实现代码,并且子类里不可被继承。

     类:不能被定义为抽象类或是接口,不可被继承。

  2、final修饰属性

     当final修饰属性时,基本数据类型的属性将成为常量,不能被修改

     一些数学定理中的常量经常使用final修饰

  3、final属性的赋值

     在声明时同时赋值,往往与static一起使用

     在声明时不赋值,必须在构造方法中逐一赋值

     总的原则:保证创建每一个对象的时候,final属性得知是确定的

例:

  4、final修饰参数

     在方法参数面前加final关键字,为了防止数据在方法体中被修改。

三、类与类的关系

  1、关联关系

     1)、关联关系定义

     对象和对象之间的链接。在Java中,关联关系的代码表现形式为一类做为另一类的属性类型存在。

     即“有”的关系:"has-a".

     2)、关联关系的方向

    单向关联:A类关联B类。

    双向关联:A类关联B类,B类关联A类;例:

  

     3)、关联关系的多重性

    一对一关联:一个学生只能在一个班级学习。

    

    一对多关联:一个学生,可以参加多个班级学习

  解决方案:集合与数组

     

  2、依赖关系

     1)、依赖关系定义(use-a)

    指一个类A使用到另一个类B

     2)、依赖关系的特性

    这种关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。

     3)、依赖具体表现

    在代码层面,依赖关系表现为类B作为参数被类A在某个method

    方法中使用

    

  3、关联与依赖的区别

    关联是“HAS”关系,依赖是“USE”关系

       A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。

       A类依赖B类,指的是B的对象作为A类的方法参数存在,称为“use”关系。

    生命周期不同

       如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。

       如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。

  

时间: 2024-10-01 08:00:01

Java语言中的static类和类与类之间的总结的相关文章

Java语言中的Class类

基本概念 在Object类中定义了以下的方法,此方法将被所有子类继承 public final Class getClass() 这个方法的返回值类型是一个Class类,此类是Java反射的源头,是实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称. 对象照镜子后可以得到的信息:某个类的属性.方法和构造器.某个类到底实现了哪些接口.对于每个类而言,JRE都为其保留一个不变的Class类型的对象.一个Class对象包含了特定某个结构(class.interface.en

Java语言中String累的总结

String类 1.Java.lang包简介 java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类: 在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明. 2.String类 Java语言中,字符串是String类的对象: Java语言中,String是引用数据类型: 可以通过使用String类提供的方法来完成对字符串的操作: 创建一个字符串对象之后,将不能更改构成字符串的字符: 每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内

Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?

Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap.Hashtable哈希表存取对象的使用效率. 关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:"JVM根据某种策略生成的",那么这种策略到底是什么呢?我有一个毛病,遇到这种含糊其辞的东西,就想探个究竟,所以,本文就将hashCode()本

转:C语言中的static变量和C++静态数据成员(static member)

转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量        a.静态局部变量在函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在定义该变量的函数内使用.退出该函数后, 尽管该变量还继续存在,但不能使用它.        b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值.而对自动变量不赋初值,则其值是不定的.2).static全局变量        全局变量本身就是静

Java语言中extend和implement的区别

Java语言并不支持多重继承,而只能继承一个类,不过我们可以使用implements来实现多个接口. extends继承的父类:不能声明为final或者定义为abstract: implements实现接口interface,用逗号分开就好: 如:class A extends B implements C, D, E interface的引入是为了部分地提供多继承的功能. 在interface中只需声明方法头,而将方法体留给实现的class来做. 这些实现的class的实例完全可以当作inte

java语言中的varargs

java语言中的varargs允许调用者传递数量不定的参数,并传入的数量不定的实参转化为数组形式的形参. 那么不传递任何参数,或者传入null时,形参的值是什么呢?下面是测试代码和运行结果: 1 private void test1(int... args) { 2 if (args != null) { 3 System.out.println("[test1] args.length = " + args.length); 4 } else { 5 System.out.print

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06  PM  13:41:46  1. 不管有没有出现异常,finally块中代码都会执行: 2. 当try和catch中有return时,finally仍然会执行: 3. finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的:

C语言中的static关键字

在C语言中,"static"既可用于修饰函数,也可用于修饰变量,细细总结起来有以下几个功能: 1.static修饰函数.在工程中如果包含多个源文件,声明函数时加上static则表示仅将该函数的作用范围限定于本文件,对外部源文件是不可见的. 2.static修饰局部变量.一般而言,局部变量存储于动态存储区,如果局部变量加上static修饰,则将此局部存储于静态存储区,在程序的整个生命周期都有效. 3.static修饰全局变量.同1类似,如果工程中包含多个源文件,用static声明的全局变

javascript中模拟实现java语言中的map

//javascript中模拟实现java语言中的map 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript"> //private var obj={};//空的对象容器,用于承装键值对 function Map() { //put方法 th