首页 > 编程语言 >java学习日记20230320-类变量和类方法

java学习日记20230320-类变量和类方法

时间:2023-03-22 23:55:55浏览次数:62  
标签:java 变量 20230320 静态 访问 对象 static 方法 日记

类变量和类方法

static修饰的静态变量或者方法

静态变量是类共享的,当class运行时。jdk8之前时放在方法区,静态域,jdk8之后放在堆中,会生成class对象在堆中;

在类加载中生成;

  • static静态变量是同一个类的所有对象共享
  • static类变量,在类加载的时候就生成

类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,去到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

定义语法

  访问修饰符 static 数据类型 变量名;(推荐)

  static 访问修饰符 数据类型 变量名;

访问类变量

  类名.类变量名;

  对象名.类变量名(静态变量的访问修饰符的访问权限和范围和普通属性一致);

  推荐使用:类名.类变量

类变量时随着类的加载而创建,所以即使没有创建对象实例也可以访问;

 

注意事项和细节:

  • 当所有对象共享一个变量时;
  • 类变量是所有该类的对象共享,实例变量是每个对象独有的;
  • 实例变量/普通变量/非静态变量指不加static的变量;
  • 推荐使用类名.类变量名
  • 实例变量不能通过类名.类变量名
  • 只要类进行加载了-》class对象,就可以使用类变量;
  • 类变量的声明周期与类的加载和消亡一致

类方法:

  类方法也叫静态方法

  访问修饰符 static 数据返回类型 方法名(){}

  static 访问修饰符 数据返回类型 方法名(){}

使用场景:

  当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率;

  比如工具类utils,Math,Array,Collections

  在程序开发中,往往会将一些通用的方法,设计成静态方法,这样我们不需要创建对象就可以使用了,比如打印一维数组,冒泡排序,完成某个计算任务

注意事项和使用细节

  类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:

    • 类方法中无this参数;
    • 普通方法中隐含着this参数;
  • 类方法可以通过类名调用,也可以通过对象名调用
  • 普通方法和对象有关,不能通过类名调用
  • 类方法不允许使用和对象有关的关键字,比如this,super
  • 类方法只能访问静态变量或静态方法
  • 普通成员方法,既可以访问普通变量,也可以访问静态变量
  • 静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员

  

 

标签:java,变量,20230320,静态,访问,对象,static,方法,日记
From: https://www.cnblogs.com/DragonJack/p/17245815.html

相关文章

  • 20.(行为型模式)java设计模式之迭代器模式
    一、什么是迭代器模式(IteratorPattern)   提供—种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部实现,属于行为型模式。应用场景:   —般来说,迭......
  • Java之size()>0 和isEmpt()性能考量
    为何要写这篇呢?主要是要纠正一个长期以来的误区:size()>0一定比isEmpt()性能差。以下内容是社区里的结论:方法一(数据量大,效率低):if(list!=null&&list.size()>0){}方法......
  • BDD之Java Testing with Spock
    为何会专门写这篇BDD呢?之前我发表过一篇《代码重构之TDD的思考》,有童靴联系到我,探讨之余,感觉这几年集成化方面的测试方案产出太少了,优秀的也太少了。今天带大家了解一个新东......
  • Java运算符
    Java运算符Java运算符有:算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符算术运算符A=10,B=20操作符描述例子+加法,运算符两侧的值相加......
  • 【Javaweb】html frame标签的使用 | 导航栏右侧内容的实现
    问题的产生:是我和同伴做了一个导航栏,但是我们不知道怎么实现右侧内容的切换    然后我们查了很多资料,但是有一些是垂直的,但是就如图可见,我们是水平的,那么怎么实......
  • Java入门_一维数组_第二题_随机生成数
    前提小白一个,啥都不会,欢迎指点。题目随机生成10个整数(1-100的范围),保存到数组,并倒序打印以及求平均值,求最大值和最大值的下标,并查找里面知否有8。思路随机生成--......
  • Java:数据表的字段设计了默认值0不生效的原因
    在数据表里给字段设置了默认值为0,但是在插入的时候不生效,数据表设计如下 通过数据表生成的实体类查看代码@Data@TableName(value="user")@NoArgsConstructor@A......
  • Java单例
    /***@Author:DengJia*@Date:2023/3/22*@Description:单例*/publicclassSingleton{publicstaticvoidmain(String[]args){System.out......
  • Java学习笔记(八)GUI
    GUI编程如何学习?这是什么?它怎么玩?该如何去平时运用?组件窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘破解工具1.简介Gui的核心技术:SwingAWT,......
  • Java 执行命令 Apache Common-Exec
    command="cmd.exe/c"+command;ByteArrayOutputStreamstdout=newByteArrayOutputStream();PumpStreamHandlerpsh=newPumpStreamHandler(stdout);CommandLinecl......