java引用变量_java代码声明引用变量经验
1.static只能修饰类的成员变量,不能修饰方法里的局部变量。
因为static是在类加载时候将成员变量存储进方法区的。
加载类的时候,是不去执行方法里的函数的。所以不会馆方法里的代码,自然就不会读取到static变量了。
如,这个代码就是错误的
classStudent{private stringname;public void setName(stringstr)
{static int a = 1;//这里错误,static只能修饰类的成员变量
}
}
2.new一个对象或者加载一个类的时候,是不是执行方法里的代码的。
而且new的对象,在堆中的存储空间就是成员变量的存储空间。
方法函数是不占代码的,方法里的代码全都存储在方法区里面。只有在执行方法时,才会找到方法区的代码,放到cpu里执行
3.java对垃圾回收是通引用变量来管理内存的。引用变量分为静态引用变量,成员变量,局部变量。
三种变量意味三种不同的生命周期对象。
局部变量,意味着方法执行时创建,执行完成后销毁。其生命周期和方法一样。
成员变量,意味着随着此类被new创建时而创建,此对象被销毁后跟随销毁,与对象的生命周期一样。
static变量,意味着生命周期最长,随着类被加载而创建,只要不认为控制垃圾回收,静态变量是一直生存的。
4.非静态方法可以调用静态方法,静态方法不能调用非静态方法。
什么意思?答:因为静态方法是在类加载时被存储进方法区的,而非静态方法是在程序执行时才调用的。一前一后,程序总是先加载后执行的,所以俩生命周期不一致,
只能后面的访问前面的,即非静态方法可以调用静态方法。但静态方法不能访问非静态方法,因为加载时,非静态方法还没被执行呢。
5.方法区的数据是线程共享的,每个线程都可以访问修改方法区数据。所以要给设置static变量的static方法加锁,以保证static变量的线程安全。
1.这里的synchronized锁住的是Student.class这个对象。因为方法是静态static的。
public classStudent {public static String name = "abc";public static String age = "123";
synchronizedpublic static void set(String name1,String age1) {
Student.name=name1;
Student.age=age1;
}
}
2.如果不加static,方法变为synchronized public void set(String name1,String age1) {}。锁住的是这个对象的锁。
public classStudent {public static String name = "abc";public static String age = "123";
synchronizedpublic void set(String name1,String age1) {
Student.name=name1;
Student.age=age1;
}
}
6.static变量设置private或者public问题。为了保证static变量线程安全,一般设置static变量的访问属性为private,然后再static变量的set方法设置为public并加锁,以保证线程安全。
如:
public classStudent {private static String name = "abc";//private 修饰private static String age = "123";
synchronizedpublic static void set(String name1,String age1) {
Student.name=name1;
Student.age=age1;
}
}
7.局部变量的生命周期是在一个大括号内,即一个所处块结束。如循环体内定义的int j;
java 是块作用域
一个 {} 就是一个独立的作用域空间
每次循环的时候,都会有一个新的作用域空间
你在for循环体外是看不到my的,也是因为超出了作用域空间。
循环第二次的时候,就有一个重名的my了呀?为什么还是能正常运行,不报错?
java引用变量_java代码声明引用变量经验相关推荐
- java怎么申请变量_java怎么声明变量
在 Java 程序设计中,每个声明的变量都必须分配一个类型.声明一个变量时,应该先声明变量的类型,随后再声明变量的名字.下面演示了变量的声明方式. double salary; int age; Bo ...
- java静态代码块和静态变量_Java中的静态变量、静态方法与静态代码块
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程. 其中静态代码在类的初始化阶段被初始化.而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变 ...
- java基础变量_Java基础语法之变量和常量
上行没有"{"时,下行代码与上行首字母对齐 标识符 概述 在Java中对变量.常量.函数和语句块都是有名字的,他们的名字统称为Java标识符.是为类.对象.方法.变量.接口和自定义 ...
- java引用队列_java的强引用、软引用、弱引用、幻象引用,引用队列总结
java除了原始数据类型的变量,其他所有都是引用类型. 引用分为强引用.软引用.弱引用.幻象引用,这几种引用影响着对象的回收 强引用 强引用:形如Object object = new Object( ...
- java如何引用文件_java 中如何引用json文件
java如何创建Json文件?每次做题前,小编都会先潇洒的写下一个解字,然后开始看题-- 新建json文件放在服务器指定目录下,然后读取和写入信息. 小编是想把讨论世界上最可怕的事情,莫过于有眼睛却发 ...
- java实例变量成员变量_Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法...
总是被这些相似的概念搞晕,查阅了资料后做个小总结,以变量为例,方法辨析类似. 1.多胞胎名字汇总辨析 成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称, ...
- java 可能尚未初始化变量_Java:错误:变量可能尚未初始化
Java:错误:变量可能尚未初始化 我正在学习Java,我收到了这个错误.我知道这已被问过几次(很多次),但没有一个答案似乎回答了我的问题.代码的主体是:String[] number = {&quo ...
- java 虚引用 作用_Java的强引用、弱引用、软引用和虚引用,以及用途
Java种除了基本数据类型,其它数据类型都是引用的数据类型.而应用数据类型根据生命周期的长短又分为:强引用.弱引用.软引用和需引用(幻象引用),我们平时基本上只用到强引用类型,而其他的引用类型我们也就 ...
- Java新职篇:声明一个变量
变量是Java程序的一个基本存储单元.变量由一个标识符,类型及一个可选初始值的组合定义.此外,所有的变量都有一个作用域,定义变量的可见性,生存期.接下来讨论变量的这些元素. 声明一个变量 在Java中 ...
最新文章
- 标量子查询产生的SQL性能瓶颈,该怎么合理优化?
- 【HM】第3课:JavaScript高级
- python开发环境spyder_spyder python 2.7-spyder(Python开发环境)下载 v2.1.10官方版--pc6下载站...
- iframe异步加载技术及性能
- 【Echarts底层相关】
- android 时钟动态图标,Android 8.1 Launcher3实现动态指针时钟功能
- Hadoop JobTracker和NameNode运行时参数查看
- Codeforces Gym 100342C Problem C. Painting Cottages 暴力
- 2022年一级建造师《公路工程》模拟考试卷带答案
- Base16加密算法
- 【python】OpenCV—RGB, Rectangle, Circle, SS(1)
- 2022-2028年全球与中国近红外光谱仪行业竞争格局与投资战略研究
- Spring Web Flow 2中的流管理持久性
- Mysql事务原理介绍
- dnw for linux(pc)
- python中write写入后文件依然空白
- 现代企业管理-计划和目标
- 【不懂就问】互联网、因特网和万维网到底是什么
- 简单对数不等式的证明
- bzoj 2754 [SCOI2012]喵星球上的点名 后缀数组+莫队
热门文章
- react native中一次错误排查 Error:Error: Duplicate resources
- ​十六周一次课(4月11日) 学习完成 18.11 LVS DR模式搭建 18.12 keepalived + LVS
- 利用WSUS3.0进行补丁分发
- 掉电引起的ORA-1172错误解决过程(二)
- Debian 项目不再提供 CD 格式的 ISO 镜像
- Java之控制反转和依赖注入
- 总线接口与计算机通信(五)CAN总线
- 如何隐藏storyboard中的top bar
- c# string总结
- 3D Button Visual Editor