这次我们来学习静态(static)

知识点

1.静态方法只能调用静态变量

2.静态变量属于整个Class,会随着发生变化。

案例:定义一个自动增长的学生类。

题目要求

定义一个学生类,除了姓名、性别、学历层次。

还有自动增长的学号,本科以A开头,专科以B开头。  编号从100开始,如A0103。

方法思路

1.定义学生属性,姓名name  性别sex   学历层次level   学号 studentNo

2. 学号增长函数(解决自动增长问题)

3.测试

程序代码

Student(学生类)

 public class Student {
public static final byte MALE = 0;
public static final byte FEMALE = 1;
public static final byte UNDERGRATUATION = 1;
public static final byte SPECIAL = 0; private static int noA ;//本科计数器
private static int noB ;//专科计数器 private String name;
private byte sex;
private byte level;
private String sno;
// 静态代码块,实现自动增长。
static {
noA = 0;
noB = 0;
} /**
* 构造函数,构造学生信息。 并且自动生成学号
* @param name 姓名
* @param sex 性别
* @param level 学历
*/
public Student(String name, byte sex, byte level) {
this.name = name;
this.sex = sex;
this.level = level; //自动生成学号
if (UNDERGRATUATION == level){
this.sno = String.format("A%04d",++noA); // String,format 格式化输出
}else {
this.sno = String.format("B%04d",++noB);
}
} /**
* 输出函数,输出学生的所有信息。
*/
public void print(){
System.out.println("学号:"+sno);
System.out.println("姓名:"+name);
System.out.println("性别:"+(sex==MALE?"男":"女"));
System.out.println("学历:"+(level==UNDERGRATUATION?"本科":"专科"));
System.out.println();
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex == MALE?"男":"女";
} public void setSex(byte sex) {
this.sex = sex;
} public byte getLevel() {
return level;
} public void setLevel(byte level) {
this.level = level;
} public String getStuNo() {
return sno;
} public void setStuNo(String stuNo) {
this.sno = stuNo;
} /**
* 计算某种学历的总人数
* @param level 学历(本科 专科)
* @return 某种学历的注册总人数
*/
public static int getCount(byte level){
return UNDERGRATUATION==level?noA:noB;
}
}

Test(测试)类

 public class Test {
public static void main(String[] args) {
Student stu1 = new Student("小明",Student.MALE,Student.UNDERGRATUATION); // 小明 男 本科
Student stu2 = new Student("小红",Student.FEMALE,Student.SPECIAL); // 小红 女 专科
Student stu3 = new Student("小张",Student.MALE,Student.SPECIAL);
Student stu4 = new Student("小王",Student.MALE,Student.SPECIAL); stu1.print();
stu2.print();
stu3.print();
stu4.print(); int n1 = Student.getCount(Student.UNDERGRATUATION);
int n2 = Student.getCount(Student.SPECIAL);
System.out.printf("已经注册了%d个本科生,%d专科生",n1,n2);
System.out.println();
}
}

运行结果

心得体会

这是4个类型的使用权限。

静态 static 是属于整个class的,会随着函数的运算发生改变,而局部变量调用函数,在函数内发生了变化,然而本身并没有变化。

这个有点像   String 和 StringBuffer 。       stringBuffer也是全局改变的。

举例:

主函数中代码如下所示

    int num = 5;
add(5);
System.out.println(num);

add函数

public static void add (int num){
++num;
System.out.println(num);
}

运行结果:

java学习-初级入门-面向对象⑥-类与对象-静态static的更多相关文章

  1. java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3

    这次我们要做一个日期类Date类 主要目的是    1.  熟悉-->构造不同参数的函数  2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...

  2. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

  3. java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1

    今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...

  4. java学习-初级入门-面向对象①-面向对象概述-结构化程序设计

    为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类. 要求进行结构化程序设计. 学生类: Student 要求:存储学生的基本信息(姓名.性别.学历层次和年级),实现学生信息的 ...

  5. java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计

    我们在  面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承  .  多态   . 抽象  . 接口 我们会在接下 ...

  6. delphi高手突破学习笔记之面向对象类和对象的本质

    知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一 ...

  7. delphi高手突破学习笔记之面向对象类和对象的本质(有汇编解释 good)

    知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一 ...

  8. Java面向对象-类与对象

    Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...

  9. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

随机推荐

  1. 使用vASA842配置ASDM645

    准备:使用VMware打开vASA842.ova文件,将第一个网络适配器桥接到一个vmnet接口,我这里是vmnet3,网段是10.0.0.0/24,网关是10.0.0.1/24 1.打开vASA84 ...

  2. ECMAScript 6 和数组的新功能

    Array. @@iterator 返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对 copyWithin 复制数组中一系列元素到同一数组指定的起始位置 entries 返回包 ...

  3. 【转】centos升级curl版本

    1.安装repo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1 ...

  4. request库解析中文

    官网地址: http://cn.python-requests.org/zh_CN/latest/ 高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某 ...

  5. JShell的使用

    JShell脚本工具是JDK9的新特性 启动JShell工具,在DOS命令行直接输入JShell命令.(如下例) 这里我们用Hello,World举例: 结果显示是正确的. 这里再举一个例子: 结果可 ...

  6. leetCode练题——13. Roman to Integer

    1.题目13. Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D ...

  7. spark实验(一)--spark安装(1)

    一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能,因此,本教程中,Spark 都是在 Linux 系统 ...

  8. urllib 库的代替品 requests 的用法

    Requuests 官方的介绍时多么的霸气,之所以那么霸气,是因为 Requestts 相比于 urllib 在使用方面上会让开发者感到更加的人性化.更加简洁.更加舒适,并且国外的一些公司也在使用re ...

  9. Linux(Centos)安装图形化界面步骤

    最近有重新来捣鼓捣鼓Linux了,这次撸的版本是centos7.4的,虽然说是不要桌面,但是感觉还是安装一下比较好balalalala.........废话不说的直接进入正题: 安装X 首先安装X(X ...

  10. PPT页面切换动画

    想要自己的PPT更加炫酷一些的话,可以再给每个页面的切换,加上动画效果. 第一步,按住ctrl键,鼠标点击选择想要增加切换动画的页面,然后点击菜单栏的“切换” 第二步,在切换菜单下面选择具体的切换效果 ...