首页 > 编程语言 >JAVA零基础小白自学日志——第十天

JAVA零基础小白自学日志——第十天

时间:2024-07-09 22:27:18浏览次数:15  
标签:StaffRoster JAVA 第十天 静态 static end 日志 变量 String

文章目录


今日提要:记得昨天我说过的static静态修饰么?今天就来简单的说说它;

1.static修饰变量

[1].静态变量的定义

  • static修饰的变量被称为静态变量,也叫类变量;
  • 静态变量被所有对象共享,在内存中只有一个副本;
  • 当且仅当类被初次加载时会被初始化;
  • 静态变量属于类;
  • 通过类名可以调用静态变量,例:类名.静态变量名;
  • 也可通过对象名调用,例:对象名.静态变量名;
    说实话我一个中心小学肄业生,揣摩这个定义还真是有难度,反正到现在也没揣摩明白

[2].静态变量属于类

先来看个XX科技公司的员工登记表格

员工名册(类)员工小张(对象)员工小王(对象)员工小李(对象)备注
姓名(name)小张小王小李实例变量(属于对象)
性别(gender)实例变量(属于对象)
员工编号(id)001002003实例变量(属于对象)
职务( job)文员销售程序员实例变量(属于对象)
部门(department)办公室销售部开发部实例变量(属于对象)
公司(COMPANY)XX科技公司XX科技公司XX科技公司静态变量(属于类)
员工数量(NUMBER):3人——————静态变量(属于类)

从表格内可以看出,静态变量与对象的无关性,即便继续添加员工小红、小明等,所属公司也是不会变化的,还是XX科技公司,而员工数量的变化,也不影响每个对象的输出结果;

[3]静态变量的初始化

静态变量在类被初次加载时会被初始化,在内存中只有一个副本,这个对程序效率的影响应该是很大的,当一个程序指数级增长的时候,这种与对象无关的变量,不用在每一个对象开辟的内存都保存相同的内容,就好比公司变量,如果不使用静态变量每增加一个对象,就会在内存中增加一个副本;

[4].静态变量的调用

先看个例子

public class TestStaffRoster {

	public static void main(String[] args) {
		
		StaffRoster srOne = new StaffRoster("小张", "男", "001", "文员", "办公室");
		StaffRoster srTwo = new StaffRoster("小王", "女", "002", "销售", "销售部");
		StaffRoster srThree = new StaffRoster("小李", "男", "003", "程序员", "开发部");
		
		srOne.showInfo();
		srTwo.showInfo();
		srThree.showInfo();
		
		System.out.println("员工人数: " + StaffRoster.NUMBER);		

	}//end main
}//end class

class StaffRoster{
	
	//声明项目变量
	private String name;
	private String gender;
	private String id;
	private String job;
	private String department;
	
	//声明静态变量并赋值
	private static String COMPANY = "XX科技公司";
    static int NUMBER = 0;
	
	StaffRoster (String tempName, String tempGender, String tempID, String tempJob, String tempDepa){
		name = tempName;
		gender = tempGender;
		id = tempID;
		job = tempJob;
		department = tempDepa;
				
		NUMBER++;
		
	}// end StaffRoster
	
	void showInfo() {
		
		System.out.println("员工姓名: "+ name + ", 性别: " + gender + ", 员工编号: " + id +", 职位: " + job + ", 部门: " + department + ", 单位: " + COMPANY);
		
	}//end showInfo()
}//end class StaffRoster

从程序里可以看出来,静态变量也必须遵守范围权限的要求,而且个人认为静态变量对封装的要求应该更严格的,因为静态变量影响的数据范围更大

静态变量咱们先学习到这里,有些问题还是搞不清楚,能搞清楚的就是上面这些了

2.static修饰方法

[1].静态方法的定义

  • static修饰的方法叫做静态方法,也称为类方法;
  • 静态方法内只能通过对象调用非静态变量和非静态方法(看看main()的对象调用,这点就明白了);
  • 静态方法内不能有this关键字;
  • 静态方法可以通过:类名.方法名 和 对象名.方法名,调用;

定义很好理解,所以就不多解释了,但是应用方法应该很具有挑战性,未来练习里面再看吧

[2].静态方法的调用

public class TestStaffRoster {

	public static void main(String[] args) {
	    
	    StaffRoster.info();
	
	}// end main
}//end class

class StaffRoster{
    
    static void info(){
    
        System.out.print("这是静态方法");
        
    }//end info
}//end class StaffRoster

没啥可说的一眼就能看明白了,实在不明白,运行下也明白了;

3.静态块

[1].静态块定义

  • 类加载的时候,静态块会执行一次,且只执行一次;
  • 一个类里可以有多个静态块,静态块里面不能包含this关键字;

[2].静态块和匿名块的演示,运行下程序就能看出来区别

public class TestStaffRoster {

	public static void main(String[] args) {
		
		StaffRoster srOne = new StaffRoster("小张", "男", "001", "文员", "办公室");
		StaffRoster srTwo = new StaffRoster("小王", "女", "002", "销售", "销售部");
		StaffRoster srThree = new StaffRoster("小李", "男", "003", "程序员", "开发部");
		
		srOne.showInfo();
		srTwo.showInfo();
		srThree.showInfo();		
				
		System.out.println("员工人数: " + StaffRoster.NUMBER);
		
	}//end main
}//end class

class StaffRoster{
	
	//声明项目变量
	private String name;
	private String gender;
	private String id;
	private String job;
	private String department;
		
	//声明静态变量并赋值
	private static String COMPANY = "XX科技公司";
    static int NUMBER = 0;
	
	StaffRoster (String tempName, String tempGender, String tempID, String tempJob, String tempDepa){
		name = tempName;
		gender = tempGender;
		id = tempID;
		job = tempJob;
		department = tempDepa;
				
		NUMBER++;
		
	}// end StaffRoster
	
	{
		System.out.println("这是匿名构造块");
		
	}
	
	static {
		System.out.println("这是静态构造块");
	}
	
	void showInfo() {
		
		System.out.println("员工姓名: "+ name + ", 性别: " + gender + ", 员工编号: " + id +", 职位: " + job + ", 部门: " + department + ", 单位: " + COMPANY );
		
	}//end showInfo()
}//end class StaffRoster

定义还是相当好理解的,根据我学习过的东西的常识,越是好理解的东西,运用好了,就越难

小贴士

向方法传递参数,基础类型参数,传递的只是副本,在方法中改变的只是副本的值,不会改变原始对象;如果传递的是引用型参数,传递的是存储值的内存位置,并不产生副本,所以在方法中改变值,会改变原始对象。

标签:StaffRoster,JAVA,第十天,静态,static,end,日志,变量,String
From: https://blog.csdn.net/mycqyjn/article/details/140241246

相关文章

  • java10
    类特性封装属性私有,get/setprivate在set里面做安全验证继承extends扩展继承关键字子类只用单继承,没有多继承(通俗来讲,你可以有一个亲爸爸,不可能有两个亲爸爸)子类可以继承父类的方法pulic公共的private私有的私有的东西不能继承protected保护的default其他的ctrl+H......
  • Java毕设基于Vue+SpringBoot的汽车租赁管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上管理汽车租赁的方式出现......
  • Java毕设基于Vue+SpringBoot的汽车服务管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言随着社会的发展,汽车服务的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但汽车服务信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得汽车服务信息,因此,设计一种......
  • Java毕设基于Vue+SpringBoot的校园失物招领平台(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对......
  • JAVA中的反射机制讲解(JAVA基础)
    反射是什么Java反射机制是Java语言一个很重要的特性,它使得Java具有了“动态性”。在Java程序运行时,对于任意的一个类,我们能不能知道这个类有哪些属性和方法呢?对于任意的一个对象,我们又能不能调用它任意的方法?答案是肯定的!这种动态获取类的信息以及动态调用对象方法的功能就来......
  • Java毕设基于Vue+SpringBoot的校园台球厅人员与设备管理系统(代码+数据库+文档LW+运行
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括校园台球厅人员与设备管理系统的网络应用,在外国管理系统已经是很普遍的方式,不过国内的管理网站可能......
  • 如何用Java python php 实现身份实名人证?
    身份证实名认证,也被称为身份证识别或核验身份信息,是指基于直连公安大数据,在用户授权后,通过姓名、身份证号实时快速核验用户身份信息真伪的过程。这种认证方式可以与身份证OCR(光学字符识别)和活体检测技术灵活融合,广泛应用于需要用户实名认证的行业场景,如电商、游戏、直播等。......
  • [NodeJS] JavaScript模块化
    JavaScript诞生于1995年,一开始只是用于编写简单的脚本。随着前端开发任务越来越复杂,JavaScript代码也越来越复杂,全局变量冲突、依赖管理混乱等问题变得十分突出,模块化成为一个必不可少的功能。模块化发展史与方案对比YUI与JQuery2006年,雅虎开源了组件库YUILibrary,使用类似......
  • 【JavaScript脚本宇宙】状态管理利器:JavaScript 库全面解析
    提升项目效率与可维护性:JavaScript状态管理库大揭秘前言在现代前端开发中,状态管理是一个至关重要的话题。随着复杂性的增加,有效地管理应用程序的状态变得越来越具有挑战性。本文将介绍一些流行的JavaScript库,这些库提供了各种方式来管理状态和数据流。欢迎订阅专栏:Ja......
  • Java基础入门了解,规范----入门篇1
    一.Java代码规范1.注释注释分类:1.单行注释:// 2.多行注释:/**/ 3.文档注释:/***/2.关键字java本身定义的一些单词,类似于public,class之内3.标识符在程序中定义的属性名,方法名,类名等等1.硬性要求:可以包含英文字母,0-9数字,$,_不能以数字开头关键字不能作为标识符2.软性......