java学习-初级入门-面向对象⑥-类与对象-静态static
这次我们来学习静态(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的更多相关文章
- java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3
这次我们要做一个日期类Date类 主要目的是 1. 熟悉-->构造不同参数的函数 2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...
- java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2
我们继续学习类与对象,上一篇我们定义了 坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...
- java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1
今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...
- java学习-初级入门-面向对象①-面向对象概述-结构化程序设计
为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类. 要求进行结构化程序设计. 学生类: Student 要求:存储学生的基本信息(姓名.性别.学历层次和年级),实现学生信息的 ...
- java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计
我们在 面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承 . 多态 . 抽象 . 接口 我们会在接下 ...
- delphi高手突破学习笔记之面向对象类和对象的本质
知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一 ...
- delphi高手突破学习笔记之面向对象类和对象的本质(有汇编解释 good)
知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一 ...
- Java面向对象-类与对象
Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...
- Java学习笔记之---面向对象
Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...
随机推荐
- 在C中测试函数运行时间
#include <stdio.h> #include <time.h> #include <math.h> clock_t start, stop; //cloc ...
- .NET Core快速入门教程 4、使用VS Code进行C#代码调试的技巧
一.前言 什么是代码调试? 通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug. 本篇开发环境 1.操作系统: Windows 10 X ...
- 「题解」「POJ1322」Chocolate
目录 题目 原题目 简易题意 思路分析 代码 练习题 题目 原题目 点这里 简易题意 包裹里有无限个分布均匀且刚好 \(c\) 种颜色的巧克力,现在要依次拿 \(n\) 个出来放到桌子上.每次如果桌子 ...
- java调用exe
前言:最近做了一个Java跨平台开启,关闭,重启nginx的功能,在Java操作exe上遇到了一些问题,下面是对这个问题一个总结 一.Java操作exe的三种方式 (1)Runtime.getRunt ...
- tf.app.run()的作用
tf.app.run() 如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test) 如果你的代码中的入口函数叫main(), ...
- FTP文件传输服务!
一.FTP 连接及传输模式 1.控制连接:TCP 21,用于发送 FTP 命令信息2.数据连接:TCP 20,用于上传.下载数据3.数据连接的建立类型: (1)主动模式:服务器主动发起数据连接 (2 ...
- http协议学习 —— post请求方法提交application/x-www-form-urlencoded类型的数据格式
先推荐一篇很不错的文章:https://imququ.com/post/four-ways-to-post-data-in-http.html 说一下,如果是自己编写底层,那么要注意了,不能只有提交数 ...
- 实验一  GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- Java实现大批量数据导入导出(100W以上) -(三)超过25列Excel导出
前面一篇文章介绍大数据量导出实现: Java实现大批量数据导入导出(100W以上) -(二)导出 这篇文章在Excel列较少时,按以上实际验证能很快实现生成.但如果列较多时用StringTemplat ...
- JavaScript - Array对象,数组
1. 创建数组 方式1. new关键字 var arr = new Array(1, 2, 3); 方式2. 使用字面量创建数组对象 var arr = [1, 2, 3]; 2. 检测一个对象是否是 ...