Java非实例方法运行时,局部变量表第0位索引slot是什么?

运行实例方法时,第0位索引slot指向的是当前方法引用的"this'关键字,那非实例方法(static)的第0位索引又是什么呢?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

jvm中的局部变量表中的Slot中的作用是什么?

> 原文地址:http://www.tuicool.com/articles/URZrMnb > 局部变量表中的Slot是可重用的,方法体中定义的变量,其作用域并不一定会覆盖整个方法,如果当前字节码PC计算器的值已经超出了某个变量的作用域,那么这个变量对应的Slot就可以交给其它变量使用。 求大神解释下,上面的这句话,最好举个实例。

java类类型的局部变量指向类实例变量,改变该局部变量的值,但实例变量却没有变化

我在test类中定义一个类变量a,初始值为“不”,和方法v(),该方法内定义一个局部变量b,b引用了test中的类实例变量a,并对增加了字符串“好”。 再在main方法中实例化了一个test对象c,对c使用了v()方法。 结果是: c.v()=不好; c.a=不; 代码如下: ****test类:**** public class test { public String a="10"; public String v() { String b=a ; b=b+"1"; return b; } } ****main类:**** public static void main(String[] args) { test c=new test(); c.v(); System.out.println(c.v()); System.out.println(c.a); } 我的问题是我在方法subtraction()中定义的局部变量b已经引用了a,这两个都是String类,属于类对象,类对象的赋值不就是说a与b都指向同一个对象。那么此时a与b就是同一个变量,改变了b就是改变了a,为什么在main方法中我已经对c的b进行了修改,但对象c中的a的值没有变化. 具体机制是什么呢?

实例方法 静态方法 实例变量 静态变量之间的关系问题

java中实例方法 静态方法 实例变量 静态变量之间的关系问题 静态变量可以方法静态方法 实例变量可以访问静态方法 实例变量可以访问实例方法 以上说法对么

java语言中申明的类变量、实例变量、局部变量在内存中的分配问题

想问问在java语言中申明的类变量、实例变量、局部变量在内存中的分配问题? [b]问题补充:[/b] 那么实例变量和类变量在constant pool 中又是怎么样分配的呢?

类变量,成员变量,全局变量,局部变量,实例变量的区分?

最近在看《零基础学java》看到变量分类时,上面说根据所属范围划分: 变量可分为类变量和成员变量。类变量不随产生的对象变化而变化; 成员变量则随对象不同而变化。可看了几个实例越看越混淆,求大神解答一下?

JAVA中的对象只能调用成员变量和方法吗?

JAVA中的对象只能调用成员变量和方法吗? Java中的对象可以调用局部变量吗? (新手小白)

java中静态方法为什么无法调用非静态变量或者方法

我在网上搜到的回答都是类似下面这样: 静态方法是随着类的加载而加载的,对象是在类加载之后创建的,也就是说静态方法先于对象存在。当你创建一个对象时,程序为其在堆中分配内存,一般是通过this指针来指向该对象。静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法/变量。因此在对象未存在时非静态方法/变量也不存在,静态方法自然不能调用一个不存在的方法。 这个解释我看完还是有一点不是很明白,想请教一下大家,以下面的代码为例: ``` public class D143Demo_Person3 { public static void main(String[] args) { Person p1 = new Person(); p1.name = "林青霞"; p1.speak(); } } class Person{ String name; //姓名 public static void speak() { System.out.println(name); } } ``` 当已经创建了一个p1的对象并为其变量name赋值后。此时的p1.name不是已经存在了吗,为什么还是使用静态方法p1.speak仍然会报错。 麻烦各位大神说说我的理解错在哪儿了。 我随后查阅资料,有一段是这么写的: 如果静态方法能调用动态方法的话,那如果别人通过类名调用静态方法时实例对象可能并不存在,但是方法内又调用了对象的方法,由于对象不存在,所以动态方法也不存在,程序肯定报错,所以java直接在编译阶段检查这种错误,避免运行时异常。这个解释我就懂了。

java中的实例化和引用变量有什么区别?

java中的实例化和引用变量有什么区别?就如这张图![图片说明](https://img-ask.csdn.net/upload/201606/21/1466508955_538769.jpg)

新手提问!Java 栈与堆 实例变量与引用变量

看到堆、栈位置的时候,很是迷糊。 一方面讲:对象的实例变量存于堆中 一方面讲:引用变量和主数据变量存于栈中 感觉很矛盾,实例变量中包括引用变量和数据变量,到底在堆中还是栈中?

JAVA中类的实例变量和静态变量的赋值

学完了面向对象,回头看项目的时候在这个地方有些不太透,对于类的实例变量和静态变量如何赋值和访问及修改(所描述的赋值访问及修改可能用词不准确,恳请指正)谢谢!!!

java 变量在堆栈内存的问题

public class Test1 { public int i; public String e=new String("123"); public Test2 test2=new Test2(); public void say(){ String str2=new String("abc"); int i=0; System.out.println(i); } public static void main(String[] args) { Test1 t1=new Test1(); } } 主函数实例化一个t1对象, 在栈内存中有个t1的引用,在堆内存中有new Test1()对象, 问题来了 1:一般的成员变量我知道是在堆内存中存储,但是引用的对象在堆内存如何表示呢? public String e=new String("123"); public Test2 test2=new Test2(); 难道 e和test2 也会在栈中存储一个引用 然后指向到堆中的对象? 2:就是方法中的参数和变量,我知道在内存中方法的参数和变量都是局部变量都是放在栈内存中的 基本类型的数据值也是在栈内存中存储,字符常量是在常量池中存储 但是这里的方法内部的对象在堆栈中如何存储的呢?

java多线程实例的成员变量问题

有一个线程通过下面listObj里面的线程实例修改线程的成员变量(修改前会判断线程实例的isBusy状态),那么被修改的该线程实例为毛有时运行会报空值,即逻辑操作取值部分? List<A> listObj=new ArrayList<A>(); for(int i=0;i<30;i++){ A a=new A(); Thread thread=new Thread(a); listObj.add(a); thread.start(); } class A implements Runnable{ public Map map; public boolean isBusy=false; public void run(){ while(true){ if(map!=null){ isBusy=true; //逻辑操作,不影响map,只读 map=null; isBusy=false; }else{ try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } } }

java中关于变量的作用域的问题

在java中局部变量,实例变量,类变量的作用域都分别是什么呢?

Java程序运行时,类和实例在内存中的状态是怎么样的?类和实例在内存中都可能出现几个副本吗?

Java程序运行时,类和实例在内存中的状态是怎么样的?类和实例在内存中都可能出现几个副本吗?

JAVA实例化并以接口运行

已知道接口 TestInf (定义方法 t1), 已知道实现类 TestImpl(含方法 t1 ,t2) ,现根据方法名称,通过类反射来调用其中的方法。两个类型都是动态获取的。 要求只能调用TestInf中含有的方法。现在是通过判断方法名称如果在TestInf中没有就 报错。 说简单点就 是实现静态代码: TestInf test = new TestImpl(); 请教如何实现? 附加说明: 不是描述注入之类的,就是想动态实例化对象,但要转成一个接口,接口是暴露给第三方系统使用,所以接口中的方法个数会少于对象的方法个数。由于涉及很多个服务,所以要通过类反射来调用。

关于java静态变量的存储位置

网上有很多关于类变量存储位置的文章,比如http://gao-xianglong.iteye.com/blog/2152345 说明静态变量是存储在方法区中,但是本人随便写了个例子如下: public static Object o = new Object[999999999]; public static void main(String[] args) { } 运行报出java.lang.OutOfMemoryError: Java heap space说明是堆溢出了,难道静态变量又存储在堆中了? 关于这块很不解,求解释

Java中静态方法在内存的位置?

最近在复习JAVA的内存知识。静态变量是加载在方法区的,内存分配即在方法区,当创建类的时候堆里有静态变量的指向地址,然后栈内的对象可以通过堆内地址找到该静态变量,为大家共用。 那静态方法呢?也是在方法区中分配内存吗?是随着类的加载而初始化的吗?但是我测试的如下运行代码,却并没有运行此静态方法。 package com.learn.java.cc; class Static1{ static void sys1(){ System.out.println("hello!"); } } public class StaticDemo { public static void main(String[] args){ Static1 s = new Static1(); } } 求解? 原因:感谢各位的回答,在类中还有一个叫做静态代码块和构造代码块(即没有静态修饰的只被{}的代码),创建对象的时候会默认先加载静态代码块和构造代码块,这里的print会被打印出来,然后加载构造方法,而本类中的静态方法只是在调用的时候才被使用。 package com.learn.java.cc; class Static1{ { System.out.println("hello2!"); } static{ System.out.println("hello1!"); } static void sys1(){ System.out.println("hello3!"); } } public class StaticDemo { public static void main(String[] args){ Static1 s = new Static1(); } } 结果: hello1! hello2!

java中的枚举问题中的变量

新人初学java,在学到枚举的时候遇到了问题,求教各位 枚举中有这样一段定义 public class WeekDay(){ private WeekDay(){} public final static WeekDay SUN = new WeekDay() ...... } 后面就是这样得一些定义星期的代码 不明白的地方: 1.这里是枚举的问题:为什么创建对象可以在这个类的内部,一般来说,不是一般只有在另一个类里创建这个类的对象算是正确吗? 2. 这里有个new关键字,我的理解是new一般会和类搭配使用,用来分配一个空间来存放这个对象,这样对,吗? 3.我是不是可以把java中的类理解一个数据类型,相当于自己定义的,然后WeekDay SUN 相当于int a这个语句,可以这样理解吗? 在下先谢谢各位了

java中静态变量的生存周期或范围

在一个类里main方法中实现多个实例,会共享静态变量并可修改静态变量,但是在另一个类里main方法中再实现前面那个类的实例,静态变量又回到初始值了…

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问