Java 中static和非static的区别(方法和变量)
2023-06-13 09:16:49 时间
Java当中static和非static变量的区别
- static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。非static修饰的成员变量是在对象new出来的时候划分存储空间,是与具体的对象绑定的,该成员变量仅为当前对象所拥有的。
- static修饰的变量在加载的时候先于main方法加载在内存中的数据共享区-------方法区,而非static的变量在加载的时候,是要创建变量才加载在堆内存中的。
- 一个static变量单独划分一块存储空间,不与具体的对象绑定在一起,该存储空间被类的各个对象所共享。static变量值在方法区加载一次,而非static在创建对象时会加载很多次。每次创建都会拷贝一份。
- 对象在引用成员变量是直接通过类名.变量名调用,对象在引用实例变量时只能通过对象名.变量名调用。
- 在类中调用成员变量时直接调用或者以类名.变量名方式调用,实例变量则用this或者直接调用。
static方法和非static方法的区别
- static修饰的方法也和static一样。先于main方法被加载到方法区,以便共享使用。
- 静态的static方法中不能使用this或者super关键字,因为static方法是先于对象创建之前就已经加载的方法,是属于类的方法,而this和super指向的是本类的对象或者父类的对象,非静态的方法是属于对象的,方法里可以用this和super。
- static方法可以用对象.方法名来调用,也可以用类名.方法名来调用。而非静态的方法只能创建对象后时调用。
- static方法是加载一次,被所有的对象所共享。而非静态方法是有多少个对象就拷贝多少次,每个对象只能调用自己的拷贝的方法。
- 对象调用非静态的方法时,不考虑线程安全性的问题,而调用静态方法时,要考虑安全性的问题。因为静态方法只有一份。而对象的方法是自己有自己的。
- 同一个类中,静态方法中只能访问类中的静态成员。而非静态方法可以访问非静态的方法(使用类名调用,或者创创建本类的对象调用)。
原文地址:https://www.jb51.net/article/125298.htm
本文共 650 个字数,平均阅读时长 ≈ 2分钟
相关文章
- java数组的声明_Java数组定义常用方法[通俗易懂]
- java反转数组_Java实现数组反转翻转的方法实例
- java启动器_JAVA基础:Java 启动器如何查找类
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- 编写java判断闰年_Java 判断闰年代码实例
- java获取服务器路径_JAVA获取服务器路径的方法「建议收藏」
- java获取服务器路径_Java获取此次请求URL以及服务器根路径的方法「建议收藏」
- 【说站】java泛型方法的使用注意
- java的栈内存和堆内存_Java本地方法栈
- Java 8 的 java.util.function.* POJO 的反射新方法
- java类和对象——变量赋值方法
- java程序员必知必会的微服务容错与隔离:降级保护,实现降级方法
- JAVA遍历数组的三种方法_java遍历object数组
- NDK开发(三) :JNI访问Java变量和方法
- java生成随机数方法大全(可指定范围、分布方式、类型、种子)详解编程语言
- Java生成 sql查询语句 通用方法(带排序/分页)详解编程语言
- java JNI: C 语言调用 Java 方法示例详解编程语言
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- 库MySQL Database Backup with Java.(java备份mysql)
- Java Statement.execute()方法:执行SQL语句
- 解决Linux下重启Java程序的方法(linux重启java)
- 使用Java连接Linux服务器的简单方法(java连接linux)
- Java程序建立Oracle数据库表的实现方式(java建oracle表)
- Java反射获取类详细信息的常用方法总结
- java获取日期的方法
- java对象转换String类型的三种方法
- Java中String类(字符串操作)的10个常见问题和解决方法