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. ...
随机推荐
- laravel qq邮件配置
- L3-023 计算图
建立结构体保存每个结点的前驱,操作符,来回两遍拓扑排序~ #include<bits/stdc++.h> using namespace std; ; struct node { vect ...
- 【PAT甲级】1051 Pop Sequence (25 分)(栈的模拟)
题意: 输入三个正整数M,N,K(<=1000),分别代表栈的容量,序列长度和输入序列的组数.接着输入K组出栈序列,输出是否可能以该序列的顺序出栈.数字1~N按照顺序随机入栈(入栈时机随机,未知 ...
- python2.7 安装 Scipy
Numpy.scikit-learn可以直接 pip install xxx 但Scipy不能,在官网找到了安装方法: python -m pip install --user numpy scipy ...
- linux修改文件的权限和修改文件所有者和所属组
文件设定法:chmod [who] [+][-][=] [mode] who 文件所有者:u 文件所属组:g 其他:o 所有人:a + 添加权限 - 减少权限 = 覆盖原来权限 权 ...
- mvn无法下载fastdfs-client-java依赖解决办法
1.下载fastdfs-client-java源码 https://github.com/happyfish100/fastdfs-client-java 2.修改pom.xml文件 添加打包插件 & ...
- springboot2.0集成RestTemplate
实际集成 获取restTemplate实例,封装方法 package com.quant.api.utils.restTemplate; import org.springframework.http ...
- ECS 系统 Entity-Component-System
已经推出了很久了, 貌似也有一些人开始使用, 我是在看守望先锋的程序设计相关文章的时候看到 ECS 的, 从它的设计逻辑上看, 核心就是 Composition over inheritance (o ...
- PAT T1003 Universal Travel Sites
网络流模板~ #include<bits/stdc++.h> using namespace std; ; const int inf=1e9; queue<int> q; i ...
- CSS布局的三种机制
浮动元素之间没有缝隙,这和行内块还是不一样的,有点区别的! 2) 浮动元素与兄弟盒子之间的关系 注意:解决浮动的四种办法,后三种都是针对浮动元素的父元素的.