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中的成员变量、静态变量与局部变量的更多相关文章

  1. java中的static使用--静态变量、静态方法

    Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...

  2. JAVA中的static关键字(静态变量和成员变量)

    static的特点: 1.static是一个修饰符,用于修饰成员: 2.static修饰的成员被所有的对象所共享: 3.static优先于对象存在,因为static的成员随着类的加载就已经存在了: 4 ...

  3. java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)

    static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...

  4. 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例

    内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { cl ...

  5. Java非静态内部类中为什么不能有静态变量却可以有常量?

    如:public class InnerClassDemo{ int x; class A{ static int a = 0;//这样写是不合法的. static final int b=0;//这 ...

  6. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

  7. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...

  8. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,

    Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...

  9. java常量,变量,静态变量的理解

    最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...

  10. js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!

    效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...

随机推荐

  1. Entity FrameWork 增删改查

         Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping) 解决方案   ...

  2. vue 日历组件只显示本月和下个月 -- 多选日期

    效果就是上图 代码贴出 1.在components > calander > index.vue <template> <div class="page&quo ...

  3. yii中的restful方式输出并调用接口和判断用户是否登录状态

    //创建一个控制器接口 返回的是restful方式 <?php namespace frontend\controllers; use frontend\models\Fenlei; use f ...

  4. gii的使用

    假设有表link 在backend中生成子模块content 生成子模块模型common/models/Link 生成模块content中的crud 配置别名 在backend/config/main ...

  5. java 常见语法,但是发现switch等基础,常见面试套路不会了,待补充

    1,面向对象,万物皆对象,面向对象的三个基本特性:封 装,继承,多态. 面向对象的程序都是由类组成,类封装了对象的属性和行为. 封装:隐藏对象的属性和实现细节,仅对外提供接口. 继承:实现代码复用,将 ...

  6. [lightoj P1151] Snakes and Ladders

    1151 - Snakes and Ladders Time Limit: 2 second(s)    Memory Limit: 32 MB 'Snakes and Ladders' or 'Sh ...

  7. python 二分法模板——牢记

    class Solution: # @param nums: The integer array # @param target: Target number to find # @return th ...

  8. 如何 distinct 只对一个字段有用,同时查出其他字段

    转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...

  9. asp.net针对SQLSERVER数据库备份和恢复的一揽子问题解决

    一.备份 先备份到服务端,用gridview显示出来,点击可以下载到本地 二.恢复 这是很麻烦的事情,本人查阅不少资料,耗费不少时间才搞定. 直接恢复数据库时不行的,会提示数据库正在使用,恢复失败等信 ...

  10. jQueryValidate的表单提交ajax刷新代码

    $("#form-member-add").validate({ rules:{ username:{ required:true, minlength:2, maxlength: ...