Java应用程序开发学习之static关键字应用

Java的static关键字和C/C++语言的关键字有所不同:

一旦在Java里使用了static关键字,那么这样的内容不再属于对象自己,而是属于类本身的,所以凡是本类的对象,都共享一份。

1、使用Java static关键字修饰成员变量

以下是Stundent类。

package app_one;
public class Student {
 private int id = 0 ;
 private int age = 0;
 private String name = null;
 static int id_count = 0 ;
 public Student(int age , String name)
 {
 this.age = age ;
 this.name = name ;
 this.id = ++id_count ;
 }
 public int getage() {
 return age;
 }
 public void setage(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
}

以下是主类:

package app_one;
public class hello {
 public static void main(String[] args)
 {
 Student st1 = new Student(14,"小明");
 System.out.println("年龄:" + st1.getage() + " 姓名:" + st1.getName() + " 序号:" + Student.id_count);
 Student st2 = new Student(15,"小红");
 System.out.println("年龄:" + st2.getage() + " 姓名:" + st2.getName() + " 序号:" + Student.id_count);
 Student st3 = new Student(18,"小李");
 System.out.println("年龄:" + st3.getage() + " 姓名:" + st3.getName() + " 序号:" + Student.id_count);
 }
}

运行结果:

从上面的案例可以看到,id_count是可以自动进行计数的,每一次实例化Student类的时候,id_count就自动+1,然后赋值给成员变量id,由于定义了static关键字的变量不再属于对象,而是属于类,所以在访问的时候,我们可以用类名称().静态变量的形式来进行访问。

2、使用static修饰成员方法

将上述程序中Student类的id_count修改为私有的静态变量,并添加一个静态的Get_idcount方法。

private static int id_count = 0 ;
public static int Get_idcount()
{
 return id_count ;
}

在主类中获取id_count不通过类.变量的方式获取,而是改为类.方法()的方式获取。

Student.Get_idcount()

强调两点:

  • (1)成员方法可以访问成员变量
  • (2)成员方法可以访问静态变量
  • (3)静态方法可以访问静态变量
  • (4)静态方法不可以访问成员变量(非静态)

原因:因为在内存中是先有的静态内容,后有的非静态内容

  • (1)静态方法当中不能使用this

原因:因为this代表当前对象,通过谁调用的方法,谁就是当前对象

小结:

一旦使用了static修饰成员方法,那么这就成为了静态方法,不属于对象,而是属于类本身的。

对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它

如果有了static关键字,那么不需要创建对象,直接就能通过类名称进行调用。

无论是成员变量,还是成员方法,如果有了static,都推荐使用类名称进行调用。

静态变量:类名称.静态变量

静态方法:类名称.静态方法();

对于本类中的静态方法,可以省略类名称。

3、静态static的内存图

参照学习传智的Java课程给出的图,清晰易懂。

4、静态代码块

静态代码块格式:

public class 类名称{
  static
  {
    //静态代码块的内容
  }
}
  • (1)特点:当第一次用到本类时,静态代码块执行唯一的一次,静态内容总是优先于非静态,所以静态代码块比构造方法先执行
  • (2)典型用途:用来一次性地对静态成员变量进行赋值。

针对上面的案例做修改,在Student类中添加一个静态代码块:

package app_one;
public class Student {
 private int id = 0 ;
 private int age = 0;
 private String name = null;
 private static int id_count = 0 ;
 static
 {
 System.out.println("静态代码块运行!");
 }
 public Student(int age , String name)
 {
 System.out.println("构造方法运行!");
 this.age = age ;
 this.name = name ;
 this.id = ++id_count ;
 }
 public int getage() {
 return age;
 }
 public void setage(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public static int Get_idcount()
 {
 return id_count ;
 }
}

然后主程序修改如下:

package app_one;
public class hello {
 public static void main(String[] args)
 {
 Student st1 = new Student(14,"小红");
 System.out.println("姓名: "+st1.getName() + " 年龄: " + st1.getage() + " 序号: "+Student.Get_idcount());
 Student st2 = new Student(14,"小李");
 System.out.println("姓名: "+st2.getName() + " 年龄: " + st2.getage() + " 序号: "+Student.Get_idcount());
 }
}

运行结果:

很明显得出结论。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • java static块和构造函数的实例详解

    java static块和构造函数的实例详解 构造函数不写时,若该类继续了某个类则会默认集成父类的构造函数. 构造函数在实例化类时执行内部, Object object = new Object(); static 块在每次加载该类的时候都会执行内部. 如下例: package org.webServiceClass; import javax.jws.WebMethod; public class WebSerivceTest { private static int i = 1; WebSe

  • 详解Java8新特性之interface中的static方法和default方法

    为什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Collection中的default方法.所以准备专门写写关于java8新特性的文章,虽然现在10已经发布了.但还是要认真的去了解下新版本的变化. static方法 java8中为接口新增了一项功能:定义一个或者更多个静态方法.用法和普通的static方法一样. 代码示例 public interface

  • 实例解析Java关于static的作用

    概述 只要是有学过Java的都一定知道static,也一定能多多少少说出一些作用和注意事项.如果已经对static了如指掌的请点击关闭按钮,看下去也只是浪费您宝贵时间而已.这篇随笔只是个人的习惯总结. 为什么需要static? 有时候我们并不想去new一个对象,只是单纯的想要调用一个函数,并且希望这个函数不会与包含它的类的其他对象有所关联.说得通俗点,即使没有创建对象,也能通过类本身来调用函数. static静态变量 被static修饰的变量属于类变量,通过字面意思就说明了这个变量的归属(类),

  • Java8的default和static关键字的使用讲解

    1. default和static关键字 a.default 用在接口中, 为该接口的实现类的方法.  --> 不能通过接口直接调用. static 也是用在接口中, 同Class中的static方法一样, 是类级别的方法, 而不是对象的方法.  --> 可以通过接口直接调用. b.一个接口可以有多个default方法, 也可以有多个static方法. 2. default 在使用中的注意事项 如下面的例子 有两个接口, InterA和InterB, 都有一个方法, 为defaultFunct

  • java中staticclass静态类详解

    一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的.由于静态的内部类在定义.使用的时候会有种种的限制.所以在实际工作中用到的并不多. 在开发过程中,内部类中使用的最多的还是非静态地成员内部类.不过在特定的情况下,静态内部类也能够发挥其独特的作用. 一.静态内部类的使用目的. 在定义内部类的时候,可以在其前面加上一个权限

  • 学习Java的static与final关键字

    static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修饰的成员变量一般称作类成员变量,而static修饰的方法一般称作类方法. 分类: 1.static变量,也叫作静态变量或者类变量.另一种是没有被static修饰的变量,叫实例变量. 2.static方法,也叫作静态方法或者类方法,静态方法中不能定义静态变量,实例方法也不能. 3.static代码块,静态块中,可以访问静态变量,调用静态方法. 注意事项: 1.static不依附于任何对

  • 浅谈Java中static和非static的区别

    关于static和非static变量的区别 1. static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在.非static修饰的成员变量是在对象new出来的时候划分存储空间,是与具体的对象绑定的,该成员变量仅为当前对象所拥有的. 2. static修饰的变量在加载的时候先于main方法加载在内存中的数据共享区-------方法区,而非static的变量在加载的时候,是要创建变量才加载在堆内存中的. 3. 一个stat

  • Java应用程序开发学习之static关键字应用

    Java的static关键字和C/C++语言的关键字有所不同: 一旦在Java里使用了static关键字,那么这样的内容不再属于对象自己,而是属于类本身的,所以凡是本类的对象,都共享一份. 1.使用Java static关键字修饰成员变量 以下是Stundent类. package app_one; public class Student { private int id = 0 ; private int age = 0; private String name = null; static

  • java必学必会之static关键字

    一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享. 1.1.静态成员变量与非静态成员变量的区别 以下面的例子为例说明 package cn.galc.test; public class Cat { /** * 静态成员变量 */ private static int sid = 0; private String name;

  • Java基础之static关键字的使用讲解

    static关键字 在Java中,static是静态修饰关键字.用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static关键字的作用 方便在没有创建对象的情况下来进行调用方法或者变量.被static关键字修饰的方法或者变量不需要依赖对象来进行访问,只要类被加载了,就可以通过类名去访问. 1.static修饰成员方法 static修饰的方法称为静态方法

  • Java 深入学习static关键字和静态属性及方法

    目录 static关键字 静态属性 静态方法 静态方法的使用 静态代码块 static关键字 在定义一个类时,只是描述某事物的特征和行为,并没有产生具体的数据,只有通过new关键字创建该类的实例对象时,才会开辟栈内存及内存,在堆内存中要保存对象的属性时,每个对象会有自己的属性. 如果希望某些属性被所有对象共享,就必须将其声明为static属性,如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用,static关键字还可以修饰成员方法. 静态属性 如果在Java程序中使用s

  • java中static关键字用法详解

    前言 static对我们来说并不陌生,也是面试经常碰到的问题,今天抽空整理了一篇总结作为笔记保存起来! static用法可以分为三大块:静态变量.静态方法.静态代码块,下面将从这三个方面分析 静态方法 通常在一个类中定义一个方法为static,即为静态方法,无需本类的对象即可调用此方法 声明为static的方法有要注意以下几点: · 它们仅能调用其他的static方法. · 它们只能访问static变量. · 它们不能以任何方式引用this或super. public class MainCla

  • JAVA面试题 static关键字详解

    问题 面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 static 修饰的属性,静态属性是在类的加载期间初始化的,使用类名.属性访问 案例说明 ①修饰成员变量 package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) {

  • Java中的static关键字深入理解

    在学习Java以来很长一段时间,我都不能理解为什么修饰一个方法的关键字各不相同,为什么有的方法可以直接调用,而有的方法需要用对象才能调用.毫不夸张的说,最近一次让我决定去整理清楚static关键字,是因为在写jdbc工具类时,其中通过静态代码块来实现加载驱动才让我对它有了新的认识. 通俗来讲,归为几点: 由static关键字修饰的方法或成员变量,不需依赖对象,就可直接访问.(通过 类名.方法名() 或 类名.属性 直接调用) static关键字不会影响到变量或方法的作用域 static关键字不允

  • Java开发学习之Bean的生命周期详解

    目录 一.什么是生命周期 二.环境准备 三.生命周期设置 步骤1:添加初始化和销毁方法 步骤2:配置生命周期 步骤3:运行程序 四.close关闭容器 五.注册钩子关闭容器 六.bean生命周期总结 一.什么是生命周期 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期. bean生命周期是什么? bean对象从创建到销毁的整体过程. bean生命周期控制是什么? 在bean创建后到销毁前做一些事情. 二.环境准备 环境搭建: 创建一个Maven项目

  • Java开发学习之Bean的作用域和生命周期详解

    目录 一.Bean 的作用域 二.Spring 的执行流程 三.Bean 的生命周期 一.Bean 的作用域 在之前学习Java基础的时候,有接触到作用域这样的概念.一个变量并不一定在任何区域都是有效的,限定这个变量的可用性的代码范围就是该变量的作用域. 但是在这里 Bean 的作用域的概念和以前所认为的作用域有所不同. Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式. 接下来,将会举一个案例来讲讲什么是作用域,什么是行为模式 案例概要: 创建一个共有的 Bean

  • 谈谈Java中对象,类和this,super,static关键字的使用

    目录 Java对象究竟是什么 创建对象的过程 创建多个对象时,内存的变化 无处不在的this和super关键字 static关键字 为何如此特殊 Java对象究竟是什么 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态.例如 人 是一个类 其状态有:姓名.性别.身高.体重等 其行为:吃饭.睡觉.聊天.运动等     public class Person {         /**          * 状态 or 属性          */       

随机推荐