java什么时候声明static方法

1.经常用到的方法,可以声明为static,这样省去了每次new对象的内存空间,因为非static方法,需要new对象才能调用此方法。但因此也产生多线程访问线程安全问题

比如:

2.当一个方法或者变量需要在类加载器加载类的时候,就需要初始化时,声明为static。Static变量在项目启动时就分配内存,直到程序结束释放内存。static和const变量在项目启动时就已经分配内存了,而且方法调用之后也不会被释放。

3.声明为static方法后,内存中就只有一份数据了。所以就要注意线程安全问题,就需要加同步处理。线程就会等待访问了,就会有线程安全问题。

时间: 2024-10-29 19:10:39

java什么时候声明static方法的相关文章

Java中循环声明变量方法

Java循环声明变量 之前想这样做,但是网上一直搜索不到,下面是我的方式 项目中 // 得到需要查询外表的数量,然后分别创建缓存,插入数据多的时候如果编码在缓存里面,就不需要再去查询数据库了.key:code/value:pk // 根据"数据来源"有多少非空的 就创建几个,使用 "数据来源字段"+Cache 当cacheMap的key Map<String, Map<String, String>> cacheMap =new HashMa

Java学习篇之数组方法

Java中数组常用方法的总结(学习过程中看到的一篇关于Java数组的常用方法,希望能给大家提供帮助) 一.Java标准类库提供static方法System.arraycopy(),用它复制数组比用for循环复制要快得多,     System.arraycopy()针对所有的类型做了重载,需要5个参数. 第一个参数:源数组. 第二个参数:偏移量,即从哪个位置开始复制的索引. 第三个参数:目标数组. 第四个参数:偏移量. 第五个参数:要从源数组中复制到目标数组元素的个数,一般情况下为目标数组的长度

在java中为什么要把main方法定义为一个static方法?

我们知道,在C/C++当中,这个main方法并不是属于某一个类的,它是一个全局的方法,所以当我们执行的时候,c++编译器很容易的就能找到这个main方法,然而当我们执行一个java程序的时候,因为java都是以类作为程序的组织单元,当我们要执行的时候,我们并不知道这个main方法会放到哪个类当中,也不知道是否是要产生类的一个对象,为了解决程序的运行问题,我们将这个main方法定义为static,这样的话,当我们在执行一个java代码的时候,我们在命令提示符中写:java Point(Point为

java——多线程——单例模式的static方法和非static方法是否是线程安全的?

单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static方法不是线程安全的,那么不会因为这个类使用了单例模式,而变的安全. 闲话休说,看代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestSingl

JAVA Static方法与单例模式的理解

近期用sonar測评代码质量的时候,发现一个问题,project中一些util类,曾经写的static方法都提示最好用单例的方式进行改正. 为此,我细致想了想,发现还是非常有道理的.这里谈谈我个人对static方法与单例模式的理解. 所谓单例模式,我不做过多解释,推荐java设计模式之禅这本书,好好理解一下. 这里我谈谈两种写法: 曾经一些公共的类,我不假思索,习惯依照例如以下写法去写: public class DateUtil { public final static String DAT

Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?

2015-10-20 以前学习java知识,只是跟着用到的代码跳着学了些,学的不全还错漏成片……恩,好惨! 思来想去,是必须要好好复习加整理下,不然写出来的东西真没法读了.所以,就从今儿起一点一点的啃下去吧. 回头创建了Class文件,又看到了熟悉的main函数……然后,有了标题的问题.那么,今天就回顾这个问题吧. 1 public class Review_p2 { 2 public static void main(String[] args) { 3 byte b = 3; 4 5 byt

java语言规范,main方法必须声明为public

注释: 根据java语言规范,main方法必须声明为public. 当main方法不是public时,有些版本的java解释器也可以执行java应用程序.有个程序员报告了这个bug. 如果感兴趣可以查一下这个bug号码4252539.这个bug被标明"关闭",不予修复.Sun公司的工程师解释说:java虚拟规范并没有要求main方法一定是public. 好在,这个问题在 java SE1.4及以后的版本中强制main方法是public 最终的到了解决.

关于JAVA中的static方法、并发问题以及JAVA运行时内存模型

一.前言 最近在工作上用到了一个静态方法,跟同事交流的时候,被一个问题给问倒了,只怪基础不扎实... 问题大致是这样的,"在多线程环境下,静态方法中的局部变量会不会被其它线程给污染掉?": 我当时的想法:方法中的局部变量在运行的时候,是存在JAVA栈中的,方法运行结束,局部变量也就都弹光了,理论上单线程的话是不会有问题的,我之所以不知道,是因为不清楚在JAVA内存模型中,一个线程对应一个栈,还是多个线程共享一个栈... 其实如果知道每个线程都有一个自己的JAVA栈的话,问题也就很清楚了

Java知识点整理(9)——static变量和方法

1.在类中,用static变量声明的成员变量叫静态变量,或者叫做类属性.类变量.它为该类的公有变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化. 2.类变量是类的公有变量,属于类,被该类的所有实例共享,当类被载入时显式初始化. 3.可以使用“对象.类属性”来调用.不过,一般都使用“类名.类属性”. 4.static变量置于方法区中. 5.用static声明的方法称为静态方法.不需要对象就可以调用(类名/方法名). 6.static方法只能使用static变量,非static方法可以使