在Java类中的变量

众所周知,在Java的类中有三种变量,那么这三种变量有什么区别呢?

1、局部变量:这是一种定义在方法内部中的变量。这就表示这种变量的作用域就是在该方法内部。其他方法中无法调用该变量。

2、成员变量:这是定义在类的内部但方法外的变量,在创建对象的时候可以实例化该对象。作用域是整个类内部。(包括所有方法)

3、类变量:这跟成员变量一样,是定义在类的内部方法体之外。但与之不同的是这是一种静态的变量,说白了就是必须要用static修饰。通常使用类名+变量名来使用,可以不用创建对象。大大提高了内存的使用效率。

接下来为大家说明一下这三个变量中常见的错误。

局部变量中不能用public、private、protected、static,顾名思义局部变量的范围就是在所在方法的内部,没有必要再使用访问权限修饰符。至于不能用static,了解jvm的小伙伴可能知道,Java中方法内部的变量是通过栈的方式创建的。该方法执行结束,变量自动被销毁。这与静态变量的矛盾。

原文地址:https://www.cnblogs.com/ranke/p/8320618.html

时间: 2024-10-10 17:17:12

在Java类中的变量的相关文章

java类中成员变量初始化后存放在堆内存中还是栈内存中?

答案是堆内存. 之前明明看过java类初始化过程的, 但一下子看到这样的题目,还是懵了. 百度后,那些帖子的回复各有各说, 脑袋都看得要塞住了,还是看书求证吧. 李刚的<疯狂Java>第128页开始,有一个类从初始化开始, 在内存发生什么变化的详细过程,这里简单记录一下. class Person{     String name;     static int eyeNum; } 上面这个Person类,有成员变量name和静态成员变量eyeNum了, 当执行下面语句: Person p1 

Java 类中的变量和方法

1.类中定义的域变量可以被类中的所有方法访问. 2.方法中形式参数和定义的局部变量的作用域仅限于该方法中,局部变量在使用前必须进行赋值初始化. 3.如果局部变量和类中的域变量重名,则在方法中对同名变量改变的是局部变量. 4.在方法中如果要使用类的域变量,需要引入 this 关键字.

Java 类中成员初始化顺序

Java 中的类成员 基本分为 静态成员, 实例变量  方法中特别的是静态方法和构造方法. 1.定义一个类 public class ClassLoaderTest { public int a ; public String b; private static int c; public  ClassLoaderTest(){ System.out.println("执行前:"+ a + "  "+ b); a = 10; b = "lisi"

分析java类的静态成员变量初始化先于非静态成员变量

分析java类的静态成员变量初始化先于非静态成员变量 依上图中当class字节码文件被jvm虚拟机加载到内存中依次经过 连接 验证:对字节码进行验证 准备:给静态变量分配内存并赋予变量类型各自的默认值(注:基本类型为0或false,对象为null,static final修饰的常量直接赋予相应的值) 解析:类中符号引用转换成直接引用 初始化:为类的静态变量/静态语句块初始化相应的值 而类的初始化契机是:类在被第一次主动使用的情况下,主动使用包括以下6中情况: 使用new关键字实例化对象时. 调用

java 类的静态变量

主要是记录一个奇葩的现象,java类中的静态变量,不仅可以通过类名称直接调用,而且还可以通过类的实力对象调用,java是不存在静态类的,如果非要用静态的类那就是内部类. 类中的静态变量是存储在JVM方法区中,线程共享的. public class HasStatic { public static int x = 100; public static void main(String args[]) { HasStatic hasStatic1 = new HasStatic(); hasSta

Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

Java 类的实例变量初始化的过程 静态块.非静态块.构造函数的加载顺序 先看一道Java面试题: 1 public class Baset { 2 private String baseName = "base"; 3 // 构造方法 4 public Baset() { 5 callName(); 6 } 7 // 成员方法 8 public void callName() { 9 // TODO Auto-generated method stub 10 System.out.p

java类中调用servlet

一.Java中调用servlet说明: 我们有时可能需要在Java类中调用Servlet从而实现某些特殊的功能,在JavaAPI中提供了一个URL的类,其中openStream( )方法可以打开URL的连接,并返回一个用于该连接读入的InputStream. 二.Java中调用servlet应用举例: package com.solid.test; import java.io.BufferedReader; import java.io.IOException; import java.io.

java类中属性的加载顺序,以及内存分配情况介绍

看下面例子及说明: /** 假如有外部类调用了该类,代码为:new StaticTest(); 那么下面是类属性的加载顺序 */ public class StaticTest{ public int dsd=2;//第3 //多个对象会有多次分配内存 public awds() { int sdsfsd=2;//第4 //多个对象会有多次分配内存 } //静态代码块 static{ System.out.println("静态代码块正在加载...");//第1 } public st

java web项目,java类中获得WEB-INF路径

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 private static String getWebInfPath() {         URL url = 当前类.class.getProtectionDomain().getCodeSource().getLocation();         String path = url.toString();         int index = pat