初学Java---面向对象编程-static与final使用

Java static final、static和final的区别 1、static finalstatic修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用EP:下面程序定义static final int CONSTANT 重新赋值时编译会出错。packag... 阅读详情

Unit10 static与final使用 部分学习笔记


一、final的用法:

  • final是Java的关键字,表示最终。

1. final能修饰什么?

  • (1)final不能修饰构造方法
  • (2)final可以修饰:
    • 类
    • 属性
    • 局部变量
    • 一般方法

2. final修饰后的影响:

  • 类:

    这个类不能被继承,也就是这个类不能有子类。

    public final class Person {
    }
  • 属性和变量:

    值不能更改,就是常量;常量名称全大写,如果多个单词用下划线分开。

  public final class Person {
    //值不能变
    final int STUDENT_AGE = 20;
    public void calc(final int first) {
  	  final int NUM1 = 90;
        //报错
  	  first = 900;
    }
  }
  • 方法:

    方法不能被重写

  public  class Person {
  	//值不能变
  	final int STUDENT_AGE = 20;
  	public void calc(final int first) {
  	final int NUM1 = 90;
      //报错
  	//first = 900;
  	}
  	public final void speak() {}
  }
  class Student extends Person {
  	//报错
  	public void speak() {}
  }

3. final代码解析一:

  • 以下代码执行结果是什么?
    • 答:没有结果,此程序是错误的,age没有赋值。
public class Animal {
	final int age;
	public static void main(String[] args) {
		Animal animal = new Animal();
        //值多少?
		System.out.println(animal.age);
	}
}

4. final代码解析二:

  • 以下代码的输出结果是什么?
    • 答:输出2
public class Animal {
	final int age;
	public Animal(int age) {
		this.age = age;
	}
	public static void main(String[] args) {
		Animal animal = new Animal(2);
        //???
		System.out.println(animal.age);
	}
}
final修饰的属性,要么显式赋值(直接赋值),要么构造方法赋值。

二、static的用法:

  • static是Java语言的关键字,表示静态。

1.static能修饰什么?

  • (1)属性(静态属性、静态变量、类变量)
    • 静态属性可以用类名字直接访问,也可用对象访问
  • (2)一般方法(静态方法、类方法)
    • 静态方法可以用类名字直接调用,也可用对象调用
  public  class Teacher {
  	static int age;
    public static void speak() {
		System.out.println("大家好!");
 	}
  	public static void main(String[] args) {
        //OK
		Teacher.speak();
        //OK
		System.out.println(Teacher.age);
	   
	   	Teacher teacher = new Teacher();
	   	teacher.speak();
	   	System.out.println(teacher.age);
	}  
  	static class W {}
}
  • (3)内部类(静态内部类)
  • (4)游离语句块(静态的游离语句块)
static深层次影响:
  • 1.被static修饰的属性,被所有对象共享,一个对象对属性值的更改会影响到所有对象。
  • 2.非静态属性,叫做实例变量,每个对象持有一份,不是共享的。
  • 3.不要轻易把属性标识为static。
public  class Teacher {
  static int age = 20;
         int grade = 2;
  public static void speak() {
	  System.out.println("大家好!");
  }
  public static void main(String[] args) {
  	//OK
	Teacher.speak();
    //OK
	System.out.println(Teacher.age);
    //把age值更改了
	Teacher.age = 30;
	   
	Teacher teacher = new Teacher();
	teacher.speak();
    //输出多少?
	System.out.println(teacher.age);
  }  
  static class W {}
}
注意事项:
  • 1.static方法里不能使用非静态属性(静态方法里不能使用实例变量)
public  class Teacher {
  static int age = 20;
         int grade = 2;
  public static void speak() {
      //报错
	  grade++;
      //OK
	  age++;
	  System.out.println("大家好!");
  }
  }
  • 2.static不能修饰局部变量(含形参)

  • 3.在static方法里,不能直接调用非静态方法

此话对否:在静态方法里不能调用非静态方法?错误。
 public  class Teacher {
  static int age = 20;
         int grade = 2;
         
  public void eat() {}
  public static void speak() {
	  eat();//报错
	  Teacher t = new Teacher();
	  t.eat();//OK
	   
	  System.out.println("大家好!");
  }
    1. static方法、游离块中不能使用super和this,因为super和this是实例变量

2.static不能修饰什么?

  • 构造方法
  • 局部变量
  • 外部类

3.static存放在内存什么区域?

  • 答:全局数据区

4.static加载问题分析

  • 1.仅加载1次(仅执行1次)
  • 2.什么时候加载?
    • 答:.class文件被载入JVM的时候加载。
  • 以下代码输出结果?
    • 答:first second
public class Worker {
	static {
		System.out.println("first");
	}	
	static int age = getAge();
	
	public static int getAge() {
		System.out.println("second");
		return 34;
	}
	public static void main(String[] args) {
		Worker worker = new Worker();
	}
}

5.对象构造次序:

  • (1)父类的静态(看次序,static属性和static游离块)
  • (2)子类的静态(看次序,static属性和static游离块)
  • (3)父类非静态(看次序,非静态属性和游离块)
  • (4)父类的构造方法
  • (5)子类非静态(看次序,非静态属性和游离块)
  • (6)子类的构造方法
public class Worker {
	public Worker() {
		System.out.println("父类构造方法88888888");
	}
	{
		System.out.println("父类非静态33333333333");
	}
    int grade = getGrade();
	public int getGrade() {
		System.out.println("999999999");
		return 2;
	}
	static {
		System.out.println("父类游离块(次序)11111111");
	}
	static int age = getAge();
	public static int getAge() {
		System.out.println("00000000");
		return 34;
	}	
}
class AWorker extends Worker {
    int grade1 = getGrade1();
	public int getGrade1() {
		System.out.println("kkkkkkkkkkk");
		return 2;
	}
	public AWorker() {
		System.out.println("子类构造方法ttttttttttt");
	}
	{
		System.out.println("子类非静态4444444444");
	}
	static {
		System.out.println("子类游离块(次序)qqqqqqqqqqqq");
	}
	static int age1 = getAge1();
	public static int getAge1() {
		System.out.println("wwwwwwwwwwww");
		return 34;
	}
	public static void main(String[] args) {
		new AWorker();
	}
}

6.为什么main前面必须有static?

  • 静态方法和属性与类相关,并“不”与对象相关,意思就是不用创建对象,照样能用,因为类是存在的。

7.总结

  • 1.final怎么用
  • 2.static修饰属性的影响、方法影响
  • 3.加载次数及存放的地方

计算机领域中的WWW是什么-编程 WWW是基于互联网的一种服务,它通过使用统一资源定位符(URL)来定位和访问网络上的文档。本文将介绍WWW的基本概念、工作原理和编程中与WWW相关的一些常见任务和技术。客户端是指用户使用的Web浏览器,服务器则是存储和提供文档的计算机。综上所述,WWW是计算机科学和互联网领域的重要概念,它提供了共享文档和信息的机制。在编程中,我们可以使用各种技术和工具与WWW进行交互,实现网络通信、网页解析和Web应用开发等任务。上述代码使用Flask框架创建了一个简单的Web应用,包括一个主页和一个关于页面。 阅读详情

相关推荐

www.(万维网WWW.缩写)

www.是域名,是覆盖全球的客户机/服务器网络。万维网WWW是World Wide Web的简称,也称为Web、3W等。WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点。

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 30万+

static / final 迷你练习

《HeadFirst Java》 page 285 页 有关static / final 的小练习下面哪些程序可以通过编译?public class FooTestDrive { static int x ; public void go() { System.out.println(x); } }可以通过编译,static 变量未初始化时,编译器会按照实例变

u011951979的博客 444

特斯拉Model 3 BMS主控板拆解:从硬件设计到热管理策略的实战解析

本文深度拆解特斯拉Model 3的BMS主控板,解析其硬件架构与热管理协同策略。文章聚焦于主控板的分区布局、双核MCU的智慧分工,以及从被动监控到主动干预的热管理范式转变,揭示了特斯拉在高压安全、实时控制与系统级工程思维上的设计哲学。

zz67890的博客 593

dasdwqwedwqeqweqweqweqwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

I'm trying to port a piece of Java LDAP conneciton code to DOTNET. I've done LDAP in DOTNET before, but I keep getting a very strange message. The Java code looks like: public static boolean auth

qinqijing198601的专栏 5万+

Openclaw Onboarding向导全攻略——如何配置你的第一个AI助手

很多新手在成功运行 `openclaw --version` 后,面对黑底白字的终端就陷入了迷茫:“安装好了,然后呢?” 本篇我们就彻底解决这个问题,带你完整走完 `openclaw onboard` 交互式初始化配置向导的每一步,从“安装完成”到“真正能用”,只差这一个向导的距离。 本文为2026年3月最新版,适配OpenClaw v2026.2.x 稳定版,所有步骤均经过实测验证,可直接落地。

夏日清风 1917

【正点原子I.MX6U-MINI移植篇】Ubuntu-base根文件系统移植构建过程详解(四)

能不能在ARM板上运行Ubuntu呢?答案肯定是可以的,Ubuntu是Linux系统的一种,可以简单的将Ubuntu理解为一个根文件系统,和我们用busybox、buildroot制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上。

果果小师弟的博客 3767

WWW是什么?

WWW是指World Wide Web,并不是一个协议名称,只是Web服务器上的一种命名,而且WWW还是Web提出者最早开发的浏览器兼HTML编辑器的名称。在url(uniform resource locator,统一资源定位符)中,www通常是一个子域名,用来标识一个web服务器。

qq_45800977的博客 29万+

H无穷控制学习笔记——加权灵敏度H无穷控制问题

一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp​,Bp​,Cp​,Dp​),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1​,B1​,C1​,D1​),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2​,B2​,C2​,D2​),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3​,B3​,C3​,D3​)。

一饮丶一啄的博客 4347

Java中static、this、super、final用法简谈

文章发表: chensheng913发表日期: 2004-07-30本篇旨在帮助准备学习Java以及刚接触Java的朋友认识、掌握和使用static、this、super、final这几个关键字的使用。Java博大精深,我也是一位正在学习和使用Java的爱好者,文中难免有不妥之处,欢迎指正。一、static    请先看下面这段程序:  public class Hello{    pub

zydar的专栏 716

Dify-前端本地运行-单点登录

本文介绍了如何在已部署Dify的系统中实现AI应用跳转及页面定制化改造。通过iframe跳转无法满足甲方需求后,作者对Dify前端源码进行了本地化二次开发,主要步骤包括:1) 按照官方文档搭建本地开发环境;2) 修改.env配置文件连接部署好的后端服务;3) 隐藏侧边栏和头部导航栏;4) 实现单点登录功能,通过URL参数获取用户邮箱自动登录。过程中解决了请求拦截导致的登录校验问题,最终达成仅保留对话框界面并同步用户信息的需求。该方案涉及Next.js框架和React技术的应用,为类似定制化需求提供了参

weixin_43163457的博客 3224

西门子PLC1200 1214C DC/DC/DC 驱动步进电机

控制电机旋转的指令在“指令”中的“工艺”下的“Motion Control”(若出现程序块无法调用情况,则看备注3的第4条),本篇只介绍常用指令(若想学习详细与更多指令,请参考指令手册)。

2301_79553921的博客 1万+

java中的static和final

一、final   根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。  final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改

6202

5分钟搞定!用ZLMediaKit+GB28181搭建低成本外网视频监控(含避坑指南)

本文详细介绍了如何利用开源ZLMediaKit流媒体服务器与国标GB28181协议,快速搭建低成本、可外网访问的企业级视频监控系统。文章提供了从服务端部署、设备配置到外网访问优化的完整实战指南,并重点分享了网络配置、性能调优及常见问题的避坑方案,帮助用户实现高清视频流的稳定推送与多格式播放。

bush的博客 332

Java static 与 final 详解

本文深入解析Java中static和final关键字的核心概念与应用。static用于声明类级别的成员(变量、方法、代码块、内部类),在类加载时分配在方法区,所有实例共享同一副本。final表示不可变性,可修饰类(不可继承)、方法(不可重写)和变量(引用不可变)。static final组合定义全局常量,可能被编译器内联优化。文章通过代码示例详细展示了static的四种使用形式(静态变量、常量、代码块、方法)和final的三种应用场景(类、方法、变量),并分析了它们在内存中的存储特点及线程安全特性。

J_liaty的博客 1万+

3、提升管壳式换热器能效:双螺旋盘管的应用研究

本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。

k8s6orchestrator的博客 106

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java中static、final、static final的区别

final可以修饰:属性,方法,类      final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。      final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。      final修饰的属性表明是一个常数(创建后不能被修改)。      final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继

沉浮 4万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

final、static和static final区别和使用

final、static和static final用法 1.final关键字 final关键字修饰变量: 1.这个变量必须在构造对象时就能够初始化 2.如果是基本数据类型的变量,那么这个变量一旦初始化就不能更改,相当于一个常量 3.如果是引用数据类型的变量,则初始化后就不能更改它的引用,不过引用对象变量的值可以更改 final关键字修饰方法: 1.表明这个方法不能被子类重写,防止类修改它的含义 与static比较都不能重写但可以被子类继承调用,不同在于static可以写一个同名方法隐藏父类的方法,而fina

小白的博客 6076

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JAVA的final与static

static static是静态的意思,也是全局的意思。static定义的东西,属于全局,与类相关,不与具体实例相关,是类实例之间共享的。 1. 被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个对象来 2. 被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个对象来 static与非static的区别: 在内存中存放的位置不同:所有static修饰的属性和方法都放在内存的方法区(内存的方法区相当于常驻内存,如果一个方法或者变量

dlz_yhn的博客 5552

论Java中,修饰符中static、final以及abstract的使用。

论Java中,修饰符中static、final以及abstract的使用。

chengxinzhongnuo的博客 1469

Java中static、final、static final的区别和使用

一. final final类不能被继承,类中的方法默认是final; final方法不能被覆盖,但可以被继承,就是不可修改的意思; final成员变量表示常量,表示一但赋值就不能被修改; final不能用于修饰构造函数; private修饰的方法默认是final的,即不能被覆盖。 注意:final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保...

wenSirZhong的博客 2392

Java static与final使用陷阱

Java自学的网站(Java全栈工程师 | 以实例驱动学习 | how2j.cn) static是静态修饰关键字,可以修饰变量和程序块以及类方法: 当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存; 当修饰一个程序块的时候(也就是直接将代码写在stati...

如果第一次你没有成功,那么称之为1.0版,继续加油。 1万+

java中static、final、static final浅析

参考资料: https://www.cnblogs.com/EasonJim/p/7841990.html https://blog.youkuaiyun.com/hust_yfang/article/details/79585696 https://blog.youkuaiyun.com/zhangyanli0414/article/details/79008681 https://www.cnblogs.com/qq...

吟游诗人——吟唱生命的不朽 804

Java中static、final用法

一、Static请先看下面这段程序: public class Hello { public static void main(String[] args) { //(1)

yimianshisan的专栏 1617

JAVA中static、final、static final的区别

1 问题当我们在使用java写类的属性时总会用到很多的类型去修饰它,比如字符串String,整数型int,但是我们偶尔也会遇到 static、final、static final,那么他们的区别是什么呢?2 方法final final可以修饰属性、方法、类,局部变量(方法中的变量)。 final修饰的属性的初始化可以在编译期,也可以在运行期,但是在初始化后就不能改变了。final修饰的属性表明...

算法与编程之美 2104
上一篇: 初学Java---面向对象编程-抽象类与接口
下一篇: 初学Java---面向对象编程-多态学习
慕兮IT
博客等级 码龄8年 8粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕兮IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值