`
hulunberbus
  • 浏览: 894112 次
文章分类
社区版块
存档分类
最新评论

java读书笔记----关于java中的static

 
阅读更多

静态成员是一组比较特殊的成员,它不属于某个特定的类实例。它独立于该类。也就是说它不依赖类特定的实例,而被类的所有实例共享。

类的静态成员一般可以分为3种:静态成员变量,静态方法,静态代码块。它们都具有以下几个特点:

1、在类加载的时候,就进行创建和初始化或执行代码;

2、它们对于一个类来说,都只有一份;

3、类的所有实例都可以访问到它们;

1)、静态成员变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫做静态变量;另一种是没有被static修饰的变量,叫做实例变量。两者的区别在于:

静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配。在访问中一般都是直接通过类名来访问,不建议通过对象来访问。因为静态成员是属于类所有。静态成员变量会在类加载以后进行创建和初始化操作。

对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

2)、静态方法

静态方法指的是用static关键字修饰的方法,他可以被对象访问,也可以直接由类名来访问。对于静态方法,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态成员变量和静态方法。因为static方法独立于任何实例,因此static方法必须要被实现,而不能是抽象的abstract。

3)、静态代码块

静态代码块,是采用static修饰,用大括号“{......}”围起来的代码,这些代码可以使用静态成员变量和静态方法,它们也是在类加载的时候被调用。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。


执行得结果如下:

static code
0
static method.....


分析:

在StaticTest类中,包含一个静态成员变量a,一个testMethod()静态方法以及一段静态代码块。当执行以上代码的时候,JVM会加载StaticTest类到内存中,然后创建a变量并进行初始化,再执行static代码块。在main()方法中,创建一个staticTest类的实例对象。通过该实例对象来访问静态方法testMethod()。

对于static和final一块用表示什么
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。


分享到:
评论

相关推荐

    JAVA 笔记-------------------

    2. **static关键字**:在Java中,static关键字用于声明类级别的变量或方法,不依赖于类的实例即可访问。static变量(静态变量)是所有类实例共享的,而static方法(静态方法)不能直接访问非静态成员,因为它们不与...

    java学习笔记-达内科技

    在DAY08至DAY12,笔记进一步深入到类的修饰符(如public、private、protected和static)、常用类(如Math、String、Date等)以及内部类的使用。内部类可以分为成员内部类、局部内部类、匿名内部类等,它们在处理复杂...

    JAVA学习经典笔记-----1

    在JAVA中,对象的状态主要指对象所具有的属性值及其当前的状态。对象通过其属性(字段)来表示其状态,而行为则是通过方法实现的。对象的状态可以随着程序的运行而改变。 #### 关键概念解析: - **封装性**:Java...

    JAVA学习笔记-java学习笔记WORD样式.docx

    ### JAVA学习笔记知识点详解 #### 一、计算机概述 1. **计算机**:电子设备,用于处理信息。 2. **计算机硬件**: - **中央处理器(CPU)**:计算机的大脑,负责处理指令。 - **内存(RAM)**:临时存储数据,...

    java学习笔记-基础

    ### Java学习笔记——基础知识详解 #### 一、Java开发环境(JDK)与运行环境(JRE) Java技术的核心在于其强大的跨平台能力,这主要得益于Java的两大环境:JDK(Java Development Kit)和JRE(Java Runtime ...

    java学习笔记-从新开始-从心开始

    本学习笔记旨在重新巩固并深入理解Java的基础知识,帮助读者建立起扎实的编程基础。 ### 第一部分:Java的第一个应用 在Java的学习旅程中,编写第一个"Hello, World!"程序是必不可少的起点。以下是一个简单的示例...

    Java自学笔记 - 超有用

    【Java自学笔记】 Java是一种广泛使用的面向对象编程语言,其设计思想主要基于对象、类、继承、封装和消息传递等核心概念。面向对象编程(OOP)旨在通过模拟现实世界中的实体来构建软件系统,使得代码更加易于理解...

    java学习笔记-从新开始-从心开始(2)

    本篇笔记将深入探讨Java的基础知识,旨在帮助初学者更好地理解并掌握这门强大的语言。 ### 第一部分:Java应用程序的创建 #### 1. 第一个Java应用 在Java中,编写一个简单的"Hello, World!"程序是开始学习的常用...

    java基础笔记-毕向东

    static关键字在Java中用于定义类的静态成员,包括静态变量、静态方法和静态代码块。静态成员属于类,而不属于任何对象,这意味着它们被类的所有实例共享,并且在加载类时进行初始化,而不是在创建对象时。静态成员的...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    在Java编程语言中,`final`关键字、抽象类和接口是面向对象编程的重要概念。它们各自扮演着不同的角色,帮助我们构建更健壮、可维护的代码结构。 首先,`final`关键字在Java中具有多种用途。它可以用来修饰类、方法...

    小码哥-任小龙Java笔记-面向对象的全部笔记

    ### 小码哥-任小龙Java笔记-面向对象的核心知识点 #### 一、面向对象基础概念 ...以上内容覆盖了小码哥-任小龙Java笔记中的面向对象关键知识点,希望能帮助您更好地理解和掌握面向对象编程的核心概念和技术细节。

    JAVA学习经典笔记-----2

    ### JAVA学习经典笔记...以上是根据提供的文档内容总结出来的Java学习经典笔记中的关键知识点。这些知识点覆盖了Java语言的基础概念、特性、开发环境配置、语法结构等多个方面,对于初学者来说是非常宝贵的学习资料。

    Java面试笔记-基础问题篇.docx

    Java是一种广泛使用的高级编程...以上仅是Java面试笔记中的部分知识点,实际面试中可能涉及更多细节和深入问题。对于求职者来说,熟练掌握这些基础知识,并能结合实际项目经验进行深入讨论,将有助于在面试中脱颖而出。

    Java-多态--学习笔记.docx

    Java中的多态性是面向对象编程的一个核心特性,它允许我们设计更加灵活和可扩展的代码。在Java中,多态性(Polymorphism)主要体现在两个方面:方法的重写(Overriding)和接口的实现(Interface Implementation)。...

    java核心技术-整理过的笔记

    ### Java核心技术精炼知识点 #### 一、Java平台概述与分类 Java技术主要分为三个标准: 1. **Java SE(Standard Edition)**:标准版,适用于桌面应用软件。 2. **Java EE(Enterprise Edition)**:企业版,针对...

    个人笔记--JAVA基础

    ### 个人笔记--JAVA基础 #### 一、初识Java **1.1. Java语言是什么** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。它被设计为简单、面向对象、分布式、解释型、健壮、安全、与体系结构...

    java笔记-初学者的必备之书

    ### Java笔记知识点详解 #### 第一章:Java语言入门 - **1.1 Java的诞生** - Java是由Sun Microsystems公司于1995年推出的一种面向对象的、跨平台的编程语言。 - Java的设计目标是实现一次编写,到处运行(Write...

    JavaOOP-04-static关键字笔记.pdf

    Java中的`static`关键字是一个非常重要的概念,它在面向对象编程中扮演着核心角色。`static`关键字可以用于修饰变量、方法和代码块,每种修饰都有其特定的用途和意义。 首先,让我们来理解一下`static`修饰的变量,...

    java-SE-马士兵笔记word

    ### Java SE - 马士兵笔记精要 #### 第1章 Java概述 - **Java语言的特点**: - **面向对象**:Java是一种完全支持面向对象编程的语言。 - **平台无关性**:通过Java虚拟机(JVM),Java可以在任何安装了JVM的...

Global site tag (gtag.js) - Google Analytics