论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
java基础---java变量类型
java基础---java变量类型
十念
金牌会员
|
2022-9-1 01:03:28
|
显示全部楼层
|
阅读模式
楼主
主题
893
|
帖子
893
|
积分
2679
java变量类型
1、局部变量
概念:类的方法中的变量
2、实例变量
概念:定义在类里面,方法体、构造方法和语句块外,且不被static修饰的变量,用于描述一个类中包含哪些数据
3、类变量
概念:独立于方法之外的变量,有static修饰
public class able{
static int a=0;//类变量
String b="hello world";//实例变量
public void method(){
int c=0;//局部变量
}
}
复制代码
扩展:
成员变量分为实例变量和类变量
成员变量的定义:
声明成员变量语法
【public】【protected】【private】【static】【final】
含义如下:
【public】【protected】【private】:成员变量的访问权限
【static】:表示该成员变量为类变量,也成为静态变量
【final】:表示将该成员变量声明为常量
【type】:表示变量的类型
【variable_name】:表示变量名称
java四种访问范围:
1、当前类 2、同一包 3、子类 4、全局
访问权限从小到大
private-->default-->protected-->public
1、局部变量
特点:
1、局部变量声明在方法、构造方法或者语句块中
2、局部变量在方法、构造方法、或者语句块被执行的时候创建,当这些被执行完成后,变量将会被销毁
3、访问修饰符不能用于局部变量
4、局部变量只能在声明它的方法、构造方法或者语句块中可见
5、局部变量是在栈上分配的
6、局部变量没有默认值,所以局部变量被声明后,必须经过初始化(赋值),才能被使用
存放地址:栈内存
生命周期:作用的范围结束,变量空间会自动释放
扩展:
变量使用原则:
就近原则,首先在局部范围找,有就用,接着在成员位置找。
局部变量可分为:
1、形参(形参列表,可以由多个或者0个组成,中间用逗号隔开)
2、方法局部变量
3、代码块局部变量
扩展:变量与对象
变量是用来存储数据的,它的定义包含变量名、变量类型和作用域几个部分,对象是一个类功能模块的集合,里面有方法和属性,每一个方法能实现一个不同的功能,属性是决定对象执行结果的因素,属性只能读写。
实例化、初始化和声明
实例化:用类创建对象的过程称为实例化,实例化一个对象就是为对象开辟内存空间,或者不用声明,直接用new构造函数名,创建一个临时对象。类不同于函数(方法),定义完之后是无法直接使用的,因为类只是一个抽象的概念,需要通过关键字new来实例化,才可以被使用
Date date=new Date()
复制代码
初始化:给声明的对象赋值的过程。string arr=“hello”;
声明:指使用一个对象的时候,先定义属于哪个类型 。string arr;
总结:
声明:只生成对象不赋值的过程
初始化:是给对象赋值的过程
实例化:是使用new为对象分配内存的过程
2、实例变量(成员变量)(对象的成员变量)
本质
:
成员变量,只是实例是针对类而言,实例是值类的声明
1、实例变量在对象创建的时候创建,在对象被销毁的时候销毁
2、实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方法获取实例变量信息
3、实例变量可以声明在使用前或者使用后
4、访问修饰符可以修饰实例变量
5、实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。
成员变量初始化:
1、默认初始化
2、就地初始化 定义成员变量的时候便进行初始化
3、类外初始化 通过对象的引用进行初始化(最多)(私有的时候可以用setXXX()、getXXX()方法实现)
public static void main (String [] args){
Person person = new Person();
person.name = "张三";
person。age=11;
}
复制代码
4、通过实例代码块和静态代码块进行初始化
5、通过构造方法进行初始化
3、类变量(静态变量、静态属性、类属性)
解释:是指该类所有对象共享的变量任何一个该类的对象去访问它时,取得都是一样的值
访问方式:通过 类名.静态成员变量名 进行访问
存储:静态存储区。
特点:只有一份,且不依赖对象
生命周期:在程序开始时创建,在程序结束时销毁
注意:在类中以static关键字声明,但是必须在方法、构造方法、语句块之外。
静态变量被除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变,很少单独使用static声明变量
与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型
默认值与成员变量类似
类变量被声明为public static final类型时,类变量名称一般建议使用大写字母
使用时机:
1、变量所包含的对象体积较大、占用内存较多
2、变量所包含的对象生命周期较长
3、变量所包含的对象数据稳定
4、该类的实例有对该变量包含对象的共享需求
静态变量和成员变量的区别
1、生命周期不同
成员变量:随着对象的创建而存在,随着对象被回收而释放
静态变量:随着类的加载而存在,随着类的消失而消失
2、调用方式不同
成员变量:只能被对象调用
静态变量:可以被对象调用,还可以被类名调用
3、别名不同
成员变量:实例变量、全局变量
静态变量:类变量、类属性、静态属性
4、存储位置不同
成员变量:堆内存的对象中,对象的特有数据
静态变量:数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
静态变量与非静态变量的区别
1、访问权限,静态变量不能访问非静态变量,如果硬要访问,只能用对象区引用非静态成员变量
2、静态变量在内存空间只有一份,永远一份
3、非静态变量只要new出来一个对象引用就会在内存中分配一份空间给它
4、存放 地点不一样,静态变量是在栈空间,非静态变量存放在堆空间
扩展:
实例变量(成员变量)与类变量(静态变量、静态属性、类属性)不赋值下的默认取值
byte short int long默认取值为0(整数类型)
float默认取值为0.0f;(浮点类型 单精度)
double默认取值为0.0;(浮点类型 双精度)
boolean默认取值为false;(布尔类型)
char默认取值为“\u0000”(字符类型 最终输出为空) 表示Unicode字符
全局变量:
定义在类里方法体外的变量。作用于整个文件中,直接被类调用。
作用域:全局可见
存储空间:静态存储区
优先度:全局变量优先度低于局部变量
优点:程序运行快一点,因为内存不需要分配
缺点:占用更多的内存,因为其生命期长
全局变量作用域的扩展和限制:
1、扩展:使用extern关键字可以对全局变量的作用域进行扩展
2、限制:使用static关键字可以限制全局变量的作用域(又称之为隐藏)
总结一下所有变量的存放位置:
局部变量位于栈内存、静态变量位于方法区、实例变量位于堆内存、方法的字节码位于方法区、对象本身位于堆区、对象的引用位于栈区
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
十念
金牌会员
这个人很懒什么都没写!
楼主热帖
Velero系列文章(四):使用Velero进行 ...
Kali Linux利用MSF入侵安卓手机(小白版 ...
微光互联 TX800-U 扫码器无法输出中文 ...
【图书管理系统】Servlet+JSP+MySql 实 ...
Android Studio 实现登录注册-源代码 ...
xmrig挖矿样本分析 miner
C/C++函数的调用约定详解
SonarQube安全扫描
三天吃透Kafka面试八股文
用C++实现插件模式时的避坑要点 ...
标签云
存储
服务器
快速回复
返回顶部
返回列表