Java之static理解

  说到关键字static,首先想到了常量,静态变量,本文我总结了下static的用法。

  1、静态变量

       可以被赋值,便于类访问。

  2、静态方法

    静态方法与静态变量都可以被private、public修饰。

    当JVM加载类时,就会将类的静态方法和静态变量加载到方法区中。且只会加载一次,对所有线程共享,也就说其他线程可以更改方法区中的静态变量。

    static final 可以修饰变量和方法,表示常量不可被修改,修饰方法表示方法不可被覆盖,可以通过类名访问。

  3、静态代码块

    当JVM加载类时,静态代码块只运行一次。因为是先加载到堆内存中,而类的构造器在new时才被加载,所以构造器后于静态代码块运行

    静态代码块内部不可直接访问非静态变量和非静态方法。可以通过对方法的类实例化后,再调用方法,或者对其类的变量赋值。

  4、有一种内部类叫做静态内部类

    静态内部类不需要依赖外部类,而非静态内部类必须持有外部类的引用。

  5、静态导包,import static。简化代码。

    

原文地址:https://www.cnblogs.com/nicknailo/p/8778317.html

时间: 2024-08-30 11:33:04

Java之static理解的相关文章

Java关键字--static

在Java中,将关键字static分为三部分进行讨论,分别为Java静态变量.Java静态方法.Java静态类 Java Static Variables Java instance variables are given separate memory for storage. If there is a need for a variable to be common to all the objects of a single java class, then the static mod

java中static作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类

【Java】深入理解ThreadLocal

一.前言 要理解ThreadLocal,首先必须理解线程安全.线程可以看做是一个具有一定独立功能的处理过程,它是比进程更细度的单位.当程序以单线程运行的时候,我们不需要考虑线程安全.然而当一个进程中包含多个线程的时候,就需要考虑线程安全问题,因为此时线程可能会同时操作同一个资源,当两个或者两个以上线程同时操作一个资源的时候,就会造成冲突.不一致等问题,即线程不安全. 解决线程安全问题,本质上就是解决资源共享问题,一般有以下手段: 1)可重入(不依赖环境):2)互斥(同一时间段只允许一个线程使用)

Java中static、final用法小结(转)

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java中static的用法

static静态,作为修饰符,最初是由c引入,一开始static表示退出一个块后依然存在的局部变量.随后,static表示不能被其他文件访问的全局变量和函数.到了C++和java,static表示属于类且不属于类对象的变量和函数. 从具体用法来看,主要用到5个方面. 一.静态域. static修饰类的域(字段,成员变量),被static修饰的域在类中只有一个,它属于类,也称为类域.它只能被类操作,不能由对象操作.比如 pubic class Employee { private static i

Java基础之理解Annotation(与@有关,即是注释)

Java基础之理解Annotation 一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关联. 更通俗的意思是为程序的元素(类.方法.成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的. Annontation像一种修饰符一样,应用于包.类型.构造方法.方法.成员变量.参数及本地变量的声明语句中.

Java中static、final用法小结

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java的finally理解

1.为什么要用finally 先看一个没有finally的异常处理try-catch语句: 如果count为要使用到的资源,而且用完要求释放此资源.那么我们能够把释放资源的语句放到try-catch后运行,当前的程序无论是在运行完try语句块还是catch语句块,都会顺序运行到以下释放资源的语句. int count = 0;  //初始化资源 try{ count++; if(count == 1) throw new Exception("Exception in try"); }

对java面向对象的理解

前言: 在写博客前我们应该有个好的定位,可以是对知识的梳理和理解,可以是一种新技术,可以是对难点易错的解析和理解. 正文: java面向对象的理解.面向说的通俗点就是针对,对象就是有实际意义的事物(万物皆对象)其实也就是java中的一个参数,但这个参数实际代表了某个东西(比如你有个类Tourism,这个类对 属性姓名.年龄.当Tourism tou = new Tourism(),这个tou参数就实际代表了一个类Tourism的有意义对象,而某一个方法tourism(Tourism tou)那么