一.静态成员变量

1.属于整个类而不是某个对象实例,所以可以直接通过类名和对象名去调用。

  2.静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收

二.静态方法

1.静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员;如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量

  2. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

  3. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法

注:静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率

三.初始化块和静态初始化块

1.为什么要有初始化?

  答:初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块初始化了

    好处是可以提高初始化块的复用,提高整个应用的可维护性

 2.有初始化块和静态初始化块的区别?

  答:(1)程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

    (2)静态初始化块只在类加载时执行一次,且只能初始化静态成员变量,不能初始化普通变量

注:java中没有静态构造函数,通过静态代码块完成类似作用

 1 public class HelloWorld  {
2
3 String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age // 构造方法,手动声明构造方法之后,不论声明的是有参还是无参的构造方法,系统都不会再自动生成无参的构造方法
public HelloWorld () {
System.out.println("通过构造方法初始化name");
name = "tom";
} // 初始化块
{
System.out.println("通过初始化块初始化sex");
sex = "男";
} // 静态初始化块,只在类加载的时候初始化一次,且只能初始化静态成员变量,不能初始化普通变量
static {
System.out.println("通过静态初始化块初始化age");
age = 20;
} public void show() {
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
} public static void main(String[] args) { // 创建对象
HelloWorld hello = new HelloWorld();
// 调用对象的show方法
hello.show();
HelloWorld hello1 = new HelloWorld();
}
} 这是输出结果:
通过静态初始化块初始化age
通过初始化块初始化sex
通过构造方法初始化name
姓名:tom,性别:男,年龄:20
通过初始化块初始化sex
通过构造方法初始化name
 

java类中的static成员变量和static方法简单介绍,持续补充的更多相关文章

  1. java类中根据已有的变量复写类的toString方法

    java类中根据已有的变量复写类的toString方法: 在该类中定义好变量之后,shift+alt+s,从出现的列表中点击gemerate toString,就会自动生成对应的toString方法.

  2. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中st ...

  3. static 成员变量、static 成员函数、类/对象的大小

    一.static 成员变量 对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量. 如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量 ...

  4. Java继承关系的父子类中相同的成员变量

    最近又重温了一遍<java编程思想>,在看的过程中产生一个想法,java中继承关系的父子类,相同的方法会被重写,那相同的变量会怎样呢? 答案是变量没有重写之说,如果子类声明了跟父类一样的变 ...

  5. C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

    有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引 ...

  6. Python 类中的"静态"成员变量

    本文环境:Python 2.7 一个类的三个对象实例的属性被同时修改 有段代码如下: class task_queue: queue=[] def append(self,obj): self.que ...

  7. Java类中的各种成员的加载顺序

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  8. java类与对象_成员变量和局部变量区别

    成员变量和局部变量:1.成员变量:再类中定义,用来描述对象将要有什么.2.局部变量:在类的方法中定义,在方法中临时保存数据.区别:1.作用域不同:  局部:仅限于定义它的方法  成员:整个类中都是可见 ...

  9. C++ static成员变量与static成员函数

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分.  一 静态数据成员:  类 ...

随机推荐

  1. 灯塔(LightHouse)

    Description As shown in the following figure, If another lighthouse is in gray area, they can beacon ...

  2. Java语言中有4种访问修饰符

    转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...

  3. hdu 1732 Push Box

    http://acm.hdu.edu.cn/showproblem.php?pid=1732 推箱子和游戏规则一样. #include <cstdio> #include <cstr ...

  4. 关于GC的意见

    转载:http://tieba.baidu.com/p/3171732371?pid=53949564351&cid=#53949564351 0.这里的GC是指“垃圾回收”(garbage ...

  5. PooledDataSource--mybatis-3-mybatis-3.2.3

    org.apache.ibatis.executor.SimpleExecutor public <E> List<E> doQuery(MappedStatement ms, ...

  6. adb链接手机调试android应用

    adb链接手机调试android应用 hulk@hulk-Lenovo:~$ adb devices List of devices attached  ???????????? no permiss ...

  7. Raspberrypi安装使用开发简要说明

    Raspberrypi安装使用开发简要说明 (更新于2013年8月25日 newsuppy) 一,安装 使用win32diskimager将操作系统的image刷在SD卡上,image文件可以在htt ...

  8. [置顶] Android学习系列-Android中解析xml(7)

    Android学习系列-Android中解析xml(7) 一,概述 1,一个是DOM,它是生成一个树,有了树以后你搜索.查找都可以做. 2,另一种是基于流的,就是解析器从头到尾解析一遍xml文件.   ...

  9. 再造轮子之网易彩票-第二季(IOS 篇 by sixleaves)

    02-彩票项目第二季 2.封装SWPTabBar方式一 接着我们思考如何进行封装.前面已经将过了为什么要封装, 和封装达到的效果.这里我们主要有两种封装方式,分别是站在不同的角度上看待问题.虽然角度不 ...

  10. c、c++知识点

    一. (1)在linux下类似uint8_t这样的文件定义在头文件<stdint.h>里面   (2)截取了stdint.h头文件里的一些常用部分 二.c++中c_str()用法 函数返回 ...