java中static关键字的作用】的更多相关文章

java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,static主要有5中使用情况:成员变量.成员方法.代码块,内部类和静态导包. 基本用法: static修饰成员变量:该成员变量属于类变量,可以通过 ClassName.attributeName 直接引用,而不需要new出类的实例. static修饰成员方法:该方法属于类的方法,可以通过 Class…
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类…
本篇博文转载与:Java中Native关键字的作用…
static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来 3.被static修饰的变量.被static修饰的方法统一属于类的静态资源,是类实例之间共享的. @ JDK把不同的静态资源放在了不同的类中为什么不把所有静态资源放在一个类里面呢? 主要有以下几个原因: 1.不同的类有自己的静态资源,这可以实现静态资源分类.比如和数学相关…
1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在. 这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用sta…
初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学习的地方.所以下面想要总结下native. 一.认识 native 即 JNI,Java Native Interface 凡是一种语言,都希望是纯.比如解决某一个方案都喜欢就单单这个语言来写即可.Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05…
final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. final 变量: 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量…
1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它们只能访问static数据. · 它们不能以任何方式引用this 或super. class Simple { static void go() { System.out.println("Welcome"); } } public class Cal { public static vo…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有this的方法.在static方法内部不能…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05…
static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static主要有4中使用情况:成员变量.成员方法.代码块和内部类 (1)static成员变量: Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量.静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使…
1.static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法.以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能.static块可以置于类中的任何地方,类中可以有多个static块.在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次. 为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次.因此,很多时候会将一些只…
在 Java 多线程中如何保证线程的安全性?那我们可以使用 Synchronized 同步锁来给需要多个线程访问的代码块加锁以保证线程安全性.使用 synchronized 虽然可以解决多线程安全问题,但弊端也很明显:加锁后多个线程需要判断锁,较为消耗资源.所以就引出我们今天的主角——volatile 关键字,一种轻量级的解决方案. 首先我们得了解量两个概念:多线程和 JMM. 多线程 进程和线程的概念 创建线程的两种方法 线程的生命周期 Java 内存模型(JMM) JMM 的概念 JMM 的…
引言 作为 Java 初学者,几乎从未使用过 volatile 关键字.但是,在面试过程中,volatile 关键字以及其作用还是经常被面试官问及.这里给各位童靴讲解一下 volatile 关键字的作用,内容涵盖 volatile 的保证内存可见性.禁止指令重排等. 1 保证内存可见性 1.1 基本概念 可见性是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的.也就是一个线程修改的结果,另一个线程马上就能看到. 1.2 实现原理 当对非volatile变量进行读写的时候,每个线程先从主…
摘要:static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要. 本文分享自华为云社区<Java: static关键字与final关键字>,原文作者:唐里 . static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要. 静态变量 无论你写了一个多大的程序,都会遇到static关键字,像这样,在main()方法里: 简而言之,带有 static 关键字的字段属于类,它们是类方法和变量. 当你在课堂上或者书本上学习面向对象编程时,可能会碰到类…
static关键字可以修饰方法和成员变量(不可以修饰局部变量,但是可以修饰内部类). static关键字方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static可以用来修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能 1.static 修饰成员变量: static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在…
在Java中,static可以用来修饰成员变量和成员方法. 修饰成员变量,称为静态成员方法 修饰静态方法,称为静态成员方法 搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分布是怎样的,这样的话,理解起来会事半功倍的. 代码测试如下: public class Person { static String firstName; String lastName; public void showName(){ System.out.println(firstName+la…
1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它们只能访问static数据. · 它们不能以任何方式引用this 或super. class Simple { static void go() { System.out.println("Welcome"); } } public class Cal { public static vo…
知识点:java中,static关键字修饰类的变量.方法.代码块.内部类 场景:我们在创建类的方法和变量时,如果这个类在创建多个对象时,共用同一个属性或者方法,就可以使用static关键字修饰,因为static修饰的变量,在内存的静态域存在的值,被类的多个实例所共用,实际上我们在编写一个类时,就是在描述对象的属性和行为,并没有产生实质上的对象,只有使用new关键字,才会产生对象,这时系统才会分配内存给对象,其方法才可以供外部调用.如果让多个对象共用内存空间的一份数据,就可以使用static关键字…
  1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它们只能访问static数据. · 它们不能以任何方式引用this 或super. class Simple { static void go() { System.out.println("Welcome"); } } public class Cal { public static …
Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有相同的数据成员时,会发生此情况.在这种情况下,JVM可能会模糊不清.我们可以使用以下代码片段更清楚地理解它: /* Base class vehicle */ class Vehicle { int maxSpeed = 120; } /* sub class Car extending vehic…
一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度.因此在CPU里面就有了高速缓存. 也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高…
一.static关键字的特点 (1)修饰成员变量.成员方法(2)随着类的加载而加载(3)优先于对象存在(4)被所有对象共享(5)可以通过类名调用 它本身也可以通过对象名调用 例如:main()方法由java虚拟机调用,不需要创建对象,他是一个静态方法 二.什么时候使用静态? 如果某个成员变量是被所有对象共享的,那么它应该被定义为静态的. 三.类成员和对象成员 静态修饰的内容一般我们称其为:与类相关的,类成员 非静态修饰的内容一般我们称其为:与对象相关的,对象成员 四.注意事项 (1)静态方法没有…
Java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在. 通常,我们写的程序都要求特定信息能持久存在或保存到磁盘…
静态分配的,有两种情况: 1. 用在类里的属性.方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性.方法只有“一份”:即如果一个类新建有N个 对象,这N 个对象只有同一个静态属性与方法:2. 方法内部的静态变量: 方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在, 它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别:   本文实例讲述了C#静态static的用法,分享给大家供大家参考.具体用法分析如下: 一.静态…
1.实例变量:也称非静态成员变量,实例变量前没有static关键字,用来描述同一类事物的公共属性.访问方式:对象名.变量名.实例变量存储在堆区,对象有n个,数据就有n个.实例变量随着对象的创建而创建,随着对象的消失而消失. 2.实例方法:也称非静态方法,实例方法前没有static关键字,只能用对象来调用.实例方法可以访问任何的成员变量.静态方法. 3.类变量:也称静态成员变量,类变量前有static关键字,用来共享,所有的对象都可以访问到.访问方式:1.对象名.变量名 2.类名.变量名.类变量存…
结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 原因: 1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用.如果子类里面定义了静态方法(编译器认为这时子类自己定义的一个新方法,此时父类静态方法隐藏)和属性(子类中无法定义相同签名的非静态方法,编译器会报错,因为无法重写),那么这时候父类的静态方法或属性称之为"隐藏".如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否…
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致 的情况.volatile就是用来避免这种情况的.volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1================================= 版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及…
用法:是一个修饰符,用于修饰成员(成员变量,成员函数),不能用于修饰局部变量!被static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用,写法格式是:类名.静态成员.优点:被static修饰的成员或变量单独存放在一段内存空间里面,被所有对象实例共享,不必再在形成对象实例的过程中再为其开辟一段内存空间,以达到节省内存的作用.什么时候用修饰静态变量(类变量)? 是所有对象共有且不变的内容用static修饰,对象所特有的内容随着对象的建立一起存储.什么时候定义静态函数? 当某…