关键词static、final、 static final学习

本文详细解析了Java中static和final关键字的使用方法及其特性。包括static修饰成员变量、成员方法的特点,静态代码块的执行时机,final修饰类、方法、变量的作用与限制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static篇

1、被static修饰的成员变量和成员方法独立于该类的任何对象,不需要实例化就可以使用,被类的所有实例共享,在类加载时,根据类名在运行时的数据区中存放


2、static修饰的方法,叫静态方法,修饰的变量,叫静态变量。

      static修饰的代码块表示静态代码块,将JVM(java虚拟机)加载时,就会被运行,如图:

public class staticCodes {
    static{
        System.out.println("这儿是在static修饰的代码块中");
        System.out.println("这儿的代码会在加载类时执行");
    }

    public static void main(String[] args) {
        new staticCodes();
    }

}

运行结果:

 这儿是在static修饰的代码块中
这儿的代码会在加载类时执行


3、成员变量:静态变量、实例变量

      静态变量:在内存中只有一个拷贝,仅在类加载时分配内存,推荐使用类名直接访问。

                         易出错误:忽略不同对象可以更改静态变量

      实例变量:创建实例时分配内存,在内存中有多个拷贝,互不影响。对此,可对下面的代码查错,也可忽略~

//这个代码,曾经困扰我好几个小时,人笨,没办法~<img alt="快哭了" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/fastcry.gif" />
public class BankRunnableDemo {
	//账户类,存储账号金额内容
	private static int money;
	private static String name;

	public BankRunnableDemo(String name,int money) {
		this.name = name;
		this.money = money;
	}
	
	//账户存款取款
	public synchronized void getOutMoney(int money){
		if(this.money > money){		
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
			this.money -=money;
			System.out.print(name +"    取款" + money +"元" + "        ");
			}
		
			else{
				System.out.println("余额不足");
			}
	}
	
	public synchronized void saveMoney(int money){
		try{
			Thread.sleep(1000);
		}catch(Exception e){
			e.printStackTrace();
		}
		this.money += money;
		System.out.print( name + ":  新存入" + money +  "元         ");
	}
	
	//存款类
	static class SaveMoney implements Runnable{
		private BankRunnableDemo account;
		private int money;
		public SaveMoney(BankRunnableDemo account) {
			this.account = account;
			
		}
		@Override
		public void run() {
			account.saveMoney(7);
			System.out.println("存钱后余额为:" + account.money);
		}
		
	}
	
	//取款类
	static class WithDraw implements Runnable{

		private BankRunnableDemo account;
		
		public WithDraw(BankRunnableDemo account) {
			this.account = account;
			
		}
		@Override
		public void run() {
			account.getOutMoney(8);
			System.out.println("取款后余额为:" + account.money);
		}
		
	}
	

	public static void main(String[] args) {

		//创建存款取款的类
		WithDraw t1 = new WithDraw(new BankRunnableDemo("account1",100));
		new Thread(t1).start();
		WithDraw t2 = new WithDraw(new BankRunnableDemo("account2",500));
		new Thread(t2).start();
		SaveMoney s1 = new SaveMoney(new BankRunnableDemo("account1",100));
		new Thread(s1).start();
		SaveMoney s2 = new SaveMoney(new BankRunnableDemo("account2",500));
		new Thread(s2).start();

	}
}

4静态方法

                静态方法可以通过类名或实例调用。

                 static方法独立于任何实例。不能直接访问非静态成员和非静态方法,及不能访问实例变量和实例方法

              


final

1、final英语翻译是:最后的,最终的;决定性的;不可更改的---->

2、final类不能被继承----->因为抽象类需要被继承实现,所以final不能修饰抽象的类、成员方法、变量

     tip1:

           ps:private类型的方法默认是final类型的,所以父类的private成员方法不能被子类覆盖。

     tip2:   

           final类不能被继承,所以final类的成员方法没有计划被覆盖,默认都是final,如果一个类不需要改变,不需要子类或扩展,就设计成final类

3、final方法不能被子类的方法覆盖,但可以被继承

     使用原因:1、防止继承类的方法修改它  2、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率



4、final不能修饰构造方法

5、final 修饰变量

     tip:

         因为final变量赋初值后,值将不再改变,并且final定义变量时,可以先声明,而不给初值,这可以使一个类的不同对象拥有值固定不变

的数据成员,而且各不相同。


static final

  1、修饰变量时,一旦给值就不可修改,根据之前提到的static内容,该变量通过类名访问

  2、修饰方法时,表示给方法不可覆盖,即不可override,通过类名直接访问











电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
内容概要:本文详细介绍了IEEE论文《Predefined-Time Sensorless Admittance Tracking Control for Teleoperation Systems With Error Constraint and Personalized Compliant Performance》的复现与分析。论文提出了一种预定义时间的无传感器导纳跟踪控制方案,适用于存在模型不确定性的遥操作系统。该方案通过具有可调刚度参数的导纳结构和预定义时间观测器(PTO),结合非奇异预定义时间终端滑模流形和预定义时间性能函数,实现了快速准确的导纳轨迹跟踪,并确保误差约束。文中详细展示了系统参数定义、EMG信号处理、预定义时间观测器、预定义时间控制器、可调刚度导纳模型及主仿真系统的代码实现。此外,还增加了动态刚度调节器、改进的广义动量观测器和安全约束模块,以增强系统的鲁棒性和安全性。 适合人群:具备一定自动化控制理论基础和编程能力的研究人员、工程师,尤其是从事机器人遥操作、人机交互等领域工作的专业人士。 使用场景及目标:①理解预定义时间控制理论及其在遥操作系统中的应用;②掌握无传感器力观测技术,减少系统复杂度;③学习如何利用肌电信号实现个性化顺应性能调整;④探索如何在保证误差约束的前提下提高系统的响应速度和精度。 阅读建议:本文内容涉及较多的数学推导和技术细节,建议读者先熟悉基本的控制理论和Python编程,重点理解各个模块的功能和相互关系。同时,可以通过运行提供的代码示例,加深对理论概念的理解,并根据自身需求调整参数进行实验验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值