java 静态方法块_JAVA基础(50)---静态方法和静态代码块

静态方法

用static修饰的方法。静态的属性也称类变量,静态的方法称为类方法。

静态方法什么时候使用

类属性作为该类各个对象之间共享的变量,在设计类时,分析哪些类属性不因对象的 改变而改变,将这些属性设置为类属性,相应的方法设置为类方法。

如果方法和调用者无关,则这样的方通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。

静态方法和静态变量一样,属于类所有,在类加载的同时执行,不属于某个具体的对象,所有对象均能调用,对于静态方法需要注意以下几点:

它们仅能调用其它的static的方法

它们只能访问static数据

它们不能以任何方式引用this或super

静态方法的使用的注意事项

在静态的方法中,只能使用静态的变量,不能使用非静态的变量

静态方法只能调用静态的方法,不能调用非静态的方法

非静态可以访问静态的,而静态的不能访问非静态的

在静态中不能使用this

静态方法,一般用于声明工具类中的方法。可以直接拿类名调用工具方法进行使用。比如:在Java中,对于数组的操做,比较频繁,有一些方法是所有数组共有的一些操作排序,在数组中去查找某一个特定的元素 打印数组的元素等。

数组操作的工具类:Arrays

在Arrays这个工具类中,使用二分搜索法,查找一个元素的时候:这个数组必须是经过排序

import java.util.Arrays;

public class ArrayTest {

public static void main(String[] args) {

int[] arr = {2,3,6,7,1,4};

int serchResult = Arrays.binarySearch(arr, 4);

Arrays.sort(arr);

for(int i = 0 ; i < arr.length;i++) {

System.out.println(arr[i]);

}

System.out.println(serchResult);

}

}

静态方法与普通方法

静态方法中不可直接调用非静态方法,但是非静态方法中,可以直接调用静态的。

静态方法可以调用静态成员变量,调用普通成员变量时需要创建对象;非静态方法可以随意调用静态成员变量或普通成员变量。

静态方法和普通方法调用特性同上,静态调用普通方法时需要创建对象,而普通方法随意

静态代码块

static{

}

public class StaticBlock {

public static void main(String[] args) {

/*String schoolName = Student.getSchoolName();

System.out.println(schoolName);*/

Student stu = new Student();

Student stu1 = new Student("张三",23);

}

}

class Student {

private String name ="";

private int age;

private static String schoolName ="太原师院";

static{

schoolName ="太原师范学院";

System.out.println("静态代码块执行");

}

{

System.out.println("构造代码块执行");

}

public Student() {

System.out.println("无参构造执行");

}

public Student(String name, int age) {

this.name = name;

this.age = age;

System.out.println("带参构造执行");

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public static String getSchoolName() {

return schoolName;

}

public static void setSchoolName(String schoolName) {

Student.schoolName = schoolName;

}

}

静态代码块(无论创建多少个对象,只执行一次) --》构造代码块(随着对象的创建而执行,执行的次数,与创建对象的个数相同)--》构造方法

静态变量(类变量/类属性)的初始化

在声明变量的时候可以进行初始化

在静态代码块中对其进行初始化

什么情况下我们要使用static呢?

只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。

我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。(常用在工具类中)

静态变量和成员变量的区别

内存分配。静态静态,就是当类被加载时,这个内存就静静的待在这里,就已经存在,而普通成员变量,只有类被实例化时才分配内存。

调用方法。成员变量需要对象才能被调用;而静态成员变量可以直接通过类来调用,当然也可以直接调用

生命周期。静态成员变量从类被加载开始到类被卸载,一直存在;普通成员变量只要在类被实例化也就是创建对象是才开始存在,一直到对象结束,生命也告终。

共享方式。静态成员变量是全类共享的,即使不是对象,也可以调用,并且内存不变;普通成员变量是每个对象单独享用的,就是说你这个对象有一个 int i=1 ,我再给该类创建一个新的对象,他也有一个 int i ,但他可以不等于1,可以等于5,也可以等于10,但无论等于多少,都不会影响之前对象的i的值,而静态成员变量不是这样。

static对性能的影响

为什么说 static块 可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。static final 用来修饰成员变量和成员方法,可简单理解为“全局常量”, 常量必须要加static关键字修饰。

static 就是静态变量,声明为 static 的变量实质上就是全局变量,如果一个成员被声明为 static ,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象!

static的优点

一个静态属性在堆内存只能存在一个,即大家可以共享该属性值。

如果一个对象数组中其中的某个属性大家都是相同的,即可以使用静态,这样可以节省内存空间。

静态一旦创建,生命周期就会从创建开始到该程序结束才会死亡。

静态依赖于类,而不是对象。

为什么main方法是静态的?而且是public static

public,访问权限大;static,main方法访问时候没有对象,是程序一启动就访问的,所以它是静态的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值