1. 静态变量和静态代码块是在JVM加载类的时候执行的(静态变量被赋值,以后再new时不会重新赋值),执行且只执行一次2. 独立于该类的任何对象,不依赖于特定的实例,被类的所有实例(对象)所共享3. 可以通过类名调用  比如:Student.age;4. 静态是随类的加载而加载,this是随对象的创建而存在(静态比对象优先)   因此,静态方法中没有this关键字,即静态方法中不能使用非静态变量   举例:class Student{public int num = 0;public static void method(){System.out.println(num)}  //NG无法从静态上下文中引用非静态变量num
   }5. 静态方法只能访问静态的成员变量和静态的成员方法
6. 静态发法和普通方法一样,当使用时被调用,不同的是一开始系统为其分配内存空间。     举例1:public class Student{public static void main(String[] args) {method2(); //调用静态方法new Student().method1(); //调用非静态方法
          }public void method1{System.out.println("XXX")}public static void method2{System.out.println("XXX")}}举例2:class Student{private Student(){} //把构造方法私有化,外界就不能创建对象了public static void method1{System.out.println("XXX")}public static void method2{System.out.println("XXX")}}使用:Student.method1();Student st = new Student();ss.method1();  //NG用途:工具类,都是静态方法,直接通过类名调用方法7. 父类静态代码块 >> 子类静态代码块 >> 父类构造方法 >> 子类构造方法

class Code{

// 静态代码块 >> 构造代码块 >> 构造方法
// 静态代码块随着类的加载而加载因此优先执行
// 静态代码块,最优先执行,一般对类进行初始化,只执行一次(第一次)
① static {
System.out.println("XXX")

}
// 构造代码块,每次构造函数执行之前执行
// 可以把多个构造方法中共同代码放在一起,对对象初始化
{
System.out.println("XXX");
}
public Code(){}
{
System.out.println("xxx");
}

// ①比main方法先执行
public static void main(String[]){
{
int XXX= 1;
// 局部代码块,限定变量生命周期,及早释放,提高内存利用率
System.out.println("XXX");
}
}
}

8. 举例数据库缓存

public class CacheDemo {

即使new了一个新对象,map里数据还是保存的。
栈是用完就没了,堆是赋值为null/结束是才会被jvm回收。

static  Map<String, User> cacheMap = new HashMap<String, User>();
public User getUser(String id){
    String key = User.class.getName() + id;

User user = cacheMap.get(key));

    if(user != null){
        return user;
    }

user = QueryDB();

cacheMap.put(key, user);

return user;

}

public User updateUser(User user){

updateDB(user);

String key = User.class.getName() + user.id;

cacheMap.remove(key);

}

}

9.静态代码块static{},静态方法static void method{}

一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;
需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.
静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口。
两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的.

转载于:https://www.cnblogs.com/ysloong/p/6502273.html

java 基础 --静态相关推荐

  1. Java基础-静态代理以及动态代理

    动态代理: 在了解动态代理之前,先对代理有一个认识. 代理模式是Java常见的设计模式之一.所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 打个比方:你买火车 ...

  2. java基础-静态代理与动态代理

    一.代理模式的原理 1.1.代理模式是如何实现的 代理模式是常用的设计模式之一,它一般分为三个角色: 抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口 真实角色:需要实现抽象角色接口, ...

  3. Java基础笔记 – 枚举类型的使用介绍和静态导入

    Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...

  4. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  5. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  6. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  7. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  8. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  9. 给Java新手的一些建议——Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

最新文章

  1. 您的用户界面是您产品不会因心灵感应而谦卑的补偿
  2. PHP生成唯一订单号
  3. linux 命令修改网络,linux网络命令学习
  4. mete30是鸿蒙系统么,华为mete30pro什么时候能用上鸿蒙系统?
  5. 黄仕沛经方医案医话精选(上) 王晓军 整理
  6. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法
  7. mysql替换字段的部分数据
  8. jsf ajax循环调用,每次JSF ajax回发后执行JavaScript
  9. javascript java map_javascript实现java的map对象,js实现new map()
  10. python对于设计师有什么用-《学习PYTHON—做个有编程能力的设计师》
  11. python做一个本地搜索工具_用Python打造一款文件搜索工具,所有功能自己定义!...
  12. 1086 就不告诉你 (15 分)—PAT (Basic Level) Practice (中文)
  13. 解决办法:gtk_image_menu_item_set_image()菜单图标无法显示
  14. 虎牙tv是用php写的吗,huya虎牙php_麦麦同学
  15. 华为手机如何换成鸿蒙,如何将自己的华为手机升级成鸿蒙系统
  16. 自建KMS激活服务器:CentOS安装vlmcsd搭建
  17. iOS开发系列--NextPrevious On-Demand Resource Basics
  18. ffmpeg命令下载MP4视频)
  19. 一行代码,将2D转3D图表!
  20. ThinkPad T410i 2516A21 升級手札(換SSD固態硬碟、I7 CPU、開機20秒)

热门文章

  1. Spring AOP通知实例 – Advice
  2. 阻止表中出现重复项——SQL UNIQUE 约束
  3. C# 集合类(四):Hashtable
  4. 本地 php nginx压测试
  5. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门
  6. 进fastreboot
  7. redis集群安装和java应用
  8. [svn] 分支开发
  9. Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
  10. oracle中的一些基本概念