java static 方法与普通方法区别

 static 方法不需要实例化,静态方法在JVM刚加载的时候就编译过了.在程序的运行过程中随时可以调用,不需要去实例化某个对象然后再去调用,可以直接用类名去调用,直到结束释放内存,且静态方法只能调用类静态变量,不能调用非static修饰变量,且任意一个对象对静态方法进行修改,其他调用该静态方法也会相应修改

  

普通方法在实例化时候才会被创建分配内存,非静态方法既可以访问静态方法又可以访问非静态方法。

总结,相对于静态方法而言,动态方法占的内存资源就少些,因为它是什么时候使用什么时候实例化,也就是说在不使用的时候它是不会占用资源的,相对与静态方法的缺点是它每次使用的时候都要进行实例化,也就是说比较麻烦一些了,方法定义static看具体需求,当调用次数比较多的util类建议用static。

时间: 2024-11-06 05:32:50

java static 方法与普通方法区别的相关文章

黑马程序员-JAVA学习之反射getDeclaredField()方法与getField()方法的区别

--------android培训.java培训.期待与你交流!-------- 在使用反射的时候,常用到的几个方法老是傻傻的分不清楚是干吗的,功能差不多的啊,比如:Class.getFields(), Class.getField(String), Class.getDeclaredFields(), Class.getDeclaredField(String)和Class.getMethods(), Class.getMethod(String, Class[]), Class.getDec

【转】彻底弄懂Java中的equals()方法以及与"=="的区别

彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差.所以,我决定花费时间把equals()和“==”的功能彻底弄懂,前事不忘后事之师嘛,分享给大家,希望对大家理解equals()和“==”的功能有所帮助. 二.分析探索解决问题的方法:1.Object 中的equals()方法: (1)通过查找API,说明如下: equalspublic boolean equ

java——static声明方法注意事项

在使用 static 类型声明的方法时需要注意的是:如果在类中声明了一 static类型的属性,则此属性既可以在非 static 类型的方法中使用,也可以在 static类型的方法中使用.但用 static 类型的属性调用非 static 类型的属性时,则会出现错误. 代码如下: public class PersonStatic { String name = "张三" ; static String city = "中国"; int age ; public P

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

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

Java中的null对象也可以访问static成员变量和方法

声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(链接为 http://blog.csdn.net/bettarwang/article/details/26515271),看代码和提问.讨论都更方便. 一般来说,一个类的对象要在实例化之后才可以访问类中的成员变量和方法.如果它还是null,通常意义上我们就认为它不能访问类中的成员.实际上确实不提倡这样,而且null对象确实不能访问实例成员(变量和方法),否则会引发NULLPointerExc

Java 多线程 sleep()方法与yield()方法的区别

sleep()方法与yield()方法的区别如下: 1 是否考虑线程的优先级不同 sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会.而yield()方法只会给相同优先级或更高优先级的线程运行的机会. 2 重新执行时机不同 sleep()方法会使当前线程阻塞,在睡眠时间内不会被执行.而yield()方法只是使当前线程重新回到可执行状态,当前线程有可能在进入可执行状态后立刻又被执行. 3 是否抛出异常不同 sleep()方法声明抛出Interrupt

Java中wait和sleep方法的区别

1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来

java 中sendredirect()和forward()方法的区别

 一.文章1 HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源. sendRedirect实现请求重定向,forward实现的是请求转发. 在web服务器内部的处理机制也是不一样的. 1. 跳转方式 运用forward方法只能重定向到同一个Web应用程序中的一个资源.而sendRedirect方法可以让你重定向到任何URL. 表单form的action= "/uu ";sendRedir

Java学习篇之数组方法

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

[Effective Java]考虑用静态工厂方法代替构造器

本文主要介绍如何使用静态工厂方法已经在那种场合来使用这种方式代替构造方法. 众所周知,对于类而言,我们为了获得一个类的实例对象,通常情况下会提供一个公有的(public) 的构造器.当然除了这种方法以外,我们还可以通过给类提供一个public的静态工厂方法(static factory method)的方式来完成,让它返回一个类的实例. 先看一个简单的Boolean的示例,这个示例将boolean基本类型值转换成一个Boolean对象的引用. public static Boolean valu