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. Codeforces 1064 D - Labyrinth

    D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...

  2. ionic3开发ios端

    ionic框架是一端开发,三端适用(android端,ios端,web端),意思是在其中一端开发的代码,拿到另外两端,代码同样生效 那现在就说一下在web端开发拿到ios端开发前需要做的事情 开发io ...

  3. Node.js简述

    Node.js是2009年5月由Ryan Dahl 发布的服务器程序. 它封装了Google V8 JavaScript 引擎, 并将其重建为可在服务器上使用. 它旨在提供一种简单的构建可伸缩网络程序 ...

  4. icpc2018-焦作-D-几何模拟

    https://nanti.jisuanke.com/t/34142 上午可能是供氧不足,推的式子死活不对,晚上莫名其妙又来了一次就过了. 分两种情况讨论,如果能够完全进入弯道答案就是固定的就是: s ...

  5. xftp免费版使用

    转自https://www.jb51.net/softs/621774.html

  6. Awesome Tools

    Awesome R: https://awesome-r.com/ (Chinese translation: http://www.ppvke.com/Blog/archives/40981) Aw ...

  7. 一直又爱又恨的jqueryValidate,看到一个还不错的laber.error样式

    默认样式,不是很好看 修改之后就高大上多了 功臣如下: label.error {    position: absolute;    right: 18px;    top: 5px;   colo ...

  8. Saiku更改源代码实现默认查询一天的数据(十)

    Saiku通过更改源代码实现默认查询前一天数据 saiku在本地进行的编译的方式前面已有教程说明,接下来就是更改原代码了 (从网上学得教程,目前只了解到获取最新一天的数据信息) 参考博客地址: htt ...

  9. leetcode python 009

    ##懒得自己做 ##  验证回文数字int0=63435435print(int(str(int0)[::-1])==int)

  10. Linux Nginx Web环境安装SSL证书后强行指向HTTPS方法

    如今我们越来越多的网站需要使用SSL证书,尤其是一些购物类网站,用户交互类网站使用居多.安装方法也很简单,我们可以根据自己的服务器是NGINX还是APACHE进行安装,但是在安装之后,默认的HTTP和 ...