面向对象-static关键字实战案例

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.static关键字概述

1>.static的功能

  static关键字用于修饰成员变量和成员函数。

2>.被static修饰后的成员变量和成员函数具备的特点

  ()随着类的加载而加载;
  ()优先于对象存在(因此静态方法中一般无法直接使用非静态修饰的成员变量);
  ()被所有对象所共享(即不在堆内存中存放);
  ()可以直接被类名调用;

3>.使用static关键字注意事项

  ()静态方法只能访问静态成员;
  ()静态方法中不可以写this,super关键字;
  ()主函数是静态的;
  ()静态关键字不能修饰局部变量;

4>.static的优缺点

  优点:  
    静态成员多了一种调用模式,可以直接被类名调用。也可以被对象调用。   缺点:
    静态方法只能访问静态成员,存在访问的局限性。

5>.静态变量和实例变量的区别

  所属不同:
    静态变量也称为类变量,可以直接被类调用,所属于类;
    非静态变量称为成员变量,或者实例变量,是被对象调用,所属于对象。   生命周期不同:
    静态变量随着类的加载而加载,也意味着随着类的消失而消失,生命周期最长;
    而实例变量随着对象的创建而加载,随着对象的消失而消失,即按照对象生命周期而存在。   存储JVM的位置不同:
    静态变量存储在方法区的静态区中;
    实例变量存在于所述的堆内存中;   数据共享权限不同:
    静态变量数据被所有的对象所共享;
    实例变量是对象中的特有数据

 6>.static的使用场景

  成员变量:
    当该成员变量所存储的数据,每一个对象都是一样的,这时没有必要把该数据存储到每一个对象中,只要让所有对象共享该数据即可,这时成员变量就需要被static修饰。   静态函数:
    当成员函数内并没有访问对象中特有的数据时,就可以将该方法定义成静态的;
    简单的说该函数如果访问了成员变量,该函数就是非静态的;
    该函数没有访问过成员变量,或者访问过静态的成员变量,那么为了程序的严重性,将盖房啊定义成静态的。因为该方法不需要对象存在就可以使用。

二.实现一个静态工具类的应用案例

1>.编写数组工具类

/**
* 实现数据排序并且打印的功能的数组工具类
* @author 尹正杰
*
*/
public class ArrayTools { /**
* @param arr :接收一个int类型的数组,按照从大到小的顺序对int类型的数组进行排序。
*/
public static void sort(int[] arr) {
for (int x = 0; x < arr.length - 1; x++) {
for (int y = x + 1; y < arr.length; y++) {
if (arr[x] > arr[y]) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
} /**
* 将int数组转换为字符串
*
* @param arr: 接收一个数组int类型的数组
* @return : 返回该数组对应的字符串格式,即[元素1,元素2,元素n,...]
*/
public static String arrayToString(int[] arr) { String res = "[";
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
res = res + arr[i] + ",";
}else {
res = res + arr[i] + "]";
}
} return res;
}
}

2>.调用数组工具类

/**
*
* @author 尹正杰
*
*/
public class ArrayToolDemo { public static void main(String[] args) { //测试数组
int[] arr = {9,5,2,7}; System.out.println("排序之前:" + ArrayTools.arrayToString(arr)); ArrayTools.sort(arr); System.out.println("排序之后:" + ArrayTools.arrayToString(arr)); } }

面向对象-static关键字实战案例的更多相关文章

  1. 面向对象-接口(interface)实战案例

    面向对象-接口(interface)实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口(interface)概述 1>.接口的语法格式 接口时抽象类的一种特殊体 ...

  2. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  3. Java基础语法 - 面向对象 - static 关键字

    使用static关键字修饰的变量.常量和方法分别被称作静态变量.静态常量和静态方法,也被称作类的静态成员 静态变量 使用static修饰过的类变量称为静态变量 该变量需要使用类名.变量名进行调用,不能 ...

  4. PHP面向对象static关键字

    1.静态属性用于保存类的公有数据 2.静态方法里面只能访问静态属性 3.静态成员不需要实例化就可以访问 4.类的内部可以通过self或者static关键字访问自身的静态成员 5.可以通过parent关 ...

  5. Java面向对象--static关键字

  6. (1)封装 (2)static关键字 (3)继承

    1.封装(重中之重)1.1 基本概念 通常情况下,可以在测试类中给成员变量进行赋值,当给定的数值合法但不合理时,无论是编译还是运行阶段都不会报错或给出提示,此时与现实生活不符. 为了避免上述问题的发生 ...

  7. Java static关键字特点

    一.特点 1.随着类的加载而加载2.优先于对象存在3.被类的所有对象共享4.可以通过类名调用 二.调用特征 静态方法: 成员变量:只能访问静态变量 成员方法:只能访问静态成员方法 非静态方法: 成员变 ...

  8. 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...

  9. Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?

    什么是面向对象程序设计? 我们称为OOP(Object  Oriented  Programming) 就是非结构化的程序设计 要使用类和对象的方法来进行编程 什么是类,什么是对象 类就是封装了属性和 ...

随机推荐

  1. c++实现线性表中的顺序表(数据结构课程作业)

    一.题目简介 实现顺序表的创建.初始化.赋值.插入.删除.按数据查找元素位置.按元素位置查找数据.清空.删除 的操作,以上操作用可用菜单选项完成 二.源程序代码 #include<iostrea ...

  2. 解决dotnet-Angular的跨域(cors)问题

    解决dotnet-Angular的跨域(cors)问题 前言 之前学了点 Angular ,打算用 dotnet core 做后端,之前没接触过这方面的东西,理所当然的遇到了跨域问题,之后也解决了,所 ...

  3. 「Luogu1402」酒店之王

    传送门 Luogu 解题思路 网络流板子题. 建图细节见代码,也可以参考这道差不多的题 细节注意事项 咕咕咕. 参考代码 #include <algorithm> #include < ...

  4. 079、Java数组之数组的静态初始化

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  5. java web开发_购物车功能实现

    java web开发_购物车功能实现 之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: ...

  6. IdentityServer4专题之四:Authorization Endpoint、Token Endpoint、scope、Access Token和Refresh Token、授权服务器发生错误

    1.Authorization Endpoint 它是与用户交互的端点,用户在此进行为客户端应用授权的操作,即authorization grant 2.Token Endpoint 端点,就是一个w ...

  7. windowsService 程序

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. Spring中获取web项目的根目录

    spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能; WebAppRootListe ...

  9. java多线程(待完善)

    1.小型系统 // 线程完成的任务(Runnable对象)和线程对象(Thread)之间紧密相连 class A implements Runnable{ public void run(){ // ...

  10. linux下解决git clone太慢

    此教程同样也适用与vscode下载太慢的问题 git和vscode会自动使用http_proxy,https_proxy环境变量的代理,所以我们只需要设置这个环境变量即可 前提 需要一个可用的代理,这 ...