美文网首页
static关键字

static关键字

作者: yangliangliang | 来源:发表于2017-06-15 16:01 被阅读28次

static关键字:

1.static修饰的变量叫做“静态变量”.

2.static修饰的方法叫做“静态方法”.

3.static还可以定义静态语句块.

以下例子演示:static定义静态语句块

static定义的静态语句块在类加载阶段执行,并且只执行一次,并且是自上而下的顺序执行。(main方法执行之前,static就已经执行。从上而下的执行,先执行static 后执行main)

public class StaticTest01{

//静态语句块

static{

System.out.println("1");

}

static{

System.out.println("2");

}

static{

System.out.println("3");

//入口

public static void main(String[] args){

System.out.println("main execute!  1");

System.out.println("main execute!  2");

}

}

第二节

一般情况下工具类中的方法大部分都是静态方法。

静态方法不用创建对象也能直接访问该方法。

*/

public class StaticTest03{

//成员方法

//成员方法必须使用“引用.”调用

public void m1(){

}

//静态方法

//可以使用“类名.”方式调用.也可以用“引用.”,即使用的是“引用.”,底层还是用的“类名.”  ,静态方法中不能直接访问非静态数据.  //静态方法中不能使用this、非静态数据包括非静态方法和成员变量!

public static void m2(){

System.out.println("m2....");

}

//入口

public static void main(String[] args){

StaticTest03 st = new StaticTest03();

st.m1();

m2();

//静态的方法按照正规的方式访问:“类名.”  //静态的方法也能用“引用.”访问  st.m2(); //编译阶段检查出st是StaticTest03类型,编译通过,运行的时候,仍然使用 "StaticTest03."的方式访问。//该方法执行不需要对象。//空的引用去访问成员的时候会出现空指针异常。//m2方法不是“成员”而是静态的。//所以即使引用是空的,也不会报空指针异常。(其实也就是说,m2 方法执行底层是 不需要这个对象的。)(重要)

StaticTest03 s = null;

s.m2();

}

}

第三节

变量分类:

1.局部变量

2.成员变量(实例变量,非静态变量)

3.静态变量(方法区)

什么时候变量声明成静态变量?(所有的java对象都有这个属性,并且这个属性对应的值都是一样的。没必要让每个对象都保留一份,我们声明成静态变量,在方法区块只有一个,所有的对象公用一个,目的在节省内存)静态变量在类加载时初始化,而且只执行一次。

如果这个属性所有的对象都有,并且这个属性的值是相同的,则该属性声明成

静态的属性。

成员变量:成员变量在创建对象的时候初始化,并且存储在堆中的每一个对象中。

静态变量:在类加载阶段赋值,并且只赋值一次。

//静态变量,被存储在方法区.

//所有的java对象共享这一份。没必要在堆中创建去浪费空间。

//所以静态变量是类级别的,使用“类名.”的方式访问.

第四节 单例模式

单例模式是23种设计模式中最简单的一种设计模式。

为了解决什么问题?为了保证JVM(虚拟机)中某一个类型的java对象永远只有一个。为了节省内存的开销。(这就是优点)(我们知道对象创建完成户,会放到堆中,如果堆中的实例过多,将会存在特别多的垃圾,这样会导致一些问题,比如内存溢出 ,使用单例模式,只会创建一个实例,显著减少了对象实例的个数,同时也提高了性能,因为不会频繁的创建对象,这只是它的一个好处。)

//==两边如果是基本数据类型,可以比较这两个基本数据类型是否相等。

//==两边如果是引用数据类型,则比较的是内存地址。

实现单例模式

什么是设计模式:设计模式是可以重复利用的解决方案。

单例模式要领:

1.构造方法私有化

2.对外提供一个公开的静态的获取当前类型对象的方法.

3.提供一个当前类型的静态变量。

单例模式分为两种:

饿汉式单例:在类加载阶段就创建了对象。

懒汉式单例:用到对象的时候才会创建对象。

public class Singleton{ //懒汉式单例

//静态变量

private static Singleton s;

//将构造方法私有化

private Singleton(){}

//对外提供一个公开获取Singleton对象的方法.

public static Singleton getInstance(){

if(s==null){

s = new Singleton();

}

return s;

}

}

/*

饿汉式单例模式

*/

public class Customer{

//类加载时只执行一次。

private static Customer c = new Customer();

//构造方法私有化

private Customer(){}

//提供公开的方法

public static Customer getInstance(){

return c;

}

}+

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • Java学习13:static关键字,this关键字

    static关键字 static翻译为“静态的”。所有static关键字修饰的都是类相关的,类级别的。所有stat...

网友评论

      本文标题:static关键字

      本文链接:https://www.haomeiwen.com/subject/vhhpattx.html