java中的成员变量、静态变量与局部变量
java中的变量分为成员变量(又叫实例变量)、静态变量和局部变量。
1.成员变量
1.1 成员变量(实例变量)是在类中定义的非static修饰的变量,可以不用赋初始值,不同的数据类型有默认的初始值。
package test;
import org.junit.Test;
public class VariableTest {
byte bt;
short s;
int age;
long l;
float f;
double d;
char c;
boolean flag;
String name;
@Test
public void cvariable(){
VariableTest vt=new VariableTest();
System.out.println("byte类型的默认值为:"+vt.bt);
System.out.println("short类型的默认值为:"+vt.s);
System.out.println("int类型的默认值为:"+vt.age);
System.out.println("long类型的默认值为:"+vt.l);
System.out.println("float类型的默认值为:"+vt.f);
System.out.println("double类型的默认值为:"+vt.d);
//'\u0000'为空
if(c=='\u0000'){
System.out.println("char类型的默认值为'\u0000'");
}
System.out.println("boolean类型的默认值为:"+vt.flag);
System.out.println("String类型的默认值为:"+vt.name);
}
}
运行结果:
byte类型的默认值为:0
short类型的默认值为:0
int类型的默认值为:0
long类型的默认值为:0
float类型的默认值为:0.0
double类型的默认值为:0.0
char类型的默认值为'
1.2 实例变量只有初始化一个副本之后才可以使用,每当实例化一个对象,会在堆中创建一个副本并初始化,各个对象中对实例变量的修改互不影响。
package test;
import org.junit.Test; public class VariableTest {
int age;
@Test
public void cvariable2(){
VariableTest vt1=new VariableTest();
vt1.age++;
System.out.println("vt1.age:"+vt1.age); //vt1.age:1
VariableTest vt2=new VariableTest();
vt2.age++;
System.out.println("vt2.age:"+vt2.age); //vt2.age:1
}
}
2.静态变量
定义在类中被static修饰的变量,类加载时在方法区中分配存储空间,被类所拥有,任意一个对象对其修改都会改变该变量的值。
package test;
import org.junit.Test;
public class VariableTest {
static int num;
@Test
public void staticVariableTest(){
VariableTest vt1=new VariableTest();
vt1.num++;
System.out.println(vt1.num); //1
VariableTest vt2=new VariableTest();
vt2.num++;
System.out.println(vt2.num); //2
}
}
3.局部变量
局部变量是指定义在方法体中的变量,变量定义后必须赋初始值。若为基本类型,值直接存储在栈中,若为引用类型,其对象存储在堆中,而把对象的引用存储在栈中。
4.成员变量的作用域
成员变量的作用域:
- public:当前类,同一package的其他类,其他package的当前类的子类,其他package的类都可以访问(4);
- private:只有当前类能访问(1);
- protected:当前类,同一package的其他类,其他package的当前类的子类都可以访问(3);
- default:只有当前类和其位于同一包内的类可以访问(2);
这些修饰符只能修饰成员变量,不能修饰局部变量。(只有public,abstract,final能用来修饰类)。
java中的成员变量、静态变量与局部变量的更多相关文章
- java中的static使用--静态变量、静态方法
Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...
- JAVA中的static关键字(静态变量和成员变量)
static的特点: 1.static是一个修饰符,用于修饰成员: 2.static修饰的成员被所有的对象所共享: 3.static优先于对象存在,因为static的成员随着类的加载就已经存在了: 4 ...
- java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)
static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...
- Java非静态内部类中为什么不能有静态变量却可以有常量?
如:public class InnerClassDemo{ int x; class A{ static int a = 0;//这样写是不合法的. static final int b=0;//这 ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
- Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,
Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...
- java常量,变量,静态变量的理解
最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...
- js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!
效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...
随机推荐
- Entity FrameWork 增删改查
Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping) 解决方案 ...
- vue 日历组件只显示本月和下个月 -- 多选日期
效果就是上图 代码贴出 1.在components > calander > index.vue <template> <div class="page&quo ...
- yii中的restful方式输出并调用接口和判断用户是否登录状态
//创建一个控制器接口 返回的是restful方式 <?php namespace frontend\controllers; use frontend\models\Fenlei; use f ...
- gii的使用
假设有表link 在backend中生成子模块content 生成子模块模型common/models/Link 生成模块content中的crud 配置别名 在backend/config/main ...
- java 常见语法,但是发现switch等基础,常见面试套路不会了,待补充
1,面向对象,万物皆对象,面向对象的三个基本特性:封 装,继承,多态. 面向对象的程序都是由类组成,类封装了对象的属性和行为. 封装:隐藏对象的属性和实现细节,仅对外提供接口. 继承:实现代码复用,将 ...
- [lightoj P1151] Snakes and Ladders
1151 - Snakes and Ladders Time Limit: 2 second(s) Memory Limit: 32 MB 'Snakes and Ladders' or 'Sh ...
- python 二分法模板——牢记
class Solution: # @param nums: The integer array # @param target: Target number to find # @return th ...
- 如何 distinct 只对一个字段有用,同时查出其他字段
转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...
- asp.net针对SQLSERVER数据库备份和恢复的一揽子问题解决
一.备份 先备份到服务端,用gridview显示出来,点击可以下载到本地 二.恢复 这是很麻烦的事情,本人查阅不少资料,耗费不少时间才搞定. 直接恢复数据库时不行的,会提示数据库正在使用,恢复失败等信 ...
- jQueryValidate的表单提交ajax刷新代码
$("#form-member-add").validate({ rules:{ username:{ required:true, minlength:2, maxlength: ...